matlab調用gpu進行矩陣運算

最近在使用matlab計算矩陣的特徵值時,遇到很大的困難,對於一個30000*30000的矩陣,特徵值計算一次需要花近三個小時,

矩陣是非常稀疏(且有一個零特徵根)的,將矩陣轉成稀疏矩陣形式後,只算最小的幾個特徵值,速度上很快,但是每次算出來的特徵值都不一樣。

不知道原因出在哪裏,可能跟矩陣有一個零特徵值有關吧。把 matlab help 文檔中的 eigs 例子運算一遍 ,結果每次都是一樣的,然而將例子中的稀疏矩陣某一行改爲全零(相應的 這時矩陣必有一個零特徵值),得到的特徵值也開始變化。所以感覺跟矩陣有零特徵根有關。

而在網上查閱資料,發現matlab 也可以調用GPU對矩陣運算進行加速。

用法如下:

1. 先在命令行 輸入,

gpuDevice
查看自己的電腦gpu的型號。

2. 將矩陣轉化爲gpuArray格式,

    如:假設現在已經初始化了一個矩陣(X),

GX = gpuArray(X)

面的命令將 X 轉化爲 gpu 可進行計算的格式, GX。

然後可以在命令行輸入:

doc gpuArray

查看這一格式對應的內置函數,選擇自己需要的函數,就可以進行計算了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章