1. CUDA编程手册中文版---CUDA简介

news2024/11/23 1:22:56

1.CUDA简介

1.1 我们为什么要使用GPU

更多精彩内容,请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program
来加入NVIDIA开发者计划

在这里插入图片描述

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

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

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

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

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

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

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

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

在这里插入图片描述

1.3 可扩展的编程模型

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

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

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

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

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

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

在这里插入图片描述

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

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

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

相关文章

XShell7连接CentOS7并利用lrzsz上传文件

xshell连接centos7 第一步:开放Linux防火墙的22号端口号 firewall-cmd --zonepublic --add-port22/tcp --permanentfirewall-cmd --reload 通过:firewall-cmd --zonepublic --list-ports 验证22端口是否开放 第二步:查看Linux主机端口号 命…

Java高级应用

一、异常处理 异常处理就是针对程序可能出现的错误情况,进行抛出异常。要么终止程序,要么进行避免错误情况。就需要用到的语法是try(避免)。throws(对可能出现的情况进行抛出)。 在实际开发中&#xff0c…

Spring自动装配原理

如上图,Spring的自动装配,要从AutoConfigurationImportSelector类说起,一直在此类selectImports方法的内部底层,有一个loadSpringFactories()方法,此方法会查找MET-INF目录下的spring.factories文件。先将此文件中的值…

C++核心编程——函数高级、类和对象

3 函数提高 3.1 函数默认参数 在C中,函数的形参列表中的形参是可以有默认值的。 语法:返回值类型 函数名 (参数默认值){} 注意事项: 1、如果函数的参数列表中某个参数已经有了默认参数,那么从这个参…

mysql索引的数据结构(Innodb)

首选要注意,这里的数据结构是存储在硬盘上的数据结构,不是内存中的数据结构,要重点考虑io次数. 一.不适合的数据结构: 1.Hash:不适合进行范围查询和模糊匹配查询.(有些数据库索引会使用Hash,但是只能精准匹配) 2.红黑树:可以范围查询和模糊匹配,但是和硬盘io次数比较多. 二…

QGIS开发五:使用UI文件

前面我们说了在创建项目时创建的是一个空项目,即不使用 Qt 提供的综合开发套件 Qt Creator,也不使用 Qt Visual Studio Tools 这类工具。 但是后面发现,如果我想要有更加满意的界面布局,还是要自己写一个UI文件,如果不…

大华智慧园区综合管理平台SQL注入漏洞复现(HW0day)

0x01 产品简介 “大华智慧园区综合管理平台”是一款综合管理平台,具备园区运营、资源调配和智能服务等功能。平台意在协助优化园区资源分配,满足多元化的管理需求,同时通过提供智能服务,增强使用体验。 0x02 漏洞概述 大华智慧园…

UML-构件图和部署图

目录 构件图 1.构件的类型 2.构建和类 3.构件图的构成 4.构件与接口 部署图概述: 1.节点(Node) 2.部署图​ 构件图 用来显示一组构件之间的组织与依赖关系 构件图从软件架构的角度来描述一个系统的主要功能,如子系统、类、包、构件等 使用构件最重要的是复…

F. Sum and Product - 思维

分析: 题目中的格式有点像韦达定理,就是对于一元二次方程ax^2 bx c 0有 所以可以推出要找的就是两个点,可以直接二分查找存不存在,这题有很多边界问题,有b^2 - 4ac小于0或者等于0,或者求出来的根在数组中…

天花板级,Python接口自动化测试-接口关联封装调用(实例)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 流程相关的接口&a…

go.sum are different when using go mod vendor/download

本地Golang配置 今天本地编译一个项目,遇到以下错误 PS D:\Code\Golang\jiankunking\k8s-ext> go mod tidy go: downloading github.com/huaweicloud/huaweicloud-sdk-go-obs v3.23.4incompatible verifying github.com/gin-gonic/ginv1.7.3: checksum mismat…

【OJ比赛日历】快周末了,不来一场比赛吗? #08.12-08.18 #14场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2023-08-12(周六) #4场比赛2023-08-13…

flask-migrate使用

1.介绍 # 表,字段发生变化,都会有记录,自动同步到数据库中--》django支持这种操作 # 原生的sqlalchemy,不支持修改表的 # flask-migrate可以实现类似于django的 python manage.py makemigrations #记录 python manage.py migrate …

玩机搞机---小米5x机型定制化系统中的一些奇葩故障与解决

在于各种工作室对接中发现目前小米系列中受欢迎的有小米5x和小米6x mi8这些性价比超值的机型用来使用的较多。而其中5x机型较为特别。此机型涵盖有好几个屏幕。如果工作室商家批量采用的机型偶尔刷回官方系统黑屏。那么就是机型屏幕批次和强解bl锁的原因。 💔&…

SpringBoot整合WebSocket详解

环境:Springboot3.0.5 WebSocket介绍 WebSocket协议RFC 6455提供了一种标准化的方式,通过一个TCP连接在客户端和服务器之间建立全双工、双向的通信通道。它是一个不同于HTTP的TCP协议,但设计为在HTTP之上工作,使用80和443端口&am…

【Linux】线程的概念以及与进程的区别

目录 背景知识 什么是线程? 进程和线程的区别 线程的优缺点 背景知识 在了解线程前,我们要首先知道,OS是可以做到让进程进行细粒度划分的! 比如我们所说的进程地址空间中的堆区,它在进程PCB中的mm_structz中有一个start和…

动态规划解0-1背包问题(超详细理解)

前言: 好久没写0-1背包问题了,都有些不记得了,写这篇文章给自己以后做简单参考,如果能同时帮到读者,不胜荣幸。 正文 0-1背包问题是这样的一个问题,假设有一个背包,其容量为 capacity 。在地…

【Spring Boot 源码学习】自动装配流程源码解析(上)

自动装配流程源码解析(上) 引言往期内容主要内容1. 自动配置开关2. 加载自动配置组件3. 自动配置组件去重 总结 引言 上篇博文,笔者带大家从整体上了解了AutoConfigurationImportSelector 自动装配逻辑的核心功能及流程,由于篇幅…

算法竞赛入门【码蹄集新手村600题】(MT1140-1160)C语言

算法竞赛入门【码蹄集新手村600题】(MT1140-1160)C语言 目录MT1141 数字3MT1142 整除的总数MT1143 沙哈德数MT1144 整除MT1145 全部整除MT1146 孙子歌诀MT1147 古人的剩余定理MT1148 隐晦余8MT1149 余数MT1150 战死四五百MT1151 韩信生气MT1152 韩信又生气了MT1153 …

Python 如何获取图片中的文字----OCR安装使用

环境: windows10, anaconda3 背景:使用conda install pytesseract 安装失败 解决方法: 从Index of /tesseract (uni-mannheim.de)中下载最新的安装包 https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-5.3.1.20230401.exe 点击…