Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencl cl_khr_fp64和cl_amd_fp64之间的差异?_Opencl_Gpu_Amd Processor - Fatal编程技术网

Opencl cl_khr_fp64和cl_amd_fp64之间的差异?

Opencl cl_khr_fp64和cl_amd_fp64之间的差异?,opencl,gpu,amd-processor,Opencl,Gpu,Amd Processor,我刚刚发现,在我的(相当昂贵的)Radeon 6970上,只支持cl\u amd\u fp64扩展。使用cl\u amd\u fp64运行时,我在代码的某些部分得到了奇怪的结果(访问0.005的值实际上使用1.99916e+37?)。将cl\u khr\u fp64与CPU上的英特尔SDK配合使用,效果很好。(输入缓冲区完全相同) 报告提供的信息很少 两者之间的具体区别是什么?cl\u khr\u fp64是Khronos官方的双精度浮点精度扩展。它要求算法符合IEEE 754-2008标准,并

我刚刚发现,在我的(相当昂贵的)Radeon 6970上,只支持
cl\u amd\u fp64
扩展。使用
cl\u amd\u fp64运行时,我在代码的某些部分得到了奇怪的结果(访问
0.005
的值实际上使用
1.99916e+37
?)。将
cl\u khr\u fp64
与CPU上的英特尔SDK配合使用,效果很好。(输入缓冲区完全相同)

报告提供的信息很少


两者之间的具体区别是什么?

cl\u khr\u fp64
是Khronos官方的双精度浮点精度扩展。它要求算法符合IEEE 754-2008标准,并支持所有OpenCL向量类型和标准库函数

最初,AMD只实现了
cl_khr_fp64
扩展所需的一部分,因此他们发布了自己的供应商扩展
cl_AMD_fp64
,以支持其GPU硬件的双精度。当它首次出现时,支持范围非常有限(可能只有+、-、*和非标准舍入行为IIRC),但随着后续SDK发布和新的硬件修订,它已经慢慢扩展。如果我的记忆正常,他们会在发行说明中列出支持的内容


我已经有一段时间没有密切关注他们的进展了,所以我不知道为什么你们看到的可能会发生。如果您安装了最新的驱动程序和stream SDK版本,我建议您准备一个复制案例,并向他们提交一份bug报告。可能是您正在使用一些他们不支持或不保证结果的东西,但也可能是您发现了一个bug。

谢谢。我刚刚发现这个bug只在
struct
中的一些安排中触发,可能存在对齐问题(
union{struct{double;};}
之后
int
是bug,如果
union
double4
之后,就可以了)。我将试着处理这个问题,找出一个可能的原因,并找出一个最小的例子。