0
如何在使用Python编写Ctree代码时使用__local
OpenCL标识符?我们正在尝试执行以下操作:我们如何在内核函数中为Ctree中的本地内存分配
__local int *some_array[WORK_GROUP_SIZE];
除了Ctree。
如何在使用Python编写Ctree代码时使用__local
OpenCL标识符?我们正在尝试执行以下操作:我们如何在内核函数中为Ctree中的本地内存分配
__local int *some_array[WORK_GROUP_SIZE];
除了Ctree。
看看文件stencil_code/backend/ocl.py中的stencil specializer如何处理。传递给内核函数的第三个参数是对工作组本地内存空间的引用。
def visit_FunctionDecl(self, node):
...
node.params[-1].set_global()
node.params[-1].type = ct.POINTER(ct.c_float)()
node.params.append(SymbolRef('block', ct.POINTER(ct.c_float)()))
node.params[-1].set_local()
node.defn = node.defn[0]
...
return node
是构建C例程调用该内核是在同一个函数的代码,你local_mem_size计算应该比这里似乎不那么复杂。这是一个有点难以遵循,但它建立了set_arg呼叫local_memory参考如下
local_mem_size = reduce(
operator.mul,
(size + 2 * self.kernel.ghost_depth[index]
for index, size in enumerate(local_size)),
ct.sizeof(cl.cl_float())
)
setargs.append(
clSetKernelArg(
'kernel', len(arg_cfg) + 1,
local_mem_size,
NULL()
)
)
希望这有助于