对CUDA / openCL和C ++ AMP的困惑

时间:2012-04-24 17:59:00

标签: c++ cuda opencl c++-amp

我读到微软正在与Nvidia密切合作以改善AMP的表现。

但我的问题是:AMP是CUDA - 被微软取代吗?或者当NVIDIA CUDA视频卡可用时,AMP是否使用CUDA驱动程序? AMP是openCL替代品吗?

我还是很困惑..

2 个答案:

答案 0 :(得分:20)

C ++ AMP是一个库(作为其中的一部分,还引入了关键语言扩展)。由于C ++ AMP是一个开放式规范,因此可以在任何其他低级语言上实现。 Microsoft的实现建立在DirectCompute上(因此也建立在HLSL上),但是当您使用C ++ AMP时,这是完全隐藏的(这就是为什么C ++ AMP可以是开放规范;它不会在API表面中暴露DirectX)。有关C ++ AMP的更多信息,请关注我们博客右侧的资源(我们将继续添加): http://blogs.msdn.com/b/nativeconcurrency/

你发表了一篇关于微软与NVIDIA合作改善C ++ AMP性能的声明 - 但事实并非如此。 Microsoft已与NVIDA和AMD以及其他合作伙伴合作创建了C ++ AMP开放规范。 Microsoft还与硬件供应商合作,确保硬件供应商拥有稳定的视频卡驱动程序,这是任何GPU计算技术都能正常工作所必需的。

你也表达了混淆并提出了一些条款。 OpenCL是一种GPU计算方法(由Khronos提供),DirectCompute(由Microsoft提供)也是如此,CUDA(由NVIDIA提供)也是如此。这些都是独立的技术,每个都有自己的GPU路径(总是通过某种驱动程序),每个都有自己的优点,优点和缺点。一个不能取代另一个,一个不是普遍优于另一个。您现在也可以在该混合中使用C ++ AMP,作为另一种选择,并且相同的语句也适用于此。您可以选择使用它。

答案 1 :(得分:3)

C ++ AMP是一组支持并行编程技术的语言扩展和API,包括CUDA。

由于微软还拥有CUDA(直接计算)的直接竞争对手,并且通常更喜欢它自己的专有图形标准,我们将不得不看看它实际发生了什么。

对于Microsoft的观点,请参阅these lectures