MATLAB 平行計算效率很低,怎麼辦

時間 2021-05-31 00:02:34

1樓:海白菜

本人是做FDTD優化的,對matlab的並行運算折磨了很久。 具體到你的問題:

1. 只有兩個3000*3000的矩陣,通訊cost不是問題,非常小。

2.matlab的矩陣乘法和所有點運算都是多執行緒優化的,所以你的spmd的耗時正好是4倍。

3.對於乙個3000*3000的矩陣運算,GPU運算比CPU快的不是一點半點的。以我的經驗,矩陣運算尺寸100*100~1000*1000是CPU與GPU的運算能力的相交點(我的筆記本的cpu i7 6770,GPU NV960M)。

尺寸100一下果斷CPU+parfor,尺寸500以上,嘗試GPU。

4.對於你所需要的運算(隨機,矩陣乘法)已經是最基本的運算,不要指望能找到能優化的mex。

5.對於更普遍的問題,在運算中,我們經常需要其他的「常量」,如果這些常量比較大的話,是會嚴重影響parfor和GPU運算的。其中,parfor的comm cost 遠高於GPU。

總結起來:大尺寸用GPU,小尺寸的複雜運算用parfor,基礎運算啥也不用最快。

2樓:

因為這裡矩陣乘法本身就是多執行緒的,目前版本 MATLAB 大部分的內建數值計算函式也都是多執行緒的。

具體來說,MATLAB 的矩陣乘法在 intel CPU 上呼叫了 mkl 的多執行緒版本作為 BLAS

想更快的話可以考慮下 GPU 運算

如果理解平行計算中的參與者模式(Actor Model)?

就想吃西瓜 首先看訊息傳遞的兩種常見模型 同步訊息傳遞 CSP 和非同步訊息傳遞 Actor 在建立模型這個層次,主要考慮的是模型的證明 formal method 但是談論如何理解的話,就是如何構建乙個簡單抽象統一的Model和現實生活來對應。Actor Model其實非常好理解,就如同這個真實的...

GPU平行計算從08年開始已經差不多火了10多年了還能火多久?

麗台科技 老黃曾經在GTC大會上說過 過去整體行業都是依賴摩爾定律來推動,但它太老了,太慢了,GPU才是全新的 超級摩爾定律 GPU平行計算之所以能火一是因為並行度高,核心數遠遠多於CPU,任務併發度也遠高於CPU,二是記憶體頻寬高,三是執行速度快,GPU在浮點運算速度上有絕對優勢。在這個資訊爆發的...

為什麼用OpenMP平行計算會出現比單執行緒還要慢?該怎樣正確使用OpenMP?

風起花散 我曾經遇到過三種 一種是由於各個執行緒之間有共享的需要寫入的乙個變數,並行的時候發生了衝突。解決方法應該是對共享的變數加鎖。第二種就是上面所說的對於共享的變數加鎖,不過我用的是atomic原子操作測試的,而且迴圈體內就這一條語句,貌似是乙個迴圈裡面就一條相加的語句。這個程式邏輯上根本不是並...