#define szz 10 typedef struct
{
float x;
float y;
float z;
}vector3;
typedef struct
{
vector3 a[szz];
vector3 b[szz];
}ceshi;
__kernel void hello(__global ceshi *buf1,
__global ceshi *buf)
{
for(int i=0;i<szz;++i)
{
buf.a[i].x=buf1.a[i].x+buf1.b[i].x;
}
}
编译后提示我 buf.a[i].x 、buf1.a[i].x、buf1.b[i].x表达式必须是结构体或者联合类型
但是我已经定义了buf和buf1为ceshi结构体了呀,怎么会这样呢?
结构体都是一样的
主机的内存设置代码为
cl_mem clbuf = clCreateBuffer(context,
CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
sizeof(ceshi),
&buf1,
NULL );
cl_mem buf = clCreateBuffer( context,
CL_MEM_WRITE_ONLY,
sizeof(ceshi),
NULL, NULL );
主机内核变量设置代码为
clSetKernelArg(kernel, 0, sizeof(cl_mem), (void*) &clbuf);
clSetKernelArg(kernel, 1, sizeof(cl_mem), (void*) &buf);
请大哥帮忙看看哪里错了呢
I