cuda程式該如何優化?

時間 2021-06-03 12:56:01

1樓:譚偉

多執行緒並行訪問乙個大陣列,matrix vector multiply就是這種型別的操作,方法是矩陣(被當作乙個大陣列)放global memory。因為沒有重用,所以你coalesced access global memory就可以,也只能如此。你的問題,似乎是(1)順序訪問乙個index陣列,然後 (2) 用index陣列的值隨機訪問另乙個value陣列。

對index陣列的訪問可以是coalesce的,而對value陣列的訪問則無法做到。如果value陣列不太大,可以fit進L2 cache的話,可以試著enable L1 cache,用__ldg指令。這樣L1+L2可以作為coalescing cache。

總的來說,這個問題幾乎沒有computation,所以肯定是memory bound的。而memory訪問又比較隨機,所以頻寬的利用是關鍵。

另外,似乎這種處理器更適合automata這種workload:AP Portal

如何優化fortran程式,使之占用的記憶體減少?

程式上一般就是動態分配記憶體,並及時釋放。主要手段在優化演算法上。比如使用查詢表之類的方法壓縮冗餘的資料儲存,使用新的演算法等等。對使用不頻繁的大量資料可以先寫入硬碟中。但是記憶體占用和計算效率往往是矛盾的,需要綜合考量。其實記憶體現在已經很便宜了,有時加大記憶體也是不錯的選擇。如果記憶體佔用量超過...

如何評價 cudnn 和 cuda 的關係?

霸王手槍腿 首先,CUDA是C語言在GPU程式設計上的的拓展包,CUDNN是封裝了卷積等運算元的庫,不是乙個層面的東西。其次,這二者的關係,CUDA可以用來實現cudnn定義的各種介面,早期CUDNN應該內部是用CUDA實現的,但隨著英偉達軟體生態的發展,CUDNN團隊一定會選擇用更底層,更靠近硬體...

程式設計師該如何養生?

高強度?是996還是997?這種強度還是不要妄想養生了。本來還想說多出去吃飯,不要整天在辦公室 熬夜補充維生素之類。996 997直接 跑步,保證有氧運動時間每週150分鐘,emmmm具體說華爾街那幫人每天是60分鐘,他們的強度基本上和碼農差不多。 我欠了特別多問題,今天來答一波 我多多少少了解程式...