0

我在 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 中运行正常。

为什么会这样?

4

0 回答 0