Если под «доступными рабочими элементами» вы подразумеваете, что вы используете максимум, заданный CL_DEVICE_MAX_WORK_ITEM_SIZES
, вы всегда можете поставить ядро в очередь несколько раз для разных диапазонов массива.
В зависимости от вашего фактическогорабочая нагрузка, может быть более разумным, чтобы каждый рабочий элемент выполнял больше работы.В простейшем случае вы можете использовать SIMD-типы, такие как float4
, float8
, float16
и т. Д., И работать с такими большими кусками за один раз.Тем не менее, как всегда, нет замены для того, чтобы попробовать разные подходы и измерить производительность каждого.