我有一个OpenCL内核,它接受3个uchar *类型的参数。现在我有另一个内核(一个N体模拟内核),我必须更改它以便它接受3个类型为uchar *的参数。问题是有double4类型的变量,而且我是OpenCL的新手,我无法理解它。
这是原始内核
__kernel void cal_coor(__global uchar* world, __global uchar* data, __global uchar* result)
这里是我要修改的N体仿真代码,它只接受3个参数,比如内核abvove
kernel void nbody (
double eps,
double scaleFactor,
double gravityFactor,
double xmax,
double ymax,
double zmax,
double dt,
global read_only double4* bodyMassPos,
global double4* bodySpeed,
global double4* bodyAccel,
global write_only double4* bodyMassPosNew,
local double4* pblock)
编辑: 我知道我可以创建一个双数据类型的数组并容纳其中的大多数参数,但我对double4数据类型感到困惑。
我必须修改n body内核,因为我有一个框架,它使用opencl内核。我的任务是提出内核,我们可以在当前框架中使用它来测试框架。现在当前内核只有3个参数,我无法更改为内核设置参数的代码,但我可以更改内核。