《CUDA C++ Programming Guide》第一章 CUDA介绍

news2024/11/29 12:50:11

第一章 CUDA介绍

1.1 使用GPUs的好处

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

GPU 和 CPU 之间的这种性能差异之所以存在,是因为它们在设计时考虑到了不同的目标。CPU 被设计成能够尽可能快地执行一系列操作(称为线程) ,并且能够并行地执行几十个这样的线程。GPU 被设计成能够并行执行数以千计的线程(缓冲较慢的单线程性能以获得更大的吞吐量)。

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

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

一般来说,应用程序具有并行部分和顺序部分的混合,因此系统设计采用 GPU 和 CPU 的混合,以最大限度地提高整体性能。具有高度并行性的应用程序可以利用图形处理器的这种大规模并行处理机特性来获得比 CPU 更高的性能。

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

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

CUDA 提供了一个软件环境,允许开发人员使用 C + + 作为高级语言。同时也支持其他语言、应用程序编程接口或基于指令的方法,如 FORTRAN、 DirectCompute、 OpenACC。

在这里插入图片描述

1.3可伸缩编程模型

多核 CPU 和多核 GPU 的出现意味着主流处理器芯片现在是并行系统。挑战在于开发能够透明地扩展其并行性的应用软件,以利用不断增长的处理器核心数量,就像3D图形应用程序能够透明地扩展其并行性以适应多个核心数量差异很大的GPU一样

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

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

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

这种分解通过允许线程在解决每个子问题时进行协作来保持语言的表达能力,同时支持自动伸缩性。事实上,每个线程块都可以在 GPU 中任何一个可用的多处理器上以任意顺序进行调度,并发或顺序执行,这样一个编译后的 CUDA 程序就可以在任意数量的多处理器上执行,而且只有运行时系统需要知道物理多处理器的数量。

这种可伸缩的编程模型允许 GPU 架构通过简单地缩放多处理器和内存分区的数量来跨越广泛的市场范围:从高性能的 GeForce 图形处理器和专业的 Quadro 和 Tesla 计算产品到各种廉价的主流 GeForce 图形处理器

在这里插入图片描述
GPU 是围绕流式多处理器(SM)阵列构建的。一个多线程程序被划分成多个独立执行的线程块,因此,一个具有更多处理器的 GPU 执行该程序的时间少于一个具有更少处理器的 GPU

1.4 CUDA 开发文件架构

本说明文档分为以下几节: (以下章节陆续会在CUDA专栏更新)

  1. 介绍:对 CUDA 的一般介绍(本章)
  2. 编程模型:概述CUDA 编程模型
  3. 编程接口:描述了编程接口
  4. 硬件实现:描述了硬件实现
  5. 性能指南:如何实现最佳性能提供了一些指导
  6. 启用 CUDA 的 GPU: 列出了所有启用 CUDA 的设备
  7. C + + 语言扩展:对 C + + 语言的所有扩展的详细描述
  8. 协作组:描述了各组 CUDA 线程的同步原语
  9. CUDA 动态并行性:描述了如何从一个内核启动并同步另一个内核
  10. 虚拟内存管理:描述了如何管理统一的虚拟地址空间
  11. 流有序内存分配器:描述了应用程序如何进行内存分配和释放
  12. 图形内存节点:描述了图形如何创建和拥有内存分配
  13. 数学函数:列出了 CUDA 支持的数学函数
  14. C + + 语言支持:列出了设备代码中支持的 C + + 特性
  15. 纹理获取:提供了更多关于纹理获取的细节
  16. 计算能力:给出了各种设备的技术规范,以及更多的体系结构细节
  17. 驱动程序 API: 引入了底层驱动程序 API
  18. CUDA 环境变量:列出了所有的 CUDA 环境变量
  19. 统一内存编程:引入了统一内存编程模型

当 GPU 最初被创建的时候,二十年前,它被设计成一个专门的处理器来加速图形渲染。由于市场对实时、高清、3D 图形的需求无法满足,它已经发展成为一种通用处理器,用于更多的工作负载,而不仅仅是图形渲染。

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

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

相关文章

协议和模型

1 规则 1.1 通信基础知识 不同网络的规模、形状和功能都存在很大差异。它们可以复杂到通过互联网来连接设备,也可以简单到直接将两台计算机用一根电缆连接,或者是介于这两种之间。然而,只是完成终端设备之间的有线或无线物理连接并不足以实…

MATLAB基础知识回顾

目录 1.帮助命令 2.数据类型 3.元胞数组和结构体 4.矩阵操作 4.1 矩阵的定义与构造 4.2 矩阵的四则运算 4.3 矩阵的下标 5.程序结构 5.1 for循环结构 5.2 分支结构 7.基本绘图操作 7.1.二维平面绘图 6.2 三维立体绘图 7.图形的保存与导出 8.补充 语句后⾯加;的作…

Kaggle图表内容识别大赛TOP方案汇总

赛题名称:Benetech - Making Graphs Accessible 赛题链接:https://www.kaggle.com/competitions/benetech-making-graphs-accessible 赛题背景 数以百万计的学生有学习、身体或视力障碍,导致人们无法阅读传统印刷品。这些学生无法访问科学…

人机合一Linux

未来云系统成为主流,维护电脑这种充满时代特性的技术,完全不重要了。 无论是学习还是工作,电脑都是IT人必不可少的重要武器,一台好电脑除了自身配置要经得起考验,后期主人对它的维护也是决定它寿命的重要因素&#xff…

【01trie】CF1851F

Problem - F - Codeforces 题意: 思路: 首先最大异或对可以用01trie解决 trie树入门_lamentropetion的博客-CSDN博客 ai xor x 和 aj xor x 都必须为1 因此可以转换为 ai 和 aj 最小异或对问题 改一下01trie的板子即可 主要修改部分在query上 p…

如何把视频中的背景删掉,AI抠像,瞬间换背景!

不用绿幕也能快速抠除视频背景。一个可以去除视频背景的AI智能抠像工具,上传视频后会自动去除背景,支持单人、多人等各类场景,智能扫描识别,发丝级细节处理,快捷高效。 随着AI 抠像技术的不断成熟和普及,我…

5-7月大更新!EasyOps®全平台34+新特性齐上线~

为了提供更好的产品使用体验,优维从未停止更新升级的脚步。在5-7月份,EasyOps全平台更新上线34新功能,涉及Hyperlnsight超融合监控、CMDB、DevOps、AutoOps、ITSM、公共服务,在不断的技术创新过程中,进一步加速IT运维效…

存算一体化(Processing in Memory, PIM)入门

一、 存算一体化 概念: 简单来说就是将存储资源中嵌入计算能力,以新的运算架构进行二维和三维矩阵乘法/加法运算。这样减少了数据频繁移动带来的延迟和能耗方面的开销。 背景: 虽然多核(例如CPU)/众核(例…

视频监控综合管理平台EasyCVR多分屏默认播放协议的配置优化

视频监控综合管理平台EasyCVR具备视频融合汇聚能力,TSINGSEE青犀视频平台基于云边端一体化架构,可支持多协议、多类型设备接入,包括:NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。国标GB28181视频平台Ea…

Mysql执行计划字段解释

文章目录 一、前言二、如何查看执行计划三、执行计划各字段解释四、select_type4.1、SIMPLE(简单查询)4.1.1、简单的单表查询4.1.2、多表连接查询 4.2、PRIMARY(主查询)4.2.1、包含复杂子查询的外层查询4.2.2、UNION语句中的第一个…

55寸透明屏有哪些主要特点?

55寸透明屏是一种新型的显示技术,它具有透明度高、色彩鲜艳、清晰度高等特点,可以广泛应用于商业展示、户外广告、智能家居等领域。 首先,55寸透明屏的透明度非常高,可以达到80%以上,这意味着即使屏幕开启,…

裁员 10%,暴跌 14%,这家 IT 独角兽正在被抛弃!

流量一跌再跌,Stack Overflow 简直被狠狠地上了一课! 3 月份 Stack Overflow 的流量下降了近 14%。该公司的 CEO 压力空前,甚至昨天决定裁员 10%! 平均每月下降6%,上月直接跌了近14% 开发人员越来越多地从 AI 聊天机器…

Hive数据仓库

数据仓库概念与起源发展由来 数仓概念 数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面相分析的集成化数据环境,分析结果为企业提供决策支持…

结构化思维:高效能项目经理人的底层能力

大家好,我是老原。 我们经常会说「高效能」,那怎么成为高效能人士?其实除了拼体力和心力以外,高效能更重要的是脑力,这里的脑力不是指智力,而是结构化思维。 随着你在职场中不断成长和进阶,级…

springboot 整合tx-mybaits 实现crud操作

一 操作案例 1.1 工程结构 1.2 pom文件的配置 <!--spring boot的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId…

【防火墙】iptables防火墙(一)

防火墙具有隔离功能 主要部署在网络边缘或者主机边缘&#xff0c;防火墙的主要作用是决定哪些数据可以被外网访问&#xff0c;哪些数据可以进入内网访问 网络层&#xff08;路由器&#xff09;&#xff1a;数据的转发 安全技术 1.入侵监测系统&#xff1a;在检测到威胁&…

导出为PDF加封面且分页处理dom元素分割

文章目录 正常展示页面导出后效果代码 正常展示页面 导出后效果 代码 组件内 <template><div><div class"content" id"content" style"padding: 0px 20px"><div class"item"><divstyle"height: 160…

电压放大器在管道缺陷检测中应用有哪些

管道是一种重要的输送工业介质的设施&#xff0c;广泛应用于石油、化工、水利等领域。然而&#xff0c;由于长期使用和外界环境因素等原因&#xff0c;管道内部常会出现各种缺陷和损伤&#xff0c;如腐蚀、裂纹、磨损等&#xff0c;这些问题如果得不到及时发现和修复&#xff0…

基于vue实现权限控制,动态渲染菜单栏

Vue菜单权限动态路由 实现原理&#xff1a;用户登录&#xff0c;服务端返回相关权限&#xff0c;进行持久化存储&#xff0c;筛选动态路由&#xff0c;同时菜单栏也需动态渲染 静态路由 静态路由&#xff0c;也叫常量路由&#xff0c;即所有角色都可以访问到的路由界面。如:…

手把手移植 simpleFOC (二)

目录 前言 1、建立 arduino文件夹&#xff0c;如图&#xff1a; 2、提取必要的文件 二、修改源码 1.屏蔽arduino.h、wiring.h里代码 2.修改Print.cpp文件 三&#xff0c;编译 总结 一、前言 本章主要实现 simpleFoc 里的 Serial.print功能&#xff0c;建立setup、loop函…