如何在内核函数中分配给Ctree中的本地内存

2024-09-28 15:36:51 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python在Ctree中编写代码时,如何使用__localOpenCL标识符?我们正在努力做到以下几点:

__local int *some_array[WORK_GROUP_SIZE];

除了携程。你知道吗


Tags: 代码sizelocalgroupsome标识符arrayint
1条回答
网友
1楼 · 发布于 2024-09-28 15:36:51

看看stencil specializer在文件stencil\u code/backend中/营业执照处理好了。传递给内核函数的第三个参数是对工作组本地内存空间的引用。你知道吗

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例程的代码在同一个函数中,本地内存大小的计算应该比这里显示的要简单。这有点难理解,但它为set\u arg调用构建本地\u内存引用,如下所示

    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()
        )
    )

希望这有帮助

相关问题 更多 >