100個の並列処理(parfor)の複数個が処理されません
Afficher commentaires plus anciens
計算時間削減のため、並列処理(parfor)でbatファイルを100回実行したいと考えています。
下記のようなコードで実行したところ、エラーは出ませんが15~16個実行されていません。
(実行された場合、実行結果ファイルが複数個出力されるのですが、15~16個出力されていませんでした。)
解決策をご存じであれば、教えていただきたいです。
行いたい処理イメージ
1. 事前に作成したdatファイル(ex_1.dat,ex_2.dat.....ex_100.dat)の名前をcell配列として取り込んだbatファイルの指定行に書き込む
2. main.batを実行する
3. すべての番号(1から100まで)で出力結果を得る
% 繰り返し回数
N = 100;
% batファイルの行数
bat_row_size = 24;
% batファイルの名前書き換えに必要なもの
case_name = "ex_";
set = "set";
CASE = "CASE=";
parfor i = 1:N
% 現在の番号を変数に保存
number_N = num2str(i);
% batファイルをcell配列として読み込み
fid = fopen('main_ori.bat');
bat_j = 1;
bat = cell(bat_row_size,1);
while (~feof(fid))
tline = fgetl(fid);
bat{bat_j,:} = tline;
bat_j = bat_j + 1;
end
% main.batファイル内のケース名を書き換え
casename = append(set,' ',CASE,case_name,number_N);
bat(9,1) = cellstr(casename);
% batファイルをFiletypeオプションで、テキストファイルだと設定する
writecell(bat, 'main.bat','FileType','text')
% FEM実行
system('main.bat');
end
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur スクリプト dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!