2012-03-16 141 views
6

在一些代碼中,我們需要爲對稱實矩陣(Ax = lamba Bx)的廣義特徵值問題獲得自動向量和自動值。此代碼使用LACPACK中的DSPGVX。我們希望使用MAGMA功能在GPU上加速。我們問的這個論壇,並得到了回答這個在GPU上計算特徵值和特徵向量的性能不佳

http://icl.cs.utk.edu/magma/docs/zhegvx_8cpp.html

我們的矩陣的大小(N)變爲100至50000,甚至更多,這涉及到一個分子的原子數。我們觀察到:

a)對於大於2500(約)的N,MAGMA不起作用;分段故障 b)MAGMA的運行速度總是比LAPACK的慢,大約慢了10倍

這種行爲是否正常,我們能克服嗎?任何人都可以報告任何有關這個類似問題的工作人員得到體面加速的參考嗎?

感謝

+3

你是什麼意思「不起作用」......它沒有運行?它是否會產生錯誤的結果,是否會在運行時崩潰和燒燬? – prelic 2012-03-16 19:06:16

+0

你在使用什麼GPU? – talonmies 2012-03-16 19:53:59

+0

特斯拉c2070與4GB內存 – flow 2012-03-16 19:58:05

回答

4

以我的經驗,你可能能夠通過切換到一個更好eigensolver獲得更大的性能優勢。我所知道的最好的求解器是ARPACK。例如,如果它們很稀疏,你會從矩陣中獲得最大收益。如果您只需要提取特徵對的總數的一小部分,則此解算器也是最有效的。

我會從CPU上運行的問題開始嘗試解決這個問題。您可能會發現,僅憑這一點就可以滿足您的需求。如果不是,則將ARPACK的計算內核移動到GPU相對比較容易。或者,可以使用並行版本的ARPACK。

+0

你認爲ARPACK可以應用於密集矩陣的情況嗎?如果是這樣,你能指出一些例子嗎?謝謝 – flow 2012-03-20 17:40:21

+0

它對矩陣的類型沒有任何假設。閱讀有關反向傳遞接口的信息,你會明白爲什麼會這樣。 – 2012-03-20 18:04:16

+0

你值得贏得賞金,不僅因爲你的鼓舞人心的答案,而且給出了你的優秀圖片,謝謝 – flow 2012-03-24 18:40:04

2

您是否試過CULA http://www.culatools.com/? CULA被Lapack轉換爲NVIDIA的CUDA,所以至少在理論上它應該是廣義特徵值問題的最佳實現之一。我認爲單精度版本是免費的,所以你可以試試看。

+0

我看了一下,但沒有看到與廣義特徵值問題的實現有關的任何信息。只有關於簡單特徵值問題的信息纔會在那裏報告,對嗎? – flow 2012-03-22 11:04:59

+2

@flow你說得對。我只使用CULA來求解對稱特徵值問題,而不是針對廣義問題。對不起,誤會。 – mmisu 2012-03-22 15:18:21