【发布时间】:2015-10-17 01:10:20
【问题描述】:
我可以使用 struct 作为 OpenCL 内核参数吗?
我想在 NVIDIA OpenCL 1.2(NVIDIA 驱动程序 352.39)中使用结构类型作为 OpenCL 内核参数
我试过了,但它会导致 CL_OUT_OF_RESOURCE 错误。
我的代码有什么问题??
[用于结构定义]
/* struct type definition */
typedef struct _st_foo
{
int aaa;
int bbb;
.....
int zzz;
}st_foo; // st_foo doesn't have any pointer members
[主机代码]
/* OpenCL initalize... */
st_foo stVar;
cl_mem cm_buffer;
cm_buffer = clCreateBuffer(cxContext, CL_MEM_READ_ONLY, sizeof(st_foo), NULL, NULL);
clSetKernelArg(ckKernel, 0, sizeof(cl_mem), (void*)&cm_buffer);
clEnqueueWriteBuffer(cqueue, cm_buffer, CL_TRUE, 0, sizeof(st_foo), &stVar, 0, NULL, NULL);
[内核代码]
__kernel void testfunction(__global const st_foo *stVar)
{
printf("stVar->aaa=%d\n", stVar->aaa);
}
【问题讨论】:
标签: opencl