3
我是一名新的OpenCL程序员,对于如何设置工作组大小感到困惑。这是设置工作组大小的正确方法:什么是__attribute __((reqd_work_group_size(X,Y,Z)))用于?
- 在主机代码中设置local_work_size参数
clEnqueueNDRangeKernel
。 - 在内核代码中使用
__attribute__((reqd_work_group_size(X, Y, Z)))
。 - 同时使用。
- 别的
因此设置工作组大小是硬代码,对吧?无论如何要动态设置工作组大小? – ThSorn
您可以在内核编译时将它作为#define传递(并且可以在运行时或事先编译各种预定义的大小并在运行时交换),但据我所知,您不能拥有一个真实的动态调整大小的本地数组 –
您可以将本地缓冲区作为内核参数传递,并使用'clSetKernelArg'在入列NDRange时调整大小。这使得它在NDRange之间变得动态。 – Tim