我在使用CUDA處理圖像的項目中。該項目只是一個增加或減少圖像。使用CUDA實現,python(pycuda)或C++處理圖像?
請問你的專業意見,哪個最好,哪兩個的優缺點?
我很感謝大家的意見和/或建議,因爲這個項目對我來說非常重要。
我在使用CUDA處理圖像的項目中。該項目只是一個增加或減少圖像。使用CUDA實現,python(pycuda)或C++處理圖像?
請問你的專業意見,哪個最好,哪兩個的優缺點?
我很感謝大家的意見和/或建議,因爲這個項目對我來說非常重要。
一般回答:沒關係。使用你更熟悉的語言。
請記住,但是,pycuda僅僅是圍繞着CUDA C接口的包裝,所以它可能不會始終保持最新,也是它增加了錯誤的另一潛在來源,...
Python是擅長快速原型設計,所以我親自去Python。如果需要,您可以在以後隨時切換到C++。
如果你的管道的其餘部分是Python,並且你已經在使用Numpy來加快速度,pyCUDA是加速昂貴操作的一個很好的補充。但是,根據圖像大小和程序流的大小,使用pyCUDA可能不會獲得太多的加速。在數據量較大的PCI總線上來回傳輸數據時存在延遲。
在你的情況下(加法和減法),在pyCUDA中有內置的操作,你可以使用你的優勢。然而,根據我的經驗,將pyCUDA用於非重要的事情需要了解CUDA的工作原理。對於從沒有CUDA知識開始的人來說,pyCUDA可能是一個陡峭的學習曲線。
Alex的回答是對的。包裝中消耗的時間量很小。請注意,PyCUDA有一些很好的元編程構造,用於生成可能有用的內核。
如果您所做的只是添加或減少圖像的元素,您可能完全不應該使用CUDA。通過PCI-E總線來回傳輸所花費的時間將會大大節省您從並行性中獲得的節省量。當你處理CUDA時,考慮CGMA比率(計算全局內存訪問比率)是有用的。對於2次存儲器訪問(1次讀取和1次寫入),您的加/減操作只有1次浮點操作。從CUDA的角度來看,這最終是非常糟糕的。
非常感謝你的啓發! – ardiyu07 2011-02-11 15:48:38