DirectCompute和OpenCL在GPU编程中的区别是什么?

4
我有一些(财务)任务,应该很适合GPU计算,但我不确定是选择OpenCL还是DirectCompute。我曾经进行过GPU计算,但那是3年前的事了。当时我使用OpenGL进行计算,因为当时没有其他选择。
我看过一些OpenCL的演示,它看起来非常不错。我还没有看到关于DirectCompute的任何内容,但我期望它也很好。
目前我对跨平台兼容性不感兴趣,而且我希望这两种模型足够相似,不会在从一种模型转换到另一种模型时造成大麻烦。
所以,你用过这两种中的任何一种吗?特别是DirectCompute?它与OpenCL(和CUDA)相比如何?

这取决于您拥有什么硬件、要针对哪些操作系统以及是否想让您的代码跨平台。 - Paul R
DirectCompute仅在Windows系统中可用,需要DirectX 10或更高版本的显卡支持。 - Mahdi Ghiasi
3个回答

3
考虑到您正在寻找非图形计算,我建议您选择OpenCL而不是DirectCompute,因为您可能会发现更多社区支持方面的帮助。
鉴于您已经确定从一个平台转换到另一个平台相对简单,即一旦您已经完成了并行化应用程序的工作,您也可以考虑CUDA,理由与前者相同。
您之前使用过OpenGL;与那相比,任何一种选择都应该更易于使用!

2
我正在学习OpenCL。当我做出与您类似的决定时,我认为OpenCL最大的优点是适用于异构环境(与CUDA和其他解决方案相反)。我不仅指硬件,还包括操作系统。相比于CUDA等其他解决方案,OpenCL是一个更加自由的标准。
编写代码是一项昂贵的任务。我希望将来能够在许多并行CPU、任何供应商的设备或不同的操作系统上使用我的GPGPU代码。我可以在我的计算机上计算小任务,而在大型具有多个CPU的大型机器上计算更多任务,并在Tesla上进行更多数据并行任务。OpenCL可以在各种硬件和操作系统上重复使用这样的代码。

0

另一个选择是C++ AMP,它也针对GPU并具有回退CPU多核和SIMD指令目标。它将允许您专注于计算,并且如果您确实需要与图形集成,则还有一个互操作层。通过开放的规范,我们应该在某个时候看到其他操作系统的实现。请从这里跟随链接获取更多信息,并随时发布问题:http://blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp-in-a-nutshell.aspx


你有什么特别的理由相信C++ AMP会出现在其他平台上吗?我认为在gcc和可能是英特尔实现AMP之前,它不能真正被称为跨平台。考虑到这种东西的实现速度(OpenMP也没有立即得到支持),如果有的话,“某个时间点”可能会在5年后,如果有的话。 - eudoxos
@eudoxos,关键是通过开放规范是可能的。鉴于AMD在去年的Fusion会议上宣布了他们打算在编译器中支持C++ AMP,并且微软真的希望看到其他平台上的实现,我可以说出我所说的话:“我们应该在某个时候看到其他操作系统的实现”。你是对的,没有人说过“某个时候”可能是什么时候,所以每个人都可以得出自己的结论并分享自己的信念-就像我所做的那样。 - Daniel Moth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接