針對在實時選幀演算法並行開發中,總結如下:
1.實現共享記憶體優化,規約法求和(再優化,單遍規約、注意二次呼叫規約時要考慮塊內線程數是否為2的指數)。
2.**中,再global內部寫global實現多級並行策略。
3.4.由於並行不方便除錯,在除錯時,可以在核函式中限制輸出乙個執行緒執行下的變數值,進行驗證。
5.6.核函式呼叫核函式,多級並行(已試驗很慢,100幀的資料量效果特別差。另外,100幀影象的for迴圈要盡量放在核函式內部(因為呼叫100次核函式很費時))。
7.多gpu(可以結合mpi策略)。
8.npp、thrust(可以用,結果一定要用主機記憶體儲存,不能用裝置記憶體。目前試驗比較慢)、cublas庫進行優化。
9.10.排序演算法可以並行優化。
11.每個塊的最優執行緒數配置及最優分執行緒塊數量(看收藏的csdn、cuda實戰書上有種方法可以試)。
13.零拷貝記憶體(看方部落格)、頁鎖定記憶體(可以用,速度有點提高)、流。
14.執行速度和影象的解析度大小有關嗎?並**況下涉及到求和運算就有關了,影象小-分塊少-求和快。
15.16.所有求概率的演算法,把概率放到cpu來求應該會快一些。
CUDA並行程式設計學習心得1
正在學習cuda中,寫一些自己學習中的心得,如有錯誤,歡迎指正 對於普通變數 如int型,float型等 不必在device端事先分配空間。在global函式宣告時,不要宣告為指標,直接宣告為int或float。global函式呼叫時也是。如果要在device端以指標形式使用這個變數,如下 floa...
網路程式設計學習心得
unix struct in addr 32為的位址結構,是網路位元組序 struct sockaddr in s un b struct s un w u long s addr s un in addr,pin addr,far lpin addr union的作用是將大括號裡所有的東西的記憶體...
迴圈結構程式設計學習心得
迴圈結構的一些知識點 1 明確了迴圈條件和迴圈體,選擇while語句實現迴圈。2 迴圈結構四要素 迴圈初始化,迴圈條件,迴圈體,迴圈變數修改。3 可以把for語句改寫成while語句,for語句和while語句都能實現迴圈。for語句和while語句都是在迴圈前先判斷條件,只有條件滿足才會進入迴圈。...