MATLAB 平行計算
阿新 • • 發佈:2020-08-25
主要函式:parfor
並行 for 迴圈
說明:
parfor LoopVar = InitVal:EndVal; Statements; end
在生成的 MEX 函式中或在共享記憶體多核平臺上並行執行的 C/C++ 程式碼中建立一個迴圈。
parfor 迴圈對 InitVal 和 Endval 之間的 LoopVar 值執行 Statements。LoopVar 指定由整數值組成的向量,這些值按 1 遞增。
parfor (LoopVar = InitVal:EndVal, NumThreads); Statements; end
在建立並行 for 迴圈時,最多使用 NumThreads 個執行緒。
寫法案例:
parfor rowIndex=1:regionRow point=cell(regionCol,4); for colIndex=1:regionCol disp(['rowIndex =',num2str(rowIndex),'colIndex =',num2str(colIndex)]); mdl = stepwiselm(full,pointLpmay{rowIndex,1}{colIndex,1},'quadratic','Verbose',0); point{colIndex,1}=mdl.Formula.Terms; % 方程的項與結構 point{colIndex,2}=mdl.Coefficients.Estimate; % 方程項的係數 point{colIndex,3}=mdl.Rsquared.Ordinary; % 判定係數 point{colIndex,4}=mdl.Rsquared.Adjusted; % 調整判定係數 end pointLpmaA{rowIndex,1}=point; end
注意:
此種方法開啟並行預設使用最大執行緒數,而MATLAB預設允許的最大執行緒數為12,若計算機的真核數量超過12,可以用以下方式進行擴充套件:
%%% 設定MATLAB可以聯通24個執行緒(否則預設最大執行緒為12) %%% c = parcluster('local'); c.NumWorkers = 24; parpool(c, c.NumWorkers);
已經開啟並行工具箱之後,若要重新開啟,需要先關閉之前的並行,再開新的,關閉方法如下:
delete(gcp('nocreate'))
參考資料:
https://ww2.mathworks.cn/help/coder/ref/parfor.html?s_tid=srchtitle