1. 程式人生 > >23. matlab平行計算原理以及parpool函式

23. matlab平行計算原理以及parpool函式

 宣告: 因電腦問題, 只做記錄,以後嘗試。

出處:

Matlab並行運算 - wenyusuran的專欄 - CSDN部落格
https://blog.csdn.net/wenyusuran/article/details/28901727

 

(1)matlab並行運算函式

 最初的matlab並行的運算函式是:       matlabpool

而後淘汰了matlabpool函式,轉為使用parpool函式

本人使用為matlab2016b

(2)matlab並行原理:

Matlab的平行計算實質還是主從結構的分散式計算。當你初始化Matlab平行計算環境時,你最初的Matlab程序自動成為主節點,同時初始化多個(具體個數手動設定,詳見下文)Matlab計運算元節點。Parfor的作用就是讓這些子節點同時執行Parfor語句段中的程式碼。Parfor執行之初,主節點會將Parfor迴圈程式之外變數傳遞給計運算元節點。子節點運算過程時互不干擾,運算完畢,則應該有相應程式碼將各子節點得到的結果組合到同一個陣列變數中,並返回到Matlab主節點。當然,最終計算完畢應該手動關閉計運算元節點。
--------------------- 
作者:文宇肅然 
來源:CSDN 
原文:https://blog.csdn.net/wenyusuran/article/details/28901727 
(3)初始化matlab平行計算環境

這裡講述的方法僅針對多核機器做平行計算的情況。

設機器的CPU核心數量是CoreNum。雙核機器的CoreNum2,依次類推。CoreNum不等於核心數量,但是如果CoreNum小於核心數量則核心利用率沒有最大化,如果CoreNum大於核心數量則效率反而可能下降。因此單核機器就不要折騰平行計算了,否則速度還更慢。

檢視CPU的核數:-----系統資訊檢視

也就是實際上雙核--邏輯上分了四個執行緒(2個核心,四個邏輯處理器)

                      尷尬-----------似乎並行了效率會更差啊-----------------

一程式碼初始化Matlab平行計算環境:

%Initialize Matlab Parallel Computing Enviornment by Xaero | Macro2.cn

CoreNum=2; %設定機器CPU核心數量,我的機器是雙核,所以CoreNum=2

if matlabpool('size')<=0 %判斷平行計算環境是否已然啟動

matlabpool('open','local',CoreNum); %若尚未啟動,則啟動並行環境

else

disp('Already initialized'); %說明並行環境已經啟動。

end
--------------------- 
作者:文宇肅然 
來源:CSDN 
原文:https://blog.csdn.net/wenyusuran/article/details/28901727 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

 

以下內容參看: 

Matlab並行運算 - wenyusuran的專欄 - CSDN部落格
https://blog.csdn.net/wenyusuran/article/details/28901727