*4.3 CUDA MEMORY TYPES

本文介绍了CUDA设备中的不同内存类型,包括全局内存、恒定内存、寄存器和共享内存,以及它们在冯·诺伊曼模型下的工作原理。文章强调了这些内存类型在执行效率、延迟和带宽上的差异,以及CUDA程序员如何根据需要选择合适的内存类型来优化程序性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CUDA设备包含几种类型的内存,可以帮助程序员提高计算到全局内存的访问率,从而实现高执行速度。图4.6显示了这些CUDA设备内存。全局内存和恒定内存出现在图片的底部。主机可以通过调用API函数来写入(W)和读取(R)这些类型的内存。我们已经在第2章中引入了全局内存,数据并行计算。设备可以写入和读取全局内存。恒定内存支持设备短延迟、高带宽只读访问。
在这里插入图片描述

寄存器和共享内存,如图4.6所示,是片上内存驻留在这些类型内存中的变量可以以高度并行的方式以非常高速的方式访问寄存器分配给单个线程每个线程只能访问自己的寄存器内核函数通常使用寄存器来保存对每个线程都是私有的经常访问的变量共享内存位置分配给线程块;块中的所有线程都可以访问分配给该块的共享内存变量。共享内存是线程的一种通过共享他们的输入数据和中间结果进行合作的有效手段。通过在CUDA内存类型之一中声明CUDA变量,CUDA程序员决定了变量的可见性和访问速度。

为了充分理解寄存器、共享内存和全局内存之间的区别,我们需要更详细地了解这些不同的内存类型如何在现代处理器中实现和使用。几乎所有现代处理器都从约翰·冯·诺伊曼在1945年提出的模型中找到其根源,如图4.7.所示,CUDA设备也不例外。CUDA设备中的全局内存映射到图4.7.中的内存盒。处理器盒对应于我们今天通常看到的处理器芯片边界。全局内存从处理器芯片上脱机,使用DRAM技术实现,这意味着长访问延迟和相对较低的访问带宽。寄存器对应于冯·诺伊曼模型的寄存器文件。寄存器文件位于处理器芯片上,这意味着与全局内存相比,访问延迟非常短,访问带宽高得多。在典型的设备中,寄存器文件的聚合访问带宽至少比全局内存高出两个数量级。此外,当变量存储在寄存器中时,其访问不再消耗片外全局内存带宽。这种带宽消耗的减少将反映为计算与全局内存访问比的增加。
在这里插入图片描述
更微妙的一点是,与对全局内存的访问相比,每次访问寄存器涉及的指令更少。大多数现代处理器中的算术指令都有“内置”寄存器操作数。例如,foating-point加法指令可能具有以下形式

fadd r1, r2, r3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值