CUDA编程性能分析的专业术语

430 阅读4分钟

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分解应有助于发现问题。


进一步优化

可能需要提供报告和源代码,以确定其他优化机会。


这段翻译不仅注重了准确性,还对排版进行了优化,便于阅读和理解。