我正在寻找OpenCL和DirectCompute之间的比较,但我没有找到任何东西。OpenCL 的跨平台优势和支持范围更广的 GPU 对我来说并不重要。我可以在 Windows 上仅针对 DX11 GPU 进行编码。假设,每个 API 的优缺点是什么?
我知道之前有人提出过这个问题,但我正在寻找更多细节。
我对 CUDA 不感兴趣,因为我不想仅限于 Nvidia 硬件。
我正在寻找OpenCL和DirectCompute之间的比较,但我没有找到任何东西。OpenCL 的跨平台优势和支持范围更广的 GPU 对我来说并不重要。我可以在 Windows 上仅针对 DX11 GPU 进行编码。假设,每个 API 的优缺点是什么?
我知道之前有人提出过这个问题,但我正在寻找更多细节。
我对 CUDA 不感兴趣,因为我不想仅限于 Nvidia 硬件。
对于程序员来说,最大的不同可能是 DirectCompute 是由类似于 HLSL 的语言编写的,而 OpenCL 是通过类似 C 的语言编写的。
另一个需要考虑的区别是,一般来说,对于商品级 GPU,DirectX 支持比 Windows 上的 OpenGL 支持更好(更快且错误更少)。这可能会转化为对 DirectCompute 的更稳定支持,但实际上,这只是猜测。
那么 OpenCL 的主要优势在于它不仅限于显卡。您可以从同一个程序中使用您的多核 CPU、显卡和可能的任何数量的其他硬件加速设备(DSP 等)。
我不确定 DirectCompute 是否允许这种自由。
现在的另一个选择是 C++ AMP,它为您提供现代 C++ 语法,而无需单独的编译器,同时仍保留硬件可移植性。请点击此处的链接以获取更多信息,并随时发布问题:http: //blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp-in-a-nutshell .aspx
我使用 OpenCL,因为我可以轻松地将我的应用程序移植到 Linux,但使用 DirectCompute 这是不可能的。我还认为 OpenCL 实现的性能会随着时间的推移而提高(它与 NVidia 卡的 CUDA 处于同一级别),并且(驱动程序)错误将(希望 ;))随着时间的推移而消除。