20

我正在寻找OpenCLDirectCompute之间的比较,但我没有找到任何东西。OpenCL 的跨平台优势和支持范围更广的 GPU 对我来说并不重要。我可以在 Windows 上仅针对 DX11 GPU 进行编码。假设,每个 API 的优缺点是什么?

我知道之前有人提出过这个问题,但我正在寻找更多细节。

我对 CUDA 不感兴趣,因为我不想仅限于 Nvidia 硬件。

4

5 回答 5

14

对于程序员来说,最大的不同可能是 DirectCompute 是由类似于 HLSL 的语言编写的,而 OpenCL 是通过类似 C 的语言编写的。

另一个需要考虑的区别是,一般来说,对于商品级 GPU,DirectX 支持比 Windows 上的 OpenGL 支持更好(更快且错误更少)。这可能会转化为对 DirectCompute 的更稳定支持,但实际上,这只是猜测。

于 2010-07-04T02:46:21.507 回答
13

那么 OpenCL 的主要优势在于它不仅限于显卡。您可以从同一个程序中使用您的多核 CPU、显卡和可能的任何数量的其他硬件加速设备(DSP 等)。

我不确定 DirectCompute 是否允许这种自由。

于 2010-07-04T02:32:36.517 回答
5

OpenCL 跨平台性不仅仅是一个细节,因为主机代码(调用 OpenCL API 并提交内核的代码)本身可以是跨平台的(参见链接文本链接文本...)。

一次编写,在任何地方的任何 GPGPU 上运行。

否则,OpenCL 工具真的会变得更好,带有适用于 Visual Studio 的 ATI Stream 插件、包含大量示例的 NVidia 和 ATI SDK 等……

于 2010-07-22T08:57:21.713 回答
3

现在的另一个选择是 C++ AMP,它为您提供现代 C++ 语法,而无需单独的编译器,同时仍保留硬件可移植性。请点击此处的链接以获取更多信息,并随时发布问题:http: //blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp-in-a-nutshell .aspx

于 2012-03-16T22:32:09.013 回答
1

我使用 OpenCL,因为我可以轻松地将我的应用程序移植到 Linux,但使用 DirectCompute 这是不可能的。我还认为 OpenCL 实现的性能会随着时间的推移而提高(它与 NVidia 卡的 CUDA 处于同一级别),并且(驱动程序)错误将(希望 ;))随着时间的推移而消除。

于 2010-07-10T22:40:49.233 回答