MATLAB で「parfor」ループをデバッグすることはできますか?
2 ビュー (過去 30 日間)
古いコメントを表示
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
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 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で 並列計算の基礎 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!