最優的cuda線程配置


1 每個SM上面失少要有192個激活線程,寄存器寫后讀的數據依賴才能被掩蓋
 
2 將 寄存器 的bank沖突降到最低,應盡量使每個block含有的線程數是64的倍數
 
3 block的數量應設置得令可用的計算資源被充分的利用。由於每個block映射到一個sm上面,所以至少應該讓block的數目跟sm的數目一樣多。
 
4 當Block中的線程被同步時或者等待讀取設備存儲器時,相應的SM會閑置。通常讓block的數目是sm的2倍以上,使其在時間軸上重疊
 
5 如果block的數目足夠多,則每個Block里的線程數應設置成warp尺寸的整數倍,以免過小的warp浪費計算資源。
 
6 給每個block分配越多的線程,能更高效的讓他們在時間片上工作。但是相應的每個線程的寄存器也就越少。當寄存器過少,有可能因為訪問溢出的寄存器,而導致數據的存儲變慢。
 
7 當每個線程占用的寄存器較多時,不宜在Block內分配過多的線程,否則也會減少block的數目。從而使SM的工作效率降低
 
8 每個block內的線程數應遵循 相應的 計算能力等級中的規定數目。
 
原文來自《GPGPU編程技術--從GLSL、CUDA到OPENCL》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM