最近在使用matlab計算矩陣的特徵值時,遇到很大的困難,對於乙個30000*30000的矩陣,特徵值計算一次需要花近三個小時,
矩陣是非常稀疏(且有乙個零特徵根)的,將矩陣轉成稀疏矩陣形式後,只算最小的幾個特徵值,速度上很快,但是每次算出來的特徵值都不一樣。
不知道原因出在**,可能跟矩陣有乙個零特徵值有關吧。把 matlab help 文件中的 eigs 例子運算一遍 ,結果每次都是一樣的,然而將例子中的稀疏矩陣某一行改為全零(相應的 這時矩陣必有乙個零特徵值),得到的特徵值也開始變化。所以感覺跟矩陣有零特徵根有關。
而在網上查閱資料,發現matlab 也可以呼叫gpu對矩陣運算進行加速。
用法如下:
1. 先在命令列 輸入,
gpudevice
檢視自己的電腦gpu的型號。
2. 將矩陣轉化為gpuarray格式,
如:假設現在已經初始化了乙個矩陣(x),
gx = gpuarray(x)
上面的命令將 x 轉化為 gpu 可進行計算的格式, gx。
然後可以在命令列輸入:
doc gpuarray
檢視這一格式對應的內建函式,選擇自己需要的函式,就可以進行計算了。
Matlab 使用GPU進行濾波運算
從matlab2013版本開始,matlab將可以直接呼叫gpu進行平行計算,而不再需要安裝gpumat庫。這一改動的好處是原有的matlab內建函式都可以直接運用,只要資料格式是gpuarray格式的,那麼計算過程會自動的呼叫gpu進行計算 具體操作起來,只要知道下面幾個函式就可以像編寫簡單的m檔...
Matlab之GPU加速方法
複雜 加速方法 matlab目前只支援nvidia的顯示卡。想知道自己的電腦有沒有這個能力,在matlab中執行gpudevice。只要資料格式是gpuarray格式的,那麼計算過程會自動的呼叫gpu進行計算。x rand 10,single 定義在cpu上的乙個10x10的隨機初始化陣列 gx g...
matlab練習程式(GPU加速)
在matlab中使用gpu,要先輸入gpudevice命令初始化一下裝置。根據返回的資訊能夠大概估算出視訊記憶體支援的最大資料。否則使用時容易出現下面這樣的問題 錯誤使用 gpuarray an unexpected error occurred during cuda execution.the ...