2011-02-11 115 views

回答

6

一般回答:沒關係。使用你更熟悉的語言。

請記住,但是,pycuda僅僅是圍繞着CUDA C接口的包裝,所以它可能不會始終保持最新,也是它增加了錯誤的另一潛在來源,...

Python是擅長快速原型設計,所以我親自去Python。如果需要,您可以在以後隨時切換到C++。

+0

非常感謝你的啓發! – ardiyu07 2011-02-11 15:48:38

3

如果你的管道的其餘部分是Python,並且你已經在使用Numpy來加快速度,pyCUDA是加速昂貴操作的一個很好的補充。但是,根據圖像大小和程序流的大小,使用pyCUDA可能不會獲得太多的加速。在數據量較大的PCI總線上來回傳輸數據時存在延遲。

在你的情況下(加法和減法),在pyCUDA中有內置的操作,你可以使用你的優勢。然而,根據我的經驗,將pyCUDA用於非重要的事情需要了解CUDA的工作原理。對於從沒有CUDA知識開始的人來說,pyCUDA可能是一個陡峭的學習曲線。

2

看看openCV,它包含了大量的圖像處理功能和所有助手來加載/保存/顯示圖像和操作相機。

它現在還支持CUDA,一些圖像處理功能已在CUDA中重新實現,併爲您提供了一個很好的框架。

+0

一個驚人的參考!謝謝! – ardiyu07 2011-02-11 18:50:32

0

Alex的回答是對的。包裝中消耗的時間量很小。請注意,PyCUDA有一些很好的元編程構造,用於生成可能有用的內核。

如果您所做的只是添加或減少圖像的元素,您可能完全不應該使用CUDA。通過PCI-E總線來回傳輸所花費的時間將會大大節省您從並行性中獲得的節省量。當你處理CUDA時,考慮CGMA比率(計算全局內存訪問比率)是有用的。對於2次存儲器訪問(1次讀取和1次寫入),您的加/減操作只有1次浮點操作。從CUDA的角度來看,這最終是非常糟糕的。