我在Windows 7上用CUDA C編寫了幾個程序。我做了塊大小的實驗。我發現在大多數情況下,256或512的塊大小比其他塊的性能更好。任何機構能告訴我背後的確切技術原因嗎?或者指出要知道的任何資源。由於其他塊大小的倍數32(warp)會降低性能。提前致謝。爲什麼CUDA 256或512的塊大小與其他的相比,性能更好?
1
A
回答
1
如果沒有實際測量,就無法確定給定芯片的最佳塊大小。例如,如果您正在進行2D紋理處理,則16x4塊會非常好地工作。就你而言,512可能恰好是芯片內存分區數的倍數。 (在GeForce 8800 GTX上,有6個內存分區,384對帶寬綁定的內核來說是一個非常好的塊大小)。
佔用率只是影響性能的許多注意事項之一 - 對於可以使用寄存器(而不是共享內存)來保存中間結果的工作負載,使用更多寄存器和更少線程的塊工作得最好的工作負載,更多線程並不總是更好。
對不起,我不能給出更明確的答案,但這是一個複雜的問題。
+0
謝謝!您已經給出了一個非常重要的線索,即「內存分區」塊大小和內存分區可以以某種方式關聯。非常感謝。 – user961614
相關問題
- 1. 與其他編程語言相比,爲什麼Java更安全?
- 2. 爲什麼combine7的性能比combine5好?
- 3. 512 * 512的索引圖像的大小和256色值是多少?
- 4. 什麼導致512字節的限制 - openkeyval或其他東西
- 5. 爲什麼requestAnimationFrame比setInterval或setTimeout更好
- 6. 爲什麼補碼錶示比其他補碼更好?
- 7. 爲什麼Angular 2比Angular 1有更好的性能?
- 8. 爲什麼std :: make_shared <>()比boost :: make_shared()有更好的性能?
- 9. 與OO相比,編寫「功能性」JavaScript有什麼好處?
- 10. 與Java相比,Android C有更好的性能嗎?
- 11. 爲什麼一個循環比其他記憶更好地表現得更好?
- 12. 爲什麼符號「№」在文字比其他字符更大膽?
- 13. QWebView與所有其他QWidgets相比DPI [字體大小]不同?
- 14. 爲什麼更小的塊大小(相同的總體線程數)暴露更多的並行性?
- 15. 爲了獲得更好的性能,做什麼更好?
- 16. 爲什麼與GPU相比,使用較短的倒排列表的查詢在CPU上的性能更好
- 17. 與其他方法相比,opencpu.org的意圖是什麼?
- 18. 什麼是更好的:一個大的精靈或許多小
- 19. 什麼是更好的PHP,JSP或其他
- 20. 爲什麼我的頁面大小與維基百科相比如此之大?
- 21. 爲什麼Hadoop分佈式文件系統中的最後一個塊與其他塊的大小不同?
- 22. 刪除與短小精悍或其他aproach與性能和快
- 23. 什麼讓一些SSL證書比其他人「更好」?
- 24. 爲什麼我的分散代碼的性能比Vc SIMD好?
- 25. CUDA性能相對於每塊
- 26. JTransform的FFT與MATLAB相比的大小
- 27. C#形式顯示了大小比其他什麼設置
- 28. 更好的方法比如果其他如果...線性插值
- 29. 爲什麼沒有更好的表示浮點比符號和大小?
- 30. SQL Cross與常規聯接相比,加入性能更好嗎?
嘗試使用[Cuda佔用率計算器](http://developer.download.nvidia.com/compute/cuda/CUDA_Occupancy_calculator.xls)查看哪些塊大小最適合您的內核。它可能只是你寫的內核。儘管如此,根據我的經驗,blocksize 256確實常常是最佳選擇,只是巧合,但我還沒有找到任何解釋。 – aland