我正在尝试将一些现有的CUDA内核转换为OpenCL,问题是我必须使用OpenCL 1.2,因此无法使用non-uniform work-group大小,这意味着我应该让{{1} }决定本地工作组的大小(以避免全局工作量导致不可分割的工作组大小)。
正如提到的in this presentation,我使用enqueueNDRangeKernel
作为内核函数的参数,作为共享内存指针,其大小由主机代码中使用__local int *
定义。 / p>
在某些CUDA内核中,我分配了动态共享内存,其大小取决于线程块或本地工作组的大小。当我尝试将这些内核转换为OpenCL时,我不知道如何获取<Kernel>.setArg
设置的本地工作组大小,该参数传递enqueueNDRangeKernel
参数的NULL值以使其自动决定本地工作组大小
为了更加清楚,我只想将这段CUDA代码转换为OpenCL:
local
*顺便说一句,我需要一种适用于3-D工作组的通用解决方案。
*我有Nvidia显卡。