OpenCL clSetKernelArg argsize
OpenCL clSetKernelArg argsize
对于以下内核,我首先使用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 处理?
内核的参数是 not 类型的无符号字符:它是指向包含无符号字符的全局内存的指针。这种缓冲区在主机端的表示方式恰好是通过 cl_mem
类型。在内核方面,它们由 global
指针表示。
对于以下内核,我首先使用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 处理?
内核的参数是 not 类型的无符号字符:它是指向包含无符号字符的全局内存的指针。这种缓冲区在主机端的表示方式恰好是通过 cl_mem
类型。在内核方面,它们由 global
指针表示。