在单独的文件中存储内核 - PyOpenCL

问题描述 投票:3回答:2

我正在尝试将代码的内核部分与3“”“存储在一个不同的文件中。我尝试将其保存为文本文件和bin文件,并将其读入,但我没有找到成功它开始给我一个错误,说“”缺失,或者“缺失”。 “但是,如果我只是将内核代码复制粘贴到cl.Program中(它可以工作。

那么,有没有办法将长内核代码抽象到另一个文件中?这是python特有的,谢谢!

#Kernel function
prg = cl.Program(ctx, """
__kernel void sum(__global double *a, __global double *b, __global double *c)
{
  int gid = get_global_id(0);
  c[gid] = 1;

}
""").build()

所以几乎所有内容都在“”“”“里面,cl.Program()函数的第二个参数,我想进入一个不同的文件。

python opencl pycuda pyopencl
2个回答
2
投票

只需将内核代码放在纯文本文件中,然后使用open(...).read()获取内容:

foo.除了

__kernel void sum(__global double *a, __global double *b, __global double *c)
{
  int gid = get_global_id(0);
  c[gid] = 1;

}

Python代码

prg = cl.Program(ctx, open('foo.cl').read()).build()

0
投票

内核代码也可以作为foo.c存储在.c文件中。这样在xcode等编辑器中编辑更容易。它可以以相同的方式阅读

prg = cl.Program(ctx, open('foo.c').read()).build()
© www.soinside.com 2019 - 2024. All rights reserved.