1
我可以使用struct作爲OpenCL內核參數嗎?OpenCL:使用struct作爲內核參數
我想用結構類型的OpenCL內核參數在NVIDIA的OpenCL 1.2(NVIDIA驅動程序352.39)
我試過了,但它使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);
}
我試圖傳入一個結構作爲非指針值,我無法構建內核。 你確定靜態對象被允許作爲內核參數嗎? –
不是緩衝區的內核參數(即:非指針,整數,結構體等)可以作爲參數直接傳遞。只要設備中有足夠的可用內存來保持該結構。 – DarkZeros