2013-01-31 41 views
-1

我的程序有一堆矩陣乘法和反轉,這很耗時。想要提高矩陣計算,OpenMP或CUDA的運算速度嗎?

我的電腦:CPU:intel i7; GPU:512MBNVIDIA®Quadro®NVS3100M

哪一個更適合提高計算速度? OpenMP或CUDA?

(PS。我普遍認爲,GPU比CPU更多的內核,因此,CUDA可提高比OpenMP的更多多次?)

+2

您應該嘗試它們並進行基準測試。 –

+0

是的,但是我會在1年多前學習一點CUDA,並且不瞭解OpenMP。學習OpenMP需要多長時間? – lightrek

+1

我希望你會使用優化庫tbh。 –

回答

1

從我的經驗(作爲一個學校項目工作,在大多數情況下,一箇中等大小的數組的計算時間,我會說不到2000 * 2000,幾乎是相同的,實際的計算時間取決於您的計算機的工作負載(通常當你在openMP上工作時,你會與其他人共享一個集羣,所以確保你單獨運行你的應用程序,這樣你可能會得到更好的結果))

但是,如果你擅長CUDA,GPU是這些計算的東西非常強大,當我在做我的工作時CUDA項目,官方網站上有很多很好的資料。對於openMP,它只是一個庫,如果你擅長c或C++,不應該對你使用它有任何問題(但是openMP的編譯器是錯誤的,不要相信它,嘗試記錄任何東西)。

而且我假設你有CUDA的經驗,不難找到一些我認爲很好的例子。但CUDA真的是虛擬的,無法調試,所以我建議您先嚐試openMP,它應該更容易。

+1

當然可以調試CUDA! Nvidia也爲cuda-gdb提供了強大的gui,你可以在visual studio或eclipse中使用eclipse! – hubs

1

我想這取決於你的應用是什麼,你如何去試圖實施改進。請記住,每個優化都有折衷。例如,GPU通常使用半精度浮點,並且有編譯器選項允許您繞過IEEE標準的某些方面,這會以犧牲精度等爲代價帶來一些額外的速度。

+1

CUDA現在已經有了很長時間的雙精度。我覺得這有點不可回答,它基本上是說「取決於」,而沒有給出它所依賴的合理標準。 – us2012

+0

的確如此,儘管標準應該是原始問題的一部分;沒有這些,就沒有辦法知道使用哪種「正確」的技術。 –