MATLAB で「parfor」ル​ープをデバッグするこ​とはできますか?

2 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2025 年 6 月 3 日
回答済み: MathWorks Support Team 2025 年 6 月 3 日

現在「parfor」ループをデバッグするには「for」ループ内で「parfor」ループの重複コードを維持する必要があります。どのループを実行するかを決定するために、if 文を使用して parpool の存在を検出しています。コードを重複させずにこれを行う方法はありますか?

if ~isempty(gcp('nocreate'))
parfor ii=1:length(caseInputs)
myCodeStatements
end
else
for ii=1:length(caseInputs)
myCodeStatements % same code as above, I'd like to eliminate this
end
end

採用された回答

MathWorks Support Team
MathWorks Support Team 2025 年 6 月 3 日
次のコードは、MATLAB で "parfor" ループをデバッグするための回避策を示しています。
if ~isempty(gcp('nocreate')) debug = Inf; else debug = 0; end parfor (loopvar = 1:10,debug) pctfunction(loopvar); end function pctfunction(loopvar) disp(loopvar) % breakpoints can be set in here end
「parfor」に渡されるデバッグ値は「parfor」ループが実行されるワーカーの数を指定します。「0」が渡された場合「parfor」にはワーカーが割り当てられず「for」ループと同様に動作します。
「parfor」使用時にブレークポイントを設定するには、parfor ループから 2 つ目の関数を呼び出す必要があります。2 つ目の関数でブレークポイントを設定できます。ブレークポイントはデバッグ値が 0 の場合にのみ機能します。 

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange並列計算の基礎 についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!