OpenCL clSetKernelArg argsize

时间:2017-10-22 15:44:50

标签: opencl gpgpu

对于以下内核,我首先使用clCreateBuffer分配OpenCL内存缓冲区。然后,我使用clSetKernelArg并将argsize设置为sizeof(cl_mem)。

float ExampleKernel (__global unsigned char* arg1)
{
// some code
}

我的问题是,即使内核的参数是指向unsigned char的指针,为什么我需要将argsize设置为sizeof(cl_mem)?是因为OpenCL数据总是以cl_mem格式(每个元素的sizeof(cl_mem))分配?当调用内核时,对各个参数类型的动态类型转换由OpenCL?

处理

1 个答案:

答案 0 :(得分:2)

内核的参数是unsigned char类型的 not :它是包含无符号字符的全局内存的指针。这些缓冲区在主机端表示的方式恰好是cl_mem类型。在内核方面,它们由global指针代表。