Differences between cl_khr_fp64 and cl_amd_fp64?

微笑、不失礼 提交于 2019-12-22 00:02:47

问题


I just found that on my (pretty expensive) Radeon 6970, only cl_amd_fp64 extension is supported. I am getting odd results in some parts of the code (accessing the value of 0.005 actually uses 1.99916e+37?) when running with cl_amd_fp64. Using cl_khr_fp64 with Intel SDK on the CPU works just fine. (The input buffers are exactly the same)

The extension page gives very little information.

What are exactly the differences between both?


回答1:


cl_khr_fp64 is the Khronos official double precision floating point precision extension. It requires that arithmetic be IEEE 754-2008 compliant, and the full range of OpenCL vector types and standard library functions be supported.

Initially, AMD only implemented a subset of what the cl_khr_fp64 extension requires, so they issued there own vendor extension cl_amd_fp64 for supporting double precision on their GPU hardware. When it first appeared, the range of support was very limited (perhaps only +,-,* with non standard rounding behaviour IIRC), but it has slowly expanded with successive SDK releases and newly hardware revisions. They list what is supported in their release notes, if my memory serves correctly.

I haven't followed their progress closely for a while, so I am not sure why what you are seeing might be occurring. If you have the latest driver and stream SDK version installed, I would suggest putting together a repro case and filing a bug report with them. It might be you are using something they don't support or guarantee the results of, but it could also be that you have found a bug.



来源:https://stackoverflow.com/questions/9114039/differences-between-cl-khr-fp64-and-cl-amd-fp64

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!