CUDA编程 基础与实践 学习笔记(六)

本文介绍了CUDA编程中的内存层次结构,包括全局内存、常量内存、纹理内存、寄存器、局部内存、共享内存和缓存。重点讨论了SM(Streaming Multiprocessor)的占有率对性能的影响,并指出线程块数量应为32的整倍数以达到高利用率。文章适合初学者,帮助理解GPU内部结构。
摘要由CSDN通过智能技术生成

6.1 CUDA的内存组织
内存存在一种层级结构,大容量的一般latency高,小容量的一般latency低。这一点在计算机组成原理中学到过。在这里插入图片描述在这里插入图片描述
这里有个疑问,表中的局部内存是放在芯片外部的,这里怎么画在了内部?还是我没有理解清楚?
答:局部变量属于全局变量的一部分所以在芯片外。当寄存器放不下了,就会放在局部变量中,由寄存器做判断。

6.2 集中不同类型的内存:
(1)全局内存,核函数所有线程都能访问,就是显卡的显存,低速高延迟(速度慢是相对于数据处理而言的)。负责host->device, device->device的数据传递,用cudaMalloc,cudaMemcpy进行操作,可读可写。生命周期由主机端决定(之前分配内存时,使用的是**指针,存储在host上),用cudaFree()进行释放。之前讨论的一直是动态分配内存,也可以静态分配内存,所占用内存大小在动态分配时就确定,必须在主机和设备函数外部定义。__device__ T x[N]。在核函数中可以直接访问,在主机函数中要做移动,用cudaMemcpyFromSymbol, cudaMemcpyToSymbol()(很自然,因为这是定义在device上的)

(2) 常量内存, 仅64KB,有缓存。可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值