我想发布适用于所有OpenCL 1.1兼容GPU的OpenCL代码。而不是购买一堆GPU并对其进行测试,是否有任何工具可以帮助确保可靠性?
如果有人有经验将OpenCL应用程序运送到广泛的硬件基础,我有兴趣了解任何其他测试可靠性的方法。
答案 0 :(得分:0)
我对此有一点了解。不幸的是,答案是:取决于内核正在做什么。
我最大的抱怨是NVIDIA和OpenCL,因为它们似乎不支持:向量(float2,4等)和全局偏移。有点讨厌。英特尔和ATI都很稳固,但即使这样,矢量大小也会有所不同。如果你正在进行图像卷积,上面的内容并不重要。
如果您想在NVIDIA卡上运行AMD FFT,进行矩阵数学运算等,这很重要。要解决向量问题,您可以编写多个内核,每个内核具有不同的向量大小并调用正确的内核:MatrixMult_float4( ...)。
答案 1 :(得分:0)
您可以使用AMD KernelAnalyzer2检查您的代码是否编译,尽管这确实需要Catalyst驱动程序的某些组件,因此它仅适用于具有AMD GPU的PC。还有英特尔内核生成器,适用于支持英特尔OpenCL SDK的设备。 Nvidia的实现存在缺陷,特别是在我的经验中更新的GPU上,所以最好是测试每一代GPU。
答案 2 :(得分:0)
为了避免扩展和验证CL语言版本,可以尝试使用LLVM测试编译代码,或者只是获取用于验证的语法,例如作为BNF。
有一个很有前途的开源项目,可能包含有用的东西:http://bazaar.launchpad.net/~pocl/pocl/master/files/head:/lib/CL/
然而,我遇到的问题是: