我知道在一个SM上运行的块的数量受块号,线程,共享内存和寄存器的限制。是否有避免拥有太多寄存器的策略?我的意思是我只是不想太多,最终限制了我在一个SM上运行的块的数量。cuda SM寄存器限制
1
A
回答
4
寄存器数量的一个主要驱动因素是你在内核中声明的本地数据量。但是,PTX汇编器在重新使用寄存器方面可以做得很好,因此从PTX代码中计算出使用的数量并不总是容易 - 您需要运行ptxas
以获得真正的答案。
9
用nvcc -Xptxas -v
编译将打印出所提到的诊断信息Edric。此外,您可以使用__launch_bounds__
限定符强制编译器保存寄存器。例如
__global__ void
__launch_bounds__(maxThreadsPerBlock, minBlocksPerMultiprocessor)
MyKernel(...)
{
...
}
保证大小maxThreadsPerBlock
的至少minBlocksPerMultiprocessor
块将适合在单个SM。有关__launch_bounds__
的完整说明,请参阅CUDA Programming Guide的B.16部分。
相关问题
- 1. 限制寄存器使用在CUDA:__launch_bounds__ VS maxrregcount
- 2. cuda寄存器的单位
- 3. CUDA内存限制
- 4. CUDA - 正在使用的SM的数量限制
- 5. 标量变量和寄存器:CUDA
- 6. 强制CUDA使用寄存器作为变量
- 7. ARM:限制例程使用有限的寄存器
- 8. HLSL:在编译时强制执行常量寄存器限制
- 9. 操作控制寄存器
- 10. 控制寄存器和gdb
- 11. MIPS:将寄存器地址复制到另一个寄存器
- 12. CUDA printf的限制
- 13. XOR寄存器,寄存器(汇编)
- 14. 解释GDB寄存器(SSE寄存器)
- 15. Pymodbus客户端setValues限制为100个寄存器
- 16. 增加寄存器超过其限制。汇编语言添加
- 17. 关于CUDA的架构(SM,SP)
- 18. 寄存器lazyloaded控制器angularjs
- 19. 追踪cuda内核寄存器的使用情况
- 20. CUDA,在运行时查找内核中寄存器的数量
- 21. CUDA - 内核使用比预期更多的寄存器?
- 22. 在CUDA中增加每线程寄存器使用量
- 23. CUDA PTX代码%envreg <32>特殊寄存器
- 24. 关于寄存器的CUDA内核优化
- 25. 减少CUDA内核中使用的寄存器的数量
- 26. 如何在CUDA编译中分配寄存器
- 27. 改变CUDA拱的论点让我用更多的寄存器
- 28. CUDA每个线程的最大寄存器数:sm_12 vs sm_20
- 29. 什么样的变量消耗CUDA中的寄存器?
- 30. 寄存器JS