单个核函数/线程最多使用的寄存器有没有默认限制?如果有的话是不是与计算能力有关?
我看到programing guide中有个说法叫做寄存器粒度什么的,是不是就是说的这个问题?
单个核函数/线程最多使用的寄存器有没有默认限制?如果有的话是不是与计算能力有关?
我看到programing guide中有个说法叫做寄存器粒度什么的,是不是就是说的这个问题?
LZ您好
1:有的
2:有关的
3:不是这个
楼主你上个问题我回复了,然后你不鸟我。我决定不回答你这个问题。
展开说一下:
1:&2:单个线程最大能使用的寄存器数量是有限制的,并且该限制和计算能力版本有关。
1.x是127个,2.x是63个,3.0是63个,3.5是255个。
以及,单个kernel如果看做是线程执行的话,限制如上;如果看做是所有线程执行的话,因为线程是一波一波执行的,所以总量没有明显限制。
3:那个指的是分配寄存器的时候,每次最少分配的数量,这个数量是大于1的,即不能一个一个分配。
对2#解释如上,供您参考。
祝您编码顺利~
单个核函数/线程最多使用的寄存器的默认限制是不是如下(32位寄存器)?
fermi架构下64个
tesla架构下:1.0-1.1:256个
1.2-1.3:512个
kepler架构下:256个
请您参考我4#给出的数据。
或者参考CUDA C Programming Guide Appendix F的表格。
后者和4#的一处差别在于,后者声称1.x是每线程最大128个寄存器。但是根据某来源的说法表示,有一个特殊寄存器其值始终为0,是有特殊用途的,无法被随意使用,所以4#算作127。
大致如上,供您参考,祝您好运~
楼主就这么不相信我们么?ICE大大已经在4#给出了1.x/2.x & 3.0 /3.5下的数据了。您却依然坚持您自己的。唉。。。