我正在寻找OpenCL和DirectCompute之间的比较,但我没有找到任何东西。 OpenCL的跨平台优势和支持更广泛的GPU对我来说无关紧要。我只能在Windows上针对DX11 GPU进行编码。假设,每个API的优缺点是什么?
我知道this question was raised before,但我正在寻找更多细节。
我对CUDA不感兴趣,因为我不想仅限于Nvidia硬件。
答案 0 :(得分:13)
编码器的最大区别可能是DirectCompute是用类似于HLSL的语言编程的,而OpenCL是通过类C语言编程的。
另一个需要考虑的差异是,通常情况下,对于商品级GPU,DirectX支持比Windows上的OpenGL支持更好(更快,更少错误)。这可能转化为对DirectCompute更稳定的支持,但实际上,这只是猜测。
答案 1 :(得分:11)
OpenCL的主要优点是它不仅限于显卡。您可以使用同一程序中的多核CPU,图形卡以及任何其他硬件加速设备(DSP等)。
我不确定DirectCompute是否允许这种自由。
答案 2 :(得分:4)
OpenCL跨平台不仅仅是一个细节,因为主机代码(调用OpenCL API和提交内核的代码)本身可以是跨平台的(参见link text,link text ...)。
在任何地方写一次,在任何GPGPU上运行。
否则OpenCL工具实际上会变得更好,使用适用于Visual Studio的ATI Stream插件,NVidia& ATI SDK包含大量样本等......
答案 3 :(得分:3)
现在的另一个选择是C ++ AMP,它可以为您提供现代C ++语法,而无需单独的编译器,同时仍保留硬件可移植性。请点击此处的链接获取更多信息,并随时发布问题:http://blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp-in-a-nutshell.aspx
答案 4 :(得分:1)
我使用OpenCL是因为我可以轻松地将我的应用程序移植到Linux,但使用DirectCompute这是不可能的。 我认为OpenCL实现的性能会随着时间的推移而增加(与NVIDIA卡的CUDA相同),并且(驱动程序)错误(希望;))会随着时间的推移而消失。