使用 PYOPENCL 时,我应该在哪里定义将在 C 内核代码中调用的 C 函数
Where should I define a C function that will be called in C kernel code when using PYOPENCL
由于PyOpenCl中的内核代码只需要用C编写,我在PyOpenCL.Where中写了几个需要在内核代码中调用的函数,我应该存储这些函数吗?如何将全局变量传递给该函数。
在 PyOpenCl 中,我的内核代码如下所示:
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()
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()
由于PyOpenCl中的内核代码只需要用C编写,我在PyOpenCL.Where中写了几个需要在内核代码中调用的函数,我应该存储这些函数吗?如何将全局变量传递给该函数。 在 PyOpenCl 中,我的内核代码如下所示:
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()
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()