我在 OpenCL 中有这段代码:
__kernel void vector_add(__global float *C) {
int i = get_global_id(0);
float t =3.5f;
C[i] = t;
}
当我在 GPU 中运行时,变量 C 的返回值为 3.5,所以没关系。但是当我在 CPU 中运行时,返回是 3.0。任何浮点值都会发生这种情况。
但是如果我运行这段代码:
__kernel void vector_add(__global const float A, __global float *C) {
int i = get_global_id(0);
C[i] = A;
}
我将 3.5 的值传递给变量 A,这在 CPU 和 GPU 中运行正常。
为什么会这样?