【问题标题】:What is CUDA like? What is it for? What are the benefits? And how to start?CUDA 是什么样的?它是干什么用的?有什么好处?以及如何开始?
【发布时间】:2011-07-09 20:45:12
【问题描述】:

我有兴趣在一些新技术下进行开发,我正在考虑尝试 CUDA。现在......他们的文档技术性太强,没有提供我正在寻找的答案。另外,我想听听那些对 CUDA 有一定经验的人的回答。

基本上我的问题是标题中的问题:

CUDA 到底是什么? (它是一个框架?还是一个 API?什么?)

它是干什么用的? (除了对 GPU 进行编程之外,还有其他东西吗?)

它是什么样的?

针对 CUDA 编程而不是针对 CPU 编程有什么好处?

什么是开始使用 CUDA 编程的好地方?

【问题讨论】:

    标签: cuda nvidia gpu


    【解决方案1】:

    CUDA 汇集了几样东西:

    • 设计用于运行通用(非图形)代码的大规模并行硬件,并配备相应的驱动程序。
    • 一种基于 C 的用于对所述硬件进行编程的编程语言,以及一种其他编程语言可以用作目标的汇编语言。
    • 一个软件开发工具包,包括库、各种调试、分析和编译工具,以及允许 CPU 端编程语言调用 GPU 端代码的绑定。

    CUDA 的重点是编写可在兼容的大规模并行 SIMD 架构上运行的代码:这包括多种 GPU 类型以及非 GPU 硬件,例如 nVidia Tesla。大规模并行硬件每秒可以运行比 CPU 多得多的操作,而财务成本相当相似,在允许的情况下可实现 50 倍或更多的性能提升。

    与早期方法相比,CUDA 的一个好处是可以使用通用语言,而不必使用像素和顶点着色器来模拟通用计算机。该语言基于 C 语言,带有一些额外的关键字和概念,这使得非 GPU 程序员很容易上手。

    这也是 nVidia 愿意在其硬件上支持通用并行化的一个迹象:现在听起来不像“用 GPU 乱搞”,而更像是“使用供应商支持的技术”,这使得它采用了在非技术利益相关者面前更容易。

    要开始使用 CUDA,请下载 SDK,阅读手册(说真的,如果您已经了解 C,那 并不复杂)并购买与 CUDA 兼容的硬件(您可以 > 首先使用模拟器,但性能是最终的重点,如果您可以实际尝试您的代码会更好)

    【讨论】:

    • 不要忘记 CUDA 不能使每个程序/算法受益:CPU 擅长以相对较少的数量(即 10.000)执行简单/相同的操作时,它就会被释放。这就是为什么它在例如视频解码/编码:这些都是对大量像素(在 720p 中几乎是一百万)的相同简单操作
    【解决方案2】:

    (免责声明:我只在 2008 年的一个学期项目中使用了 CUDA,所以从那时起情况可能发生了变化。) CUDA 是一个开发工具链,用于创建可以在 nVidia GPU 上运行的程序,以及用于控制此类程序的 API来自 CPU 的程序。

    GPU 编程与 CPU 编程的优势在于,对于一​​些高度可并行化的问题,您可以获得大量加速(大约快两个数量级)。然而,许多问题很难或不可能以适合并行化的方式表述。

    从某种意义上说,CUDA 相当简单,因为您可以使用常规 C 来创建程序。但是,为了获得良好的性能,必须考虑很多事情,包括 Tesla GPU 架构的许多低级细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 2017-02-14
      • 2022-01-31
      • 2011-06-18
      • 1970-01-01
      • 2014-11-26
      相关资源
      最近更新 更多