CUDA总结:Occupancy

Occupancy的定义:活动的warp数量与最大数量的比值。
意义:GPU的硬件利用率,利用率越高不一定性能就越高,但如果利用率很小,性能肯定不会好。这很好理解,一条马路,利用率太高了,如拥堵,说明车流量太大马路容量(承载能力)不足够了;利用率太低了,则没有充分利用到交通资源,此时无法体现马路的承载能力。

同一时刻,GPU的每个SM运行着若干个block,sm会根据block的线程数为其分配寄存器:
每个block分配到的寄存数量=每个线程所需的寄存器数量*线程数。
但是每个SM的寄存器数目是有限的,如果每个block的线程数越多(所需的寄存器数量也多),block的数量就会越少。block的数量减少,会导致SM的占用率降低!

举例说明:cc=1.1,SM的最大寄存器数量为8192,假设128-thread block,12-reg thread,此时只能运行5个block(8192/12/128 = 5.333),Occupancy=5*128/768=83.33%
注意:768是cc 1.1的每个SM的最大线程数
假设256-thread block,12-reg thread,此时只能运行2个block(8192/12/256=2.67),
Occupancy=2*256/768=66.67%

CUDA的toolkit提供了一个CUDA Occupancy Calculator工具,用于计算不同cc和block分配下的Occupancy
这是一个excel表格,放在\NVIDIA GPU Computing Toolkit\CUDA\v8.0\tools目录下

Occupancy只能是评估性能的一个方面,并不是所有情况下都是越高越好

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值