2009年12月8日 星期二

如何將影像處理程式改寫為CUDA程式

這裡提出我遇到問題時找到的原則:

1.保留原程式結構,先找出最多層for的地方,先將這個函式GPU化。

2.找出要GPU化的函式所要的輸入及輸出資料。從個別處理改為表格化資料,因為要展成並行處理。

3.找出各for對應的並行層。
  就是將各for展成threadIdx及BlockIdx。
  和圖檔長寬相關的for主要以BlockId.x及BlockId.y做分配。因為這二個系統變數可用範圍最大。

4.先產生CPU可執行函式取代,用以分離函式準備GPU化。但可以驗證及除錯。

5.驗證成功後,GPU化的程式再試。

6.針對GPU結構開始最佳化。在CPU的GPU版本上做除錯及驗證。

7.完成關鍵的CPU轉GPU函式,再找需要做的部分進行合併。

實際上執行仍有許多問題要克服,解決了再整理。

沒有留言:

張貼留言