(三) CUDA 硬件实现

news2025/1/18 21:15:28

一组带有on-chip 共享内存的SIMD多处理器

GPU可以被看作一组多处理器, 每个多处理器使用单一指令,多数据架构(SIMD)【单指令流多数据流】

在任何给定的时钟周期内,多处理器的每个处理器执行同一指令,但操作不同的数据

每个多处理器使用以下四种类型的on-chip(集成的)内存:

  1. 每个处理器一组本地32位寄存器
  2. 并行数据缓存或共享内存,被所有处理器共享实现内存空间共享
  3. 通过设备内存的一个只读区域,一个只读常量缓冲器被所有处理器共享
  4. 通过设备内存的一个只读区域,一个只读纹理缓冲器被所有处理器共享

本地和全局内存空间作为设备内存的读写区域,而不被缓冲

每个多处理器通过纹理单元访问纹理缓冲器,它执行各种各样的寻址模式和数据过滤

在这里插入图片描述
执行模式

一个线程块栅格是通过多处理器规划执行的

一个块只被一个多处理器处理,因此可以对驻留在on-chip 共享内存中的共享内存空间形成非常快速的访问

一个批处理中每一个多处理器可以处理多少个块,取决于每个线程中分配了多少个寄存器和已知内核中每个时钟需要多少的共享内存

因为多处理器的寄存器和内存在所有的线程中是分开的

如果在至少一个块中,每个多处理器没有足够的寄存器或共享内存可用,那么内核将无法启动

线程块在一个批处理中被一个多处理器执行,被称作active

每个active 块被划分成为SIMD 线程组,称为warps

每一条这样的warp 包含数量相同的线程,叫做warp 大小,并且在SIMD 方式下通过多处理器执行

线程调度程序周期性地从一条warp 切换到另一条warp,以达到多处理器计算资源使用的最大化!

块被划分成为warp 的方式是相同的

每条warp 包含连续的线程,线程索引从第一个warp 包含着的线程0 开始递增

一个多处理器可以处理并发地几个块,通过划分在它们之中的寄存器和共享内存

更准确地说,每条线程可使用的寄存器数量,等于每个多处理器寄存器总数除以并发的线程数量

并发线程的数量等于并发块的数量乘以每块线程的数量

在一个块内的warp 次序是未定义的,但通过协调全局或者共享内存的存取,它们可以同步的执行

如果一个通过warp 线程执行的指令写入全局或共享内存的同一位置,写的次序是未定义的

在一个线程块栅格内的块次序是未定义的,并且在块之间不存在同步机制

因此来自同一个栅格的二个不同块的线程不能通过全局内存彼此安全地通讯

计算兼容性

设备的计算兼容性由两个参数定义,主要版本号和次要版本号

设备拥有相同的主要版本号代表相同的核心架构

次要版本号代表一些改进的核心架构,比如新的特性

多设备

为一个应用程序使用多GPU 作为CUDA 设备,必须保证这些GPU 是一样的类型

如果系统工作在SLI 模式下,那么只有一个GPU 可以作为CUDA 设备

因为所有的GPU 在驱动堆栈中被底层的融合了

SLI 模式需要在关闭,这样才能使用多个GPU 作为CUDA设备

模式切换

GPU 指定一些DRAM 来存储被称作primary surface 的内容,这些内容被用于显示输出

如果用户改变显示的分辨率或者色差,那么primary surface 的存储需求量将改变

如果用户将显示分辨率从1280x1024x32bit1600x1200x32bit

那么,系统必须指定7.68MB 的primary surface 而不在是5.24MB

(使全屏抗锯齿的应用程序需要更多的primary surface空间)

如果模式切换增加了primary surface 的内存空间,系统将会占用CUDA 所指定的内存空间,导致OOM

什么是纹理缓冲器

纹理存储器(texture memory)是一种只读存储器,由GPU用于纹理渲染的的图形专用单元发展而来,因此也提供了一些特殊功能。

纹理缓存的优势:
纹理缓存具备硬件插值特性,可以实现最近邻插值和线性插值。纹理缓存针对二维空间的局部性访问进行了优化,所以通过纹理缓存访问二维矩阵的邻域会获得加速。纹理缓存不需要满足全局内存的合并访问条件。

纹理可以是一段连续的设备内存,也可以是一个CUDA数组。但是CUDA数组对局部寻址有优化,称为“块线性”,原理是将邻域元素缓存在同一条cache线上,这将加快邻域内的寻址,但是对于设备内存,并没有“块线性”。所以,选择采用CUDA数组,还是设备内存,需要根据实际情况决定,将数据copy至CUDA数组是很耗时的。

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

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

相关文章

广告ROI可洞察到订单转化率啦

toB广告营销人的一日三问&#xff1a; 如何实现线索增长&#xff1f;如何获取更多高质量线索&#xff1f;如何能用更少的钱拿到更多高质量的线索&#xff1f; < 广告营销的终极目标&#xff0c;就是提升ROI > 从ROI公式中&#xff0c;可以找到提升广告营销ROI的路径&…

Linux:shell脚本循环语句

目录 一、循环含义 二、echo命令 三、for 3.1.将1到100累加求和 3.2批量添加用户 3.3 根据IP地址检查主机状态 四、 while 和 until 4.1 猜价格 4.2 1-100求和 一、循环含义 循环含义 将某代码段重复运行多次&#xff0c;通常有进入循环的条件和退出循环的条件 重复…

kali搭建vulhub漏洞靶场

安装kali 下载kali作为虚拟环境&#xff0c; Get Kali | Kali Linux 通过vmvare打开&#xff0c;默认账号密码kali/kali 修改root密码 su passwd root 如果一些配置普通用户做不了就切换kali&#xff0c;或sudo 命令 kali配置 apt换源 echo > /etc/apt/sources.list v…

java对大文件分片上传

这里记录一下&#xff0c;Java对大文件的切分&#xff0c;和后端接口分片上传的实现逻辑 正常&#xff0c;前后端分离的项目其实是前端去切分文件&#xff0c;后端接口接收到切分后的分片文件去合并&#xff0c;这里都用java来记录一下。特别说明&#xff1a;我这里用的是zip包…

Codeforces Round 888 (Div. 3)ABC

Codeforces Round 888 (Div. 3) 目录 A. Escalator Conversations题目大意思路代码 B. Parity Sort题目大意思路代码 C. Tiles Comeback题目大意思路代码 A. Escalator Conversations 题目大意 判断有多少个人能够通过站在楼梯上的操作和VLAD一样高或者是VLAD通过站在楼梯上的…

6.1 MyBatis基础

1.MyBatis概述 MyBatis本是apache的一个开源项目iBatis&#xff0c;2010年这个项目由apache software foundation迁移到了google code&#xff0c;并且改名为MyBatis&#xff0c;2013年11月MyBatis又被迁移到Github。 MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持…

欧拉算法与埃氏筛法比较

#include<iostream> using namespace std; bool data[100000005]; // zhishu用于存储质数的数组 &#xff0c;cnt下标 int zhishu[100000000],cnt0;int main() {data[1] 1;// 1表示素数 int n;cin >> n;// 循环遍历for(int i2;i<n;i){if(data[i] 0){// 表明是…

嵌入式学习之C语言指针部分复习

今天主要把C语言的指针部分再次认真的复习了一下&#xff0c;对于指针的整体框架有了更加深刻的理解&#xff0c;特别要重点区分函数指针&#xff0c;指针函数&#xff0c;数组指针&#xff0c;指针数组部分&#xff0c;对于这部分的应用回非常的重要&#xff0c;而且C语言指针…

海龟绘图——长方体(包含建立和销毁的过程)

运行结果&#xff1a; 代码&#xff1a; import turtle turtle.setup(1024,1024,200,200)# 移动画笔 turtle.penup() turtle.goto(-200,200) turtle.pendown() # 绘制第一条实线 turtle.setheading(0) turtle.forward(300) # 绘制第二条实线 turtle.setheading(18045) turtle.…

Python语法基础--条件选择

学习目标 使用比较运算符编写布尔表达式。使用random.randint(a,b)或者random.random()函数来生成随机数。编写布尔表达式(AdditionQuiz)。使用单向if语句实现选择控制。使用单向if语句编程。使用双向if-else语句实现选择控制。使用嵌套if和多向if-elif-else语句实现选择控制。…

winform使用IrisSkin4.dll换肤后排除控件

设置控件的tag属性为9999 参考&#xff1a; https://www.cnblogs.com/mq0036/p/6654219.html

YOLOV5改进:加入RCS-OSA模块,提升检测速度

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 2.涨点效果:RCS-OSA模块更加轻量化,有效提升检…

一场大火烧毁了印度的芯片梦 | 百能云芯

谈起印度的半导体发展史&#xff0c;鲜为人知的是&#xff0c;该国曾有可能成为全球半导体制造业的重要中心。然而&#xff0c;一个意外的事件彻底改变了历史进程&#xff0c;让印度错失了超越台积电的机会。 01半导体制造潜力 在高科技行业&#xff0c;也许很多人都不看好印度…

UE5.2程序发布及运行问题记录

发布后的程序默认是以全屏模式启动运行的&#xff0c;通过添加以下命令行参数&#xff0c;可实现程序的窗口模式运行&#xff1a; -ResX1280 -ResY720 -WINDOWED 发布后的程序&#xff0c;启动时&#xff0c;提示显卡驱动警告&#xff08;如图1所示&#xff09;&#xff0c;但是…

Java-Sec-Code靶场

文章目录 前言1.靶场搭建靶场地址、环境Window环境修改点 靶场通关和源码分析命令注入RCE反序列化fastjson反序列化目录穿越文件上传Spel表达式sql注入poi-ooxml组件XXE 总结 前言 一直都是一个Java盲&#xff0c;但是如今Java却占据了开发的半壁江山&#xff0c;平时遇见的多…

情感分析工具: TextBlob 与 VADER 的对比

一、说明 在本文我们将看到&#xff0c;在情感分析方面&#xff0c;我们更喜欢哪个库。这取决于很多情况。例如。数据采集。在我们进行分析之前&#xff0c;让我们先看看这两个库是关于什么的。 二、亮相工具库 2.1. 工具库TextBlob介绍&#xff1a; 图像。TextBlob: Simplif…

对自定义表格数据设计自定义查询/汇总

目录 1 前言 2 生成数据 3 设计一个汇总 4 试一下效果 5 导出为excel文件的源代码 6 后记 1 前言 对自定义表格中录入或者导入的数据&#xff0c;必须能定义查询和汇总&#xff0c;否则程序基本没什么用。就是说&#xff0c;程序应该具备对任意表格进行方便的查询汇总公式…

VS Code终端系统启动失败的问题

一百度真的是各种各样打不开&#xff0c;有的配置一下就可以了&#xff0c;有的改成管理员权限就可以了&#xff0c;我的是怎么设置都不行&#xff0c;安装了最新版本的不行&#xff0c;又退了几个版本才行了&#xff0c;1.56版本内网行&#xff0c;1.55版本能行&#xff0c;比…

企业权限管理(十五)-方法级别权限控制

方法级别权限控制 jsr-250 3.Secured注解使用 开启表达式的使用 页面控制 显示xxx在线 <div class"pull-left info"><p><security:authentication property"principal.username"></security:authentication></p><a h…