我在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中运行正常。
为什么会这样?