2017-02-13 74 views
0

我有一個數組,我想傳遞給OpenCL內核。我的部分代碼是如何將數組傳遞給OpenCL內核?

cl_mem arr_cl; 
unsigned int arr[4] = { 0 }; 

arr_cl = clCreateBuffer(ocl.context, CL_MEM_ALLOC_HOST_PTR, 4*sizeof(unsigned int), NULL, &status); 

arr = (unsigned int*)clEnqueueMapBuffer(ocl.command_queue, arr_cl, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, 0, 4*sizeof(unsigned int), 0, NULL, NULL, NULL); 

status |= clSetKernelArg(ocl.kernel, 0, sizeof(cl_mem), &(arr_cl)); 

上述代碼編譯但在運行時崩潰。請讓我知道我在這裏做錯了什麼。

我正在使用OpenCL 2.0。

+0

內核參數的索引= 1。如果你只有一個內核參數,它不應該是0嗎?你也可以嘗試使用至少64個元素的數組嗎? –

回答