SM,SP和grid,block,thread之间的对应关系是什么?

另外,手册上更确切的说法是:

For devices of compute capability 3.x, the eight instructions issued every cycle are four
pairs for four different warps, each pair being for the same warp.

也就是说,这里面其实是4个warp,但是每个warp是两条指令。
也就是按照warp计算是8条指令,分发到内部的不同计算单元上去,有6组SP,还有其他一些。

我要是想详细的了解这方面的东西,斑竹有什么推荐材料吗?

有的,请到本坛的“资源下载”(MUST版主)去。里面大量手册和书。

这个目前推荐查阅官方自带的手册,以及NVIDIA官网(包括美国和其他各国)上的说法,以及本论坛NVIDIA原厂支持的说法。

其他说法官方无保证,作为经验说法或者一般观点可供您参考。

以及,您也可以自己试验来确认或者反驳。

大致如上,祝您好运~

谢谢斑竹

你错了,你应该感谢NVIDIA公司提供文档,以及MUST给予整理在资源区。

有道理,辛苦大家了

一个SM 里最大活动线程是固定的是什么意思呢? 不可以放随意多的block在里面的? 执行的时候可以顺序执行的吗? 如果每个SM 比如一共能装最多活动线程是100个,总共有10个SM, 那一共就是只能处理100*10=1000个线程,是吗? 要是我要处理的是10000个线程,那这个GPU 是不是不能处理啊?
幼稚的问题没搞懂,不要见笑

这个限制请参阅 CUDA C Programming Guide Appendix.F table F.2

活动线程可以理解为调度到SMX上执行的线程,而非活动线程则是在调度队列里面的,也就是说你可以用远超SMX承载能力的线程数,而设备会自动完成调度的工作。

谢谢你的回答,现在懂了~~ 嘿嘿

版主及各位网友您好!
看了前面的发言之后我还是有点疑问。如果在有N个SM的硬件上,软件分配1个grid,这个grid里面包含N个block,那么在执行的时候,这N个block会平分到N个SM上(也就是一个SM上驻留一个block)执行吗?还是有别的分配方式(比如该硬件一个SM中活动线程块个数是8,那么就先填满前 N/8 个SM,然后空闲另外一些SM)?
谢谢!

您好,并无此方面的资料,NV并无公开如何将block发射到不同的SM上。我猜测可能是倾向于平分到不同的SM上,但并无可靠证据。以及如果您一定需要知道,可能需要搜索一下第三方的测试结果作为参考。

以及,实际上这并不成为一个问题,因为一般地,若某GPU上有N个SM,以及我们的grid上有P个blocks,那么P是远大于N的,这样才能保证GPU硬件的利用率。如果只使用N个block,一般情况是无法发挥GPU性能的。(除了特别构造的kernel可以在很少的线程数下实现较好的GPU硬件利用率)

大致如上,供您参考。

祝您编码顺利~

我之前在fermi上的测试是,如果你有N个block, 将会依次分配到SM 0, SM 1, SM 2… SM N, SM 0, SM 1…这么循环。

楼主可以简单的用%smid(ptx手册内详), 来判断某个时刻你的某个block存在于哪个SM上,从而进一步知道大致的分配策略。

非常感谢您!
您给出的信息非常有用!实际上,我的程序由于存在树的结构,在树的上层,节点数会很少,实际活动的线程也很少,几乎没有办法通过大量线程隐藏全局显存读取延迟,所以我考虑将所有的计算用数据挪到shared memory上。block的分配方式将决定每个block实际能用到的shared memory大小。这就是我有上面那个疑问的原因。

LZ您好,block的分配方式不影响每个block实际能用到的shared memory的大小的。
如果您每个block需要6KB的shared memory,以及假定SM上有16KB 的shared memory,那么无论是分配给两个SM还是一个SM,该block该用多少还用多少。

如果一个block申请的shared memory比较大,导致一个SM上只能上一个block,那么每个SM上就上一个block,其他的block在等待。

如果一个block申请的shared memory超过了一个SM上shared memory的容量,那么根本运行不了。

所以说,shared memory申请多少就用多少,block的分配方式并不影响每个block能使用到的shared memory的容量。

当然,在横扫斑竹提供的测试信息下,您可以更好地理解硬件行为,并实现和优化您的算法,这一点是十分有意义的。

大致如此,供您参考~

祝您编码顺利~