0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CUDA简介:CUDA编程模型和接口

星星科技指导员 来源:NVIDIA 作者:Ken He 2022-04-19 15:38 次阅读

本项目为CUDA官方手册的中文翻译版,有个人翻译并添加自己的理解。主要介绍CUDA编程模型和接口

1.1 我们为什么要使用GPU

GPU(Graphics Processing Unit)在相同的价格和功率范围内,比CPU提供更高的指令吞吐量和内存带宽。许多应用程序利用这些更高的能力,在GPU上比在CPU上运行得更快(参见GPU应用程序)。其他计算设备,如FPGA,也非常节能,但提供的编程灵活性要比GPU少得多。

GPU和CPU在功能上的差异是因为它们的设计目标不同。虽然 CPU 旨在以尽可能快的速度执行一系列称为线程的操作,并且可以并行执行数十个这样的线程。但GPU却能并行执行成千上万个(摊销较慢的单线程性能以实现更大的吞吐量)。

GPU 专门用于高度并行计算,因此设计时更多的晶体管用于数据处理,而不是数据缓存和流量控制。

下图显示了 CPU 与 GPU 的芯片资源分布示例。

pYYBAGJeZ2KATOe0AABsHBaw-Os076.png

将更多晶体管用于数据处理,例如浮点计算,有利于高度并行计算。GPU可以通过计算隐藏内存访问延迟,而不是依靠大数据缓存和复杂的流控制来避免长时间的内存访问延迟,这两者在晶体管方面都是昂贵的。

1.2 CUDA®:通用并行计算平台和编程模型

2006 年 11 月,NVIDIA® 推出了 CUDA®,这是一种通用并行计算平台和编程模型,它利用 NVIDIA GPU 中的并行计算引擎以比 CPU 更有效的方式解决许多复杂的计算问题。

CUDA 附带一个软件环境,允许开发人员使用 C++ 作为高级编程语言。 如下图所示,支持其他语言、应用程序编程接口或基于指令的方法,例如 FORTRAN、DirectCompute、OpenACC。

poYBAGJeZ1yAKiiLAAH1q_EpXUQ299.png

1.3 可扩展的编程模型

多核 CPU 和众核 GPU 的出现意味着主流处理器芯片现在是并行系统。挑战在于开发能够透明地扩展可并行的应用软件,来利用不断增加的处理器内核数量。就像 3D 图形应用程序透明地将其并行性扩展到具有广泛不同内核数量的多核 GPU 一样。

CUDA 并行编程模型旨在克服这一挑战,同时为熟悉 C 等标准编程语言的程序员保持较低的学习曲线。

其核心是三个关键抽象——线程组的层次结构、共享内存和屏障同步——它们只是作为最小的语言扩展集向程序员公开。

这些抽象提供了细粒度的数据并行和线程并行,嵌套在粗粒度的数据并行和任务并行中。它们指导程序员将问题划分为可以由线程块并行独立解决的粗略子问题,并将每个子问题划分为可以由块内所有线程并行协作解决的更精细的部分。

这种分解通过允许线程在解决每个子问题时进行协作来保留语言表达能力,同时实现自动可扩展性。实际上,每个线程块都可以在 GPU 内的任何可用multiprocessor上以乱序、并发或顺序调度,以便编译的 CUDA 程序可以在任意数量的多处理器上执行,如下图所示,并且只有运行时系统需要知道物理multiprocessor个数。

这种可扩展的编程模型允许 GPU 架构通过简单地扩展multiprocessor和内存分区的数量来跨越广泛的市场范围:高性能发烧友 GeForce GPU ,专业的 Quadro 和 Tesla 计算产品 (有关所有支持 CUDA 的 GPU 的列表,请参阅支持 CUDA 的 GPU)。

pYYBAGJeZ1WAWhqdAAAqnDtQ7Es238.png

注意:GPU 是围绕一系列流式多处理器 (SM: Streaming Multiprocessors) 构建的(有关详细信息,请参阅硬件实现)。 多线程程序被划分为彼此独立执行的线程块,因此具有更多multiprocessor的 GPU 将比具有更少多处理器的 GPU 在更短的时间内完成程序执行。

关于作者

Ken He 是 NVIDIA 企业级开发者社区经理 & 高级讲师,拥有多年的 GPU 和人工智能开发经验。自 2017 年加入 NVIDIA 开发者社区以来,完成过上百场培训,帮助上万个开发者了解人工智能和 GPU 编程开发。在计算机视觉,高性能计算领域完成过多个独立项目。并且,在机器人无人机领域,有过丰富的研发经验。对于图像识别,目标的检测与跟踪完成过多种解决方案。曾经参与 GPU 版气象模式GRAPES,是其主要研发者。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4682

    浏览量

    102116
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4508

    浏览量

    127525
  • 人工智能
    +关注

    关注

    1781

    文章

    44964

    浏览量

    232384
收藏 人收藏

    评论

    相关推荐

    软件生态上超越CUDA,究竟有多难?

    神坛的,还是围绕CUDA打造的一系列软件生态。   英伟达——CUDA的绝对统治   相信对GPU有过一定了解的都知道,英伟达的最大护城河就是CUDACUDA在后端架构上处于绝对的统
    的头像 发表于 06-20 00:09 2958次阅读

    英伟达CUDA-Q平台推动全球量子计算研究

    英伟达今日公布了其重要战略决策,即采用开源的CUDA-Q平台,旨在推动德国、日本和波兰等国家超运中心在量子计算领域的创新研究。CUDA-Q作为英伟达推出的一款开源平台,不仅与QPU无关,还实现了量子
    的头像 发表于 05-14 11:45 407次阅读

    Keil使用AC6编译提示CUDA版本过高怎么解决?

    \' ArmClang: warning: Unknown CUDA version 10.2. Assuming the latest supported version 10.1
    发表于 04-11 07:56

    英伟达AI霸主地位遭巨头联手挑战,CUDA垄断遭破局

    据最新外媒报道,科技界的巨头们——高通、谷歌和英特尔等,已经联手向英伟达发起了一场挑战,意图打破其在CUDA平台上的垄断局面。
    的头像 发表于 03-28 14:39 661次阅读

    深入浅出理解PagedAttention CUDA实现

    vLLM 中,LLM 推理的 prefill 阶段 attention 计算使用第三方库 xformers 的优化实现,decoding 阶段 attention 计算则使用项目编译 CUDA 代码实现。
    的头像 发表于 01-09 11:43 1063次阅读
    深入浅出理解PagedAttention <b class='flag-5'>CUDA</b>实现

    什么是CUDA?谁能打破CUDA的护城河?

    在最近的一场“AI Everywhere”发布会上,Intel的CEO Pat Gelsinger炮轰Nvidia的CUDA生态护城河并不深,而且已经成为行业的众矢之的。
    的头像 发表于 12-28 10:26 1w次阅读
    什么是<b class='flag-5'>CUDA</b>?谁能打破<b class='flag-5'>CUDA</b>的护城河?

    英特尔:让我们一起消灭CUDA

    基尔辛格认为:"由于推理的发生,一旦你训练了模型......就不会依赖CUDA。"关键在于,你能否很好地运行该模型?他表示,英特尔将利用今日首次在舞台上展示的 Gaudi3 迎接挑战,并利用至强和边缘PC实现这一目标
    的头像 发表于 12-15 17:12 784次阅读

    OpenCV4.8 CUDA编程代码教程

    OpenCV4支持通过GPU实现CUDA加速执行,实现对OpenCV图像处理程序的加速运行,当前支持加速的模块包括如下。
    的头像 发表于 12-05 09:56 577次阅读
    OpenCV4.8 <b class='flag-5'>CUDA</b><b class='flag-5'>编程</b>代码教程

    OpenCV4.8+CUDA+扩展模块支持编译指南

    OpenCV4.8+CUDA+扩展模块支持编译指南
    的头像 发表于 11-30 16:45 504次阅读
    OpenCV4.8+<b class='flag-5'>CUDA</b>+扩展模块支持编译指南

    基于Anaconda安装pytorch深度学习环境+pycharm安装---免额外安装CUDA和cudnn

    前言最近由于项目需要,之前我们在利用GPU进行深度学习的时候,都要去NVIDIA的官网下载CUDA的安装程序和cudnn的压缩包,然后再进行很繁琐的系统环境配置。不仅环境配置麻烦,而且还特别容易配置
    的头像 发表于 10-10 10:16 810次阅读
    基于Anaconda安装pytorch深度学习环境+pycharm安装---免额外安装<b class='flag-5'>CUDA</b>和cudnn

    CUDA核心是什么?CUDA核心的工作原理

    CUDA核心(Compute Unified Device Architecture Core)是NVIDIA图形处理器(GPU)上的计算单元,用于执行并行计算任务。每个CUDA核心可以执行单个线程的指令,包括算术运算、逻辑操作和内存访问等。
    发表于 09-27 09:38 6114次阅读
    <b class='flag-5'>CUDA</b>核心是什么?<b class='flag-5'>CUDA</b>核心的工作原理

    在线研讨会 | 专家中文解读:即将上市的 CUDA Toolkit 新特性、新功能

    基于 NVIDIA CUDA 架构师 Stephen Jones 近期的 CUDA 技术简报(Accelerated Computing / CUDA Technical Briefing),开发者
    的头像 发表于 09-22 18:45 408次阅读
    在线研讨会 | 专家中文解读:即将上市的 <b class='flag-5'>CUDA</b> Toolkit 新特性、新功能

    解析优化的调度逻辑和cuda实现

    /how-to-optim-algorithm-in-cuda 这个仓库整理了一些cuda优化相关链接以及大模型训练推理相关的知识链接(large-language-model-note子目录下),欢迎查看。 0x1. 调度逻辑
    的头像 发表于 08-24 11:15 859次阅读

    算力芯片的cuda有何难点和优点

    CUDA之所以会成为算力芯片硬件厂商必须要认真考虑的一个选择,最直接的原因,是其已经实现了与算法客户的强绑定。众多算法工程师已经习惯了CUDA提供的工具库及其编程语言,向外迁移总是会存在不习惯的问题。
    发表于 08-16 12:35 731次阅读
    算力芯片的<b class='flag-5'>cuda</b>有何难点和优点

    开发者活动 | 2023 NVIDIA &amp; 创乐博 CUDA 线上训练营火热报名中

    努力为众多高校提供培养下一代加速计算技术人才的 CUDA 教学相关资源。CUDA 编程技术人员现在已经成为业界在高性能计算及 AI 开发及应用领域内的主流技术支撑。 为了能够让与加速计算相关的高校学生能够及时了解最新的
    的头像 发表于 07-13 21:15 467次阅读
    开发者活动 | 2023 NVIDIA &amp; 创乐博 <b class='flag-5'>CUDA</b> 线上训练营火热报名中