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

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

我了解到微软正在与 Nvidia 密切合作以提高 AMP 性能。

但我的问题是:AMP 是 Microsoft 的 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++ - 对 CUDA/openCL 和 C++ AMP 的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303390/

相关文章:

C++ allocator<X>::deallocate(NULL,1) 允许吗?

c++ - 如何在 C++11 的构造函数初始化列表中使用一个公共(public)参数初始化元组的元素?

c++ - QGLWidget 获取 Windows 的 gl 上下文

c++ - 具有多个 .h 和 .cu 文件的静态库无法解析函数

c - 与 OpenCL+NVidia 的独家计算模式

opencl - PowerVR SGX530 GPU 设备是否可以使用 OpenCL?

c++ - 映射/设置迭代器在 C++ 中不可递增错误

c# - 在 CSCore 中实现均衡器,例如 Foobar 的 SuperEQ

CUDA内存问题

search - ArrayFire帧搜索算法崩溃