我有两个功能:
void sum1(short * a, short * b, short * res, int size);
void sum2(float * a, float * b, float * res, int size);
我有一个通用内核
__kernel void sum(__global const T * a, __global const T * b, __global T * res, int size)
{
int x = get_global_id(0);
if (x < size) res[x] = a[x] + b[x];
}
从上面分别使用编译选项 -DT=short 和 -DT=float 的函数调用这个通用内核是否安全?在这种情况下,我需要使用对齐还是 OpenCL 自动将内核参数分别对齐为 2 和 4 字节?
一般来说,当我将 cl_mem 对象传递给内核时,OpenCL 不知道存储在这个 cl_mem 对象中的数据类型,我可以理解 OpenCL 如何将 cl_mem 对象“转换”为内核 arg 中的适当指针。我需要帮助