我知道在一個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