l1tex: 一级(L1)/纹理缓存
一级缓存(L1缓存)/纹理缓存位于GPC(图形处理集群)内。它可以用作直接映射的共享内存,或在其缓存部分中存储全局、局部以及纹理数据。
- l1tex__t 代表其标签阶段(Tag stage)。
- l1tex__m 代表其未命中阶段(Miss stage)。
- l1tex__d 代表其数据阶段(Data stage)。
sectors: 扇区
扇区是指对齐的32字节内存块,位于缓存行或设备内存中。
一个L1或L2缓存行由四个扇区组成,即128字节。
当标签存在且缓存行内存在扇区数据时,扇区访问被视为命中。
标签未命中(tag-misses)和标签命中但数据未命中(tag-hit-data-misses)均被视为未命中。
lsu: 加载存储单元(Load Store Unit)
LSU流水线向L1TEX单元发出加载、存储、原子操作和归约指令,涵盖全局、局部和共享内存的操作。
此外,它还向L1TEX单元发出特殊寄存器读取(S2R)、shuffle操作以及CTA级别的到达/等待屏障指令。
global: 全局内存
全局内存是一个49位的虚拟地址空间,映射到设备的物理内存、固定系统内存或对等内存。
全局内存对GPU中的所有线程可见,且通过SM的L1缓存和GPU的L2缓存进行访问。
sm: 流式多处理器(Streaming Multiprocessor)
流式多处理器负责以32个线程为一组(称为warp)来执行内核。
多个warp进一步分组为协同线程数组(CTA),在CUDA中被称为块(blocks)。
同一CTA的所有warp在同一个SM上执行,并且共享各种资源,例如共享内存。
扇区请求:全局存储请求的扇区数量
(此计数器指标表示跨所有子单元实例的总和)
l1tex:一级(L1)/纹理缓存
一级缓存(L1缓存)/纹理缓存位于GPC(图形处理集群)内。它可以用作直接映射的共享内存,或在其缓存部分中存储全局、局部以及纹理数据。
- l1tex__t 代表其标签阶段(Tag stage)。
- l1tex__m 代表其未命中阶段(Miss stage)。
- l1tex__d 代表其数据阶段(Data stage)。
扇区:扇区是一块对齐的32字节内存块,位于缓存行或设备内存中。
L1或L2缓存行由四个扇区组成,即128字节。
当标签存在且缓存行内有该扇区数据时,扇区访问被视为命中。标签未命中(tag-misses)和标签命中但数据未命中(tag-hit-data-misses)均视为未命中。
global: 全局内存
全局内存是一个49位的虚拟地址空间,映射到设备物理内存、固定系统内存或对等内存。全局内存对GPU中的所有线程可见,并通过SM的L1缓存和GPU的L2缓存访问。
requests: 请求
向硬件单元发出的指令,用于执行某些操作,例如从某个内存位置加载数据。每个请求可访问一个或多个扇区。
lg: 局部/全局内存
smsp: 每个流式多处理器(SM)被划分为四个处理块,称为SM子分区。
SM子分区是SM上的主要处理单元,每个子分区管理一个固定大小的warp池。
GA10x架构说明
- GPU的每个L2 slice
- 每个周期可以执行一次标签查找操作,用于加载和存储。
- 存储操作可能会影响您的加载带宽。
- 每周期可以返回一个32字节的扇区。
- 缓存行大小为128字节,由4个32字节的扇区组成。
- 如果64字节缓存未命中,将会分配整个缓存行,但只有未命中的扇区(或在设置了cudaLimitMaxL2FetchGranularity > 32B时提升的扇区)会被填充。
- SM的L1TEX缓存
- 每周期可以返回一个128字节数据块。
- 如果64字节访问未对齐64字节,那么性能会有所损失,因为会访问到不同缓存行中的3个32字节扇区或2个32字节扇区。
- 如果每条指令未加载超过64字节,您将无法完全利用L1TEX到寄存器文件(RF)的性能。
L1TEX和L2缓存的SOL分解应有助于发现问题。
进一步优化
可能需要提供报告和源代码,以确定其他优化机会。
这段翻译不仅注重了准确性,还对排版进行了优化,便于阅读和理解。