cuda笔记 1 基本单元

对于gpu并行编程来说,我们第一需要了解的就是流处理器sm,线程块之间的关系,他们基本上决定了并行调度的过程。而具体参数可以参考书上的图。

总结来说,在2.x及之前的架构中,一个sm最多容纳8个线程块,而最多容纳的线程数为1536,因此一个线程块的最大线程数为1024,这是最极端的情况,只能容纳一个线程块。这个而对于一般的情况来说,一个线程块的线程数至少在192以上才能发挥出gpu足够的性能,192和256这两个选择一般来说是比较好的选择。这种选择同样也是一种权衡,更多的线程数似乎能更好的发挥出硬件的能力,但是却很可能出现同一个线程块中许多线程束尽管执行完了,却不得不闲置等到最后一个线程执行完成,因此增加了潜在的闲置时间。

尽管线程束才是gpu真正处理的基本执行单元(因此线程数最好是线程束的整数倍),但是调度时却是以线程块为基本调度单位(这里的调度是指执行与等待的调度,而对于指令调度来说,调度是以半个线程束为基础的,因此也可基于此进行优化分支)。比如一个线程块占据了一个sm的一个槽,在线程块全部执行完成之前,他是不会退出的。因此为了减少闲置时间,同样需要令线程块的数量为sm的整数倍。

 

 

今日重拾了当年弃坑的gpgpu,回过头来看,似乎当年觉得很难啃得东西也变得有味道起来了。因此决定最近尽快更新,参考书未cuda编程指南。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值