2017-02-13 4 views
0

Ich habe ein Array, das ich an einen OpenCL-Kernel weitergeben möchte. Teil meines Codes istWie übergebe ich ein Array an einen OpenCL-Kernel?

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)); 

Der obige Code kompiliert, aber stürzt während der Laufzeit ab. Bitte lassen Sie mich wissen, was ich hier falsch mache.

Ich verwende OpenCL 2.0.

+0

Kernel-Argument hat Index = 1. Wenn Sie nur einen Kernel-Parameter haben, sollte es nicht 0 sein? Kannst du es auch mit einem Array von mindestens 64 Elementen versuchen? –

Antwort

Verwandte Themen