cuda - CUDA 是什么样的?它是干什么用的?有什么好处?以及如何开始?

标签 cuda nvidia gpu

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

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

What exactly IS CUDA? (is it a framework? Or an API? What?)

What is it for? (is there something more than just programming to the GPU?)

What is it like?

What are the benefits of programming against CUDA instead of programming to the CPU?

What is a good place to start programming with CUDA?

最佳答案

CUDA 汇集了几样东西:

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

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

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

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

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

    关于cuda - CUDA 是什么样的?它是干什么用的?有什么好处?以及如何开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5211746/

    相关文章:

    CUDA 编程 - L1 和 L2 缓存

    concurrency - 并发CUDA内核执行的优先级

    cuda - 如何将推力::device_vector <int>转换到原始指针

    opencl - Nvidia GPU 是否支持类似管道的结构?

    docker - Docker 上的 "nvidia-smi"不显示 "Processes"是否正确?

    c - 将不同大小的纹理附加到 FBO 的问题

    opengl - 什么是GPU驱动的渲染?

    c++ - 推力:如何有意避免将参数传递给算法?

    c++ - 生成 AES (AES-256) 查找表

    c - 您是否应该尝试始终以最大线程数运行 CUDA C 硬件?