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()
)
)
希望這有助於