我应该在哪里定义一个C函数,当使用PYOPENCL时,它将在C内核代码中被调用
由于PyOpenCl中的内核代码只需要用C编写,所以我编写了一些需要在PyOpenCl中的内核代码中调用的函数。这些函数应该存储在哪里?如何将全局变量传递给该函数。 在PyOpenCl中,我的内核代码如下所示:我应该在哪里定义一个C函数,当使用PYOPENCL时,它将在C内核代码中被调用,opencl,gpu,pyopencl,Opencl,Gpu,Pyopencl,由于PyOpenCl中的内核代码只需要用C编写,所以我编写了一些需要在PyOpenCl中的内核代码中调用的函数。这些函数应该存储在哪里?如何将全局变量传递给该函数。 在PyOpenCl中,我的内核代码如下所示: program = cl.Program(context, """ __kernel void Kernel_OVERLAP_BETWEEN_N_IP_GPU(__constant int *FBNs_array,__local int *Binary_IP, __loc
program = cl.Program(context, """
__kernel void Kernel_OVERLAP_BETWEEN_N_IP_GPU(__constant int *FBNs_array,__local int *Binary_IP, __local int *cc,__global const int *olp)
{
function1(int *x, int *y,__global const int *olp);
}
""").build()
我应该在哪里写入和存储function1函数。我应该在内核本身或其他文件中定义它,并提供路径。如果我需要在其他地方定义它并提供路径,请提供一些详细信息,我对C完全陌生。
谢谢就像在C中一样,在内核之前
program = cl.Program(context, """
void function1(int *x, int *y)
{
//function1 code
}
__kernel void kernel_name()
{
function1(int *x, int *y);
}""").build()
就在内核之前,在字符串中,就像它的C99语言一样。您也可以添加#define宏,但可能需要一些换行符,只要先声明即可。它也可以在之后。然而,为了简化单文件内核,除非您需要递归,否则第一个总是更好的选择。
program = cl.Program(context, """
void function1(int x, int *y,__global const int *cc)
{
x=10;
}
__kernel void kernel_name(__global const int *cc)
{
int x=1;
int y[1]={10};
function1(x,y,cc); //now x=10
}""").build()