このテスト Matlab スクリプト ファイルを作成しました。
numbers = [29 37 44 54 62];
for i=1:length(numbers)
fprintf('%d\n', numbers(i));
end
fprintf('***\n');
matlabpool local 5;
parfor i=1:length(numbers)
fprintf('%d\n', numbers(i));
end % image loop
fprintf('***\n')
for i=1:length(numbers)
fprintf('%d\n', numbers(i));
end
matlabpool close;
fprintf('***\n');
for i=1:length(numbers)
fprintf('%d\n', numbers(i));
end
実行すると、一貫して次の出力が得られます。
29
37
44
54
62
***
112
111
107
117
115
***
29
37
44
54
62
***
29
37
44
54
62
fprintf
ブロック内には一見ランダムな数字のparfor
セットが表示されますが、常に同じ (112、111、107、117、115) です。なぜこれが起こっているのかについて何か考えはありますか?
アップデート
興味深いことに、これはコマンド ラインからスクリプトを実行した場合にのみ発生します。
matlabR2012b -nodesktop -nosplash -nodisplay -r "run parfortest.m; exit"
最初に Matlab セッションを開いてparfortest
そこで実行すると、数値が正しく出力されます。