我看到微软正在与Nvidia密切合作,以提高AMP性能。
但我的问题是:AMP是否是微软替代CUDA的解决方案?或者在有NVIDIA CUDA显卡可用时,AMP是否使用CUDA驱动程序?AMP是否是OpenCL的替代方案?
我仍然感到相当困惑...
我看到微软正在与Nvidia密切合作,以提高AMP性能。
但我的问题是:AMP是否是微软替代CUDA的解决方案?或者在有NVIDIA CUDA显卡可用时,AMP是否使用CUDA驱动程序?AMP是否是OpenCL的替代方案?
我仍然感到相当困惑...
C++ AMP是一个库(同时也引入了一个重要的语言扩展)。由于C++ AMP是一个开放的规范,它可以在任何其他低级语言上实现。Microsoft的实现基于DirectCompute(因此也基于HLSL),但当您使用C++ AMP时,这完全对您隐藏(这就是为什么C++ AMP可以成为一个开放的规范;它没有在API表面中暴露DirectX)。有关C++ AMP的更多信息,请查看我们博客右侧的资源(我们将不断添加): http://blogs.msdn.com/b/nativeconcurrency/
您提到了Microsoft与NVIDIA合作以提高C++ AMP性能的说法 - 这是不正确的。Microsoft与NVIDA、AMD和其他合作伙伴一起创建了C++ AMP开放规范。Microsoft还与硬件供应商合作,确保硬件供应商具有稳定的视频卡驱动程序,这是任何GPU计算技术正常工作所必需的。
您还表达了困惑并提出了一些术语。OpenCL是一种GPU计算方法(由Khronos提出),同样的,DirectCompute是由Microsoft提出的,CUDA则是由NVIDIA提出的。这些都是独立的技术,每种技术都有自己通往GPU的路径(始终通过某种驱动程序),每种技术都有其优点、强项和缺点。它们不是相互替代的,也没有一种技术普遍更好。现在您还可以将C++ AMP加入到这个选择列表中,作为另一种选择,同样的陈述也适用于它。选择权在您手中,您可以自行决定使用哪种。
C++ AMP是一组语言扩展和API,支持并行编程技术,包括CUDA。
由于微软也有一个直接与CUDA竞争的产品(Direct Compute),并且通常更喜欢自己的专有图形标准,所以我们必须看看它能否真正发挥作用。
对于微软的看法,请参见这些讲座。