CUDA 12.4文档1:使用GPU好处CUDA可扩展编程模型

news2024/11/30 2:35:47

本博客参考官方文档进行介绍,全网仅此一家进行中文翻译,走过路过不要错过。

官方网址:https://docs.nvidia.com/cuda/cuda-c-programming-guide/

本文档分成多个博客进行介绍,在本人专栏中含有所有内容:

https://blog.csdn.net/qq_33345365/category_12610860.html

CUDA 12.4为2024年3月2日发表,本专栏开始书写日期2024/4/8,当时最新版本4.1

本人会维护一个总版本,一个小章节的版本,总版本会持续更新,小版本会及时的调整错误和不合理的翻译,内容大部分使用chatGPT 4翻译,内容不引用文献,请自行去文档查看


开始编辑时间:2024/4/8;最后编辑时间:2024/4/8

CUDA 12.4文档1:使用GPU好处&CUDA&可扩展编程模型

第一章 使用GPU好处

图形处理单元(GPU)在相似的价格和功耗范围内,比CPU提供更高的指令吞吐量和内存带宽。许多应用都利用了这些更高的能力,使得在GPU上运行的速度比在CPU上更快。其他计算设备,如FPGA,也非常节能,但比GPU提供的编程灵活性要少得多。

"图形"这个限定词源于二十年前GPU最初创造时的情况,它当时被设计为一种专门的处理器,用来加速图形渲染。由于市场对实时、高清、3D图形的需求不断增长,它已经发展成为一种通用处理器,不仅仅用于图形渲染,还用于处理许多其他工作负载。

GPU和CPU之间的这种能力差异存在是因为它们设计的目标不同。CPU设计为尽可能快地执行一系列的操作,称为线程,并可以并行执行几十个这样的线程,而GPU则设计为能并行执行成千上万个线程(通过分摊较慢的单线程性能来实现更大的吞吐量)。

GPU专门为高度并行计算设计,因此设计上更多的晶体管用于数据处理,而不是数据缓存和流控。图示图1展示了CPU和GPU的芯片资源分布的示例。

在这里插入图片描述

图1:GPU将更多的晶体管用于数据处理

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

通常情况下,一个应用会有并行部分和顺序部分的混合,所以系统是用GPU和CPU混合设计的,以便最大化整体性能。具有高度并行性的应用程序可以利用GPU的大规模并行性质,以实现比在CPU上更高的性能。

第二章 CUDA: 通用并行计算和平台和编程模型

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

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

在这里插入图片描述

图2:GPU计算应用。CUDA旨在支持多种语言和应用编程接口。

第三章 可扩展编程模型

多核CPU和众核GPU的出现意味着主流处理器芯片现在已经是并行系统。挑战在于开发能够透明地扩展其并行性以利用越来越多的处理器核心的应用软件,就像3D图形应用程序透明地扩展其并行性到拥有大量不同核心数量的众核GPU一样。

CUDA并行编程模型旨在克服这个挑战,同时也让熟悉如C等标准编程语言的程序员能够轻松上手。
它的核心是三个关键的抽象概念 - 线程组的层次结构、共享内存和屏障同步 - 这些都以一套最小化的语言扩展简单地暴露给程序员。

这些抽象提供了精细的数据并行性和线程并行性,这些都嵌套在粗粒度的数据并行性和任务并行性中。他们指导程序员将问题分割成可以由线程块并行独立解决的粗粒度子问题,以及将每个子问题进一步细分成可以由块内所有线程协同并行解决的更细小的部分。

这种分解在允许线程在解决每个子问题时进行协作的同时保留了语言表达性,并且同时使其具有自动可扩展性。实际上,每一个线程块都可以按任何顺序在GPU中的任何可用的多处理器上进行调度,同时或顺序执行,这样一个编译后的CUDA程序就可以在任何数量的多处理器上执行,就如图3所示,只有运行时系统需要知道物理多处理器的数量。

这种可扩展的编程模型让GPU架构能够通过简单地扩展多处理器和内存分区的数量来覆盖广泛的市场范围:从高性能的游戏爱好者使用的GeForce GPU和专业的Quadro和Tesla计算产品,到各种价格实惠的主流GeForce GPU。

在这里插入图片描述

图3:自动扩展

注意:GPU是围绕一组流多处理器(SMs)构建的。一个多线程程序被划分为独立执行的线程块,以便拥有更多多处理器的GPU会自动用比拥有较少多处理器的GPU更短的时间来执行程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1586432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux网卡:连接虚拟与现实的桥梁

在介绍Linux网卡之前,让我们先迈入时光机🕰️,回到1980年代末期,互联网正在逐步从一个科研网络向公众网络转变,Linux——一个自由和开源的操作系统诞生了🐧。Linux的出现,对于计算机科学领域来说…

【微命令】git 如何修改某个分支的名字(git branch -m newbranch)

简要信息,快速记录 命令 # 切换到某个需要修改的分支 git checkout oldbranch# 修改分支名字 git branch -m newbranch假设作为git设计者,要用来修改branch的命令,那么就是 git branch作为前缀,然后进一步修改的命令是branch相关…

CorelDRAW21.2.4中文最新官方和谐版下载

CorelDRAW是一款由加拿大Corel公司出品的平面设计软件,也被称为CDR。它是一款功能强大的矢量图形制作和排版软件,主要面向绘图设计师和印刷输出人员。该软件提供了矢量插图、页面布局、图片编辑和设计工具,广泛应用于排版印刷、矢量图形编辑及…

24/04/11总结

IO流(First edition): IO流:用于读入写出文件中的数据 流的方向(输入指拿出来,输出指写进去) 输入流:读取 输出流:写出 操作文件类型 字节流:所有类型文件 字符流:纯文本 字节流: InputStream的子类:FileInputStream:操作本地文件的字节输入流 OutputSt…

【HTML】制作一个简单的实时字体时钟

目录 前言 HTML部分 CSS部分 JS部分 效果图 总结 前言 无需多言,本文将详细介绍一段HTML代码,具体内容如下: 开始 首先新建文件夹,创建一个文本文档,两个文件夹,其中HTML的文件名改为[index.html]&am…

二分查找-图文详解,看不懂你来打我。。。

一、查找算法 在计算机科学和算法领域,搜索是一项基本的任务。在海量数据中寻找特定的元素是一项常见的任务,而二分查找(Binary Search)是一种非常高效的搜索算法,特别适用于有序数组。 二、二分查找 二分查找是一种…

【阿里淘天笔试题汇总】2024-04-10-阿里淘天春招笔试题-三语言题解(CPP/Python/Java)

🍭 大家好这里是KK爱Coding ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新淘天近期的春秋招笔试题汇总~ 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢&#x1f…

【前端Vue】Vue3+Pinia小兔鲜电商项目第5篇:整体认识和路由配置,本资源由 收集整理【附代码文档】

Vue3ElementPlusPinia开发小兔鲜电商项目完整教程(附代码资料)主要内容讲述:认识Vue3,使用create-vue搭建Vue3项目1. Vue3组合式API体验,2. Vue3更多的优势,1. 认识create-vue,2. 使用create-vue创建项目,1. setup选项的写法和执行…

基于Springboot的箱包存储系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的箱包存储系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

linux的io的知识大全

C语言的io操作 写文件 #include<stdio.h> #include<string.h>#define FILE_NAME "log.txt" int main() {FILE * fp fopen(FILE_NAME, "w");if(fpNULL){printf("fopen error!\n");}const char* msg "hello zk\n";int c…

【复现】浙大恩特客户资源管理系统 SQL注入漏洞_71

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源&#xff0c;提升…

Golang 基于共享变量的并发锁

一、互斥锁 先看一个并发情况&#xff0c;同时操作一个全局变量&#xff0c;如果没有锁会怎么样 假设有1000个goroutines并发进行银行余额的扣除&#xff0c;每次都扣除10元&#xff0c;起始的总余额是10000&#xff0c;理论上并发执行完应该是0对不对&#xff0c;但实际却不…

GeoServer:忘记密码重置

操作步骤 1. 找到data_dir/security/usergroup/default目录下的users.xml文件&#xff0c; 2.修改password为plain:geoserver&#xff0c; 这里无论原来的密码是什么&#xff0c;改为plain:geoserver之后&#xff0c;就可以通过admin&#xff1a;geoserver默认账户密码登录了。…

RAG应用开发实战(01)-RAG应用框架和解析器

1 开源解析和拆分文档 第三方的工具去对文件解析拆分&#xff0c;去将我们的文件内容给提取出来&#xff0c;并将我们的文档内容去拆分成一个小的chunk。常见的PDF word mark down, JSON、HTML。都可以有很好的一些模块去把这些文件去进行一个东西去提取。 优势 支持丰富的文…

电商新宠:淘宝拍立淘API接口助力精准搜索商品信息

淘宝拍立淘API接口&#xff0c;作为电商领域的新宠&#xff0c;正以其独特的图像识别技术为精准搜索商品信息提供强大的助力。这项基于深度学习和计算机视觉技术的先进服务&#xff0c;使得用户能够通过上传图片来快速搜索淘宝平台上的相关商品&#xff0c;极大地提升了购物体验…

鸿蒙让我赚到了第一笔桶金!年薪33.6W!

抢人&#xff01;抢人&#xff01;抢人&#xff01; 所谓抢滩鸿蒙&#xff0c;人才先行。鸿蒙系统火力全开后&#xff0c;抢人已成鸿蒙市场的主题词&#xff01; 智联招聘数据显示&#xff0c;春节后首周&#xff0c;鸿蒙相关职位数同比增长163%&#xff0c;是去年同期的2.6倍…

分布式锁-redission可重入锁原理

5.3 分布式锁-redission可重入锁原理 在Lock锁中&#xff0c;他是借助于底层的一个voaltile的一个state变量来记录重入的状态的&#xff0c;比如当前没有人持有这把锁&#xff0c;那么state0&#xff0c;假如有人持有这把锁&#xff0c;那么state1&#xff0c;如果持有这把锁的…

RX8901CE可在最高+105℃工作温度下工作,助力光伏逆变器稳定运行

光伏逆变器是一种由半导体器件组成的电力调整装置&#xff0c;主要用于把直流电力转换成交流电力。一般由升压回路和逆变桥式回路构成&#xff0c;而且很多时候会配有储能单元进行峰谷电压平整。作为光伏电站中关键的部件&#xff0c;光伏逆变器的可靠运行影响着整个光伏电站的…

ubuntu如何截图? ubuntu中截屏的三种方法

文章目录 1.ubuntu主要用途2.ubuntu如何截图&#xff1f;2.1 方法一&#xff1a;键盘按键快捷键截屏 2.2 方法二&#xff1a;系统自带软件2.3 方法三&#xff1a;第三方软件 Reference 1.ubuntu主要用途 1、桌面操作系统&#xff1a;Ubuntu可用作个人电脑或笔记本电脑的操作系…

树形查找试题(二叉树、红黑树)

一、单项选择题 01.对于二叉排序树&#xff0c;下面的说法中&#xff0c;()是正确的。 A.二叉排序树是动态树表&#xff0c;查找失败时插入新结点&#xff0c;会引起树的重新分裂和组合 B.对二叉排序树进行层序遍历可得到有序序列 C.用逐点插入法构造二叉排序树&#xff0c;若先…