Для AMD: clGetDeviceInfo (..., CL_DEVICE_WAVEFRONT_WIDTH_AMD , ...) (если cl_amd_device_attribute_query расширение поддерживается)
Для Nvidia: clGetDeviceInfo (..., CL_DEVICE_WARP_SIZE_NV , ...) (если cl_nv_device_attribute_query расширение поддерживается)
Но нет единого пути . Способ, предложенный Джонатаном ДеКарло, не работает, я использовал его для графических процессоров, если эти два расширения не поддерживаются - например, Intel iGPU, но недавно я столкнулся с неверными результатами на Intel HD 4600 :
Intel HD 4600 говорит CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE = 32 , хотя на самом деле графические процессоры Intel, кажется, имеют волновой фронт, равный 16, поэтому я столкнулся с неверными результатами, все работает нормально, если для волнового фронта использовались барьеры = 16
P.S. У меня недостаточно репутации, чтобы комментировать. Джонатан ДеКарло (Jonathan DeCarlo) ответит по этому поводу. Буду рад, если кто-нибудь добавит комментарий.