2013年1月29日 星期二

Matlab 的GPU與平行計算 (GPU and parfor) Matlab Parallel Computing

Matlab Parallel Computing
平行計算已經在資訊界發展很久從電腦式的分散系統,到現在因為多核心處理器的原因,可以在個人電腦上簡單的使用平行運算,在MATLAB裡面最主要的兩個平行計算一個是GPU計算一個是parfor,兩者的目的都是為了減少計算時間,但所運行的環境不一樣。

MATLAB在GPU的使用一定要有一塊NVIDIA的顯示卡,ATI可以嗎? (在MATLAB的發展沒有比NVIDIA好)
首先要在這裡查詢你的顯示卡是不是適合
https://developer.nvidia.com/cuda-gpus
選擇的顯示卡記憶體要越大越好,因為GPU的運算是利用顯示卡以及他的記憶體在做運算的,所以顯示卡的記憶體越大越不會out of memory。


ParFor的使用就是運用電腦的多核心來計算,所以核心數目越多就可以越分散,可以把一個核心當成一台電腦來看有八核心就是八台電腦在運算。

如何分辨要使用ParFor跟GPU,
簡單的分類如果你的程式需要用到很多for而且每一個for的使用都是一段連續的那就可以考慮使用ParFor的運算 舉一個例子

你可能在切蛋糕 蛋糕都是一樣的 但有一百個 所以你就可以把蛋糕分給4個人 每一個人切25個 這就是使用parfor的概念 原本一個人重複切100個 丟給四個人切 一個人切25個就又快又好了。


而GPU的使用是在於你有頗多的計算步驟,顯示卡的運算環境又可以容納你所指配的變數大小,那這時候丟到GPU計算就會顯示出效果,比如說你要算20個運算符號的方程式,這時侯就可以考慮丟到GPU裡面去算。

或是 有兩個 200*200的矩陣大小要做反矩陣的運算 這時候GPU就是最好的計算環境。

計算時間成本,無論你使用GPU或是PARFOR都有計算成本,PARFOR在事前需要打開MATLABPOLL多核心執行指令,GPU需要將變數從電腦的記憶體輸送到顯示卡的記憶體,因此如果計算量不是很大是不需要用這兩個工具來做運算的,尤其在GPU運算更不能夠重複的搬進搬出記憶體,這樣耗費的時間會遠比你計算的時間多很多。

沒有留言: