NVIDIA GPU Wavefronts

背景知识

NVIDIA GPU中Volta及更新的架构,L1TEX的处理流程可以简化描述如下:
当一个SM(流式多处理器)为一个warp执行Global或Local内存指令时,会向L1TEX发送一个Request。这个Request包含了该warp中所有参与线程(最多32个线程)的信息。对于全局和本地内存,根据访问模式和参与的线程数量,Request需要访问多个cache line以及这些cache line内的多个sector。
L1TEX单元内部有多个处理阶段,以流水线方式运行。

Wavefront

wavefront 是每个流水线 stage 每个周期内可以处理的一个packet。如果在一个wavefront中不能访问Request所有cache line或sector,则会创建多个wavefront并依次进行处理,即以串行方式进行。
wavefront内可同时处理范围的限制可能包括对一致性内存空间的需求、可以访问的最大cache line数量以及其他原因。每个wavefront随后流经L1TEX流水线,并读取该wavefront处理的sector。

wavefront的理解:

  • wavefront可以理解为一个可以一次同时处理的“work packet”。也就是说,在L1TEX中每个cycle处理一个wavefront(pipeline 每cycle完成一个wavefront)。因此,wavefront也可以表示处理Request所需的周期数,而每个请求所需的sector数量取决于所有参与线程的内存指令的访问模式。例如,可能存在一个内存指令,每个请求需要4个sector,并且可以在1个wavefront中完成处理。但是,也可能存在一个内存指令,每个请求需要4个sector,但需要2个或更多的wavefront才能完成处理。

Request、Sector、Wavefronts三者的关系

  • Sector是Warp访存的最小单位,大小为32Bytes。
  • Request是指warp发出的LD/ST 请求,里面包含多个sector(可连续可不连续),也就是一个Request包含N个Sector。
  • 每个Request在L1TEX处理时会被拆分成一个或者多个wavefront,具体怎么拆分和L1TEX的pipe line能同时处理sector的能力有关。
  • 同一个wavefront中的所有sector会并行处理(同时完成),wavefront和wavefront之间是串行处理的。

Request、Sector、Wavefront三者的关系是:Request与sector的比例为1:N,wavefront与sector的比例为1:N,而Request与wavefront的比例为1:N。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值