linux-通过ssh进行OpenCL中的浮点错误
作者:互联网
我在OpenCL中发现了浮点运算问题.这是我的内核:
__kernel void MyKernel(__global const float4* _pInput, __global float4* _pOutput)
{
int IndexOfRow = get_global_id(0);
int NumberOfRows = get_global_size(0);
int IndexOfColumn = get_global_id(1);
int NumberOfColumns = get_global_size(1);
...
_pOutput[0] = 1.9f * 100.0f; // constant float return value
}
执行内核并下载输出缓冲区后,使用ssh连接在不同客户端上的结果始终为100.如果我在本地执行该程序,结果为190.似乎小数点后的数字被截断了.
操作系统是带有AMD OpenCL 1.2的Open Suse Linux.
有什么问题?
解决方法:
我刚刚找到了解决方案.这取决于您的LANG的ENV设置.它必须是en_US.UTF-8.您可以使用env | grep LANG进行检查.
这可能是JIT编译器错误.在德国,浮点用“,”代替“.”.
标签:floating-point,ssh,opencl,kernel,linux 来源: https://codeday.me/bug/20191030/1965235.html