学习英伟达 CUDA
我是开发图像和视频算法的 C++ 程序员,我应该学习 Nvidia CUDA 吗?或者这些技术中的一项将会消失?
I am C++ programmer that develop image and video algorithims, should i learn Nvidia CUDA? or it is one of these technlogies that will disappear?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
CUDA 目前是 NVIDIA 的单一供应商技术,因此不支持多供应商OpenCL 就是这样做的。
然而,它比OpenCL更成熟,具有很棒的文档,使用它学到的技能将很容易转移到其他并行数据处理工具包。
作为示例,请阅读 Steele 和 Hillis 的数据并行算法,然后查看 Nvidia 教程 - 两者之间有明确的联系,但 Steele/Hillis 的论文是在 20 年 早于 CUDA 推出。
最后,FCUDA 项目 正在努力允许 CUDA 项目针对非 nvidia 硬件( FPGA)。
CUDA is currently a single vendor technology from NVIDIA and therefore doesn't have the multi vendor support that OpenCL does.
However, it's more mature than OpenCL, has great documentation and the skills learnt using it will be easily transferred to other parrallel data processing toolkit.
As an example of this, read the Data Parallel Algorithms by Steele and Hillis and then look at the Nvidia tutorials - theres a clear link between the two yet the Steele/Hillis paper was written over 20 years before CUDA was introduced.
Finally, the FCUDA Projects is working to allow CUDA projects to target non nvidia hardware (FPGAs).
CUDA 应该会保留一段时间,但如果您刚刚开始,我建议您查看 OpenCL 或 DirectCompute。它们都在 ATI 和 NVidia 硬件上运行,此外还可以在 CPU 的矢量单元 (SSE) 上运行。
CUDA should stick around for a while, but if you're just starting out, I'd recommend looking at OpenCL or DirectCompute. Both of these run on ATI as well as NVidia hardware, in addition to also working on the vector units (SSE) of CPUs.
我认为你应该坚持使用 OpenCL,这是一个开放标准,受到 ATI、nVidia 的支持等等。 CUDA 可能不会在未来几年消失,但无论如何它与非 nVidia GPU 不兼容。
I think you should rather stick with OpenCL, which is an open standard and supported by ATI, nVidia and more. CUDA might not disappear in the next years, but anyway it is not compatible with non-nVidia GPUs.
OpenCL 可能需要一段时间才能普及,但我发现学习 CUDA 非常有用,而且我认为 CUDA 不会很快退出人们的视线。此外,CUDA非常简单,学习它所需的时间比CUDA的保质期短得多。
OpenCL might take sometime to become pervasive but i found learning CUDA very informative and i don't think CUDA's going to be out of the limelight anytime soon. Besides, CUDA is easy enough that the time it takes to learn it is much shorter than CUDA's shelf life.
这是高性能计算、并行计算的时代。 CUDA和OpenCL是GPU计算的新兴技术,实际上是高性能计算!如果您是一位充满热情的程序员并且愿意在并行算法中达到基准,那么您确实应该选择这些技术。程序的数据并行部分将在 GPU 众核架构上不到一秒的时间内执行,而这通常在 CPU 上需要更长的时间。
This is the era of high performance computing, parallel computing. CUDA and OpenCL are the emerging technologies of GPU Computing which is actually a high performance computing! If you are a passionate programmer and willing to achieve benchmark in parallel algorithms, you should really go for these technologies. Data parallel part of your program will get executed within fraction of a second on GPU many-core architecture which usually takes much longer time on your CPU..