CPU中OpenCL的浮点数,不';不要显示小数部分

CPU中OpenCL的浮点数,不';不要显示小数部分,opencl,cpu,jocl,Opencl,Cpu,Jocl,我在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 flo

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


为什么会发生这种情况?

您的CPU端(主机端)代码是什么?我试图在CPU中使用OpenCL执行此代码,我认为CPU是主机端和设备端。我说的对吗?你用什么调用来设置内核参数,你如何读回值等等。我们需要所有这些代码来帮助你。