Tôi đã tạo thử nghiệm này Matlab script file:giá trị Vector khác nhau nếu truy cập bên ngoài hoặc từ bên trong parfor
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
Khi tôi chạy nó, tôi nhận được liên tục cho kết quả sau:
29
37
44
54
62
***
112
111
107
117
115
***
29
37
44
54
62
***
29
37
44
54
62
Các fprintf
trong khối parfor
in các tập số dường như ngẫu nhiên, tuy nhiên, luôn luôn giống nhau (112, 111, 107, 117, 115). Bất kỳ ý tưởng nào về lý do tại sao điều này đang xảy ra?
CẬP NHẬT
Điều thú vị đủ, điều này chỉ xảy ra nếu tôi chạy kịch bản từ dòng lệnh:
matlabR2012b -nodesktop -nosplash -nodisplay -r "run parfortest.m; exit"
Nếu đầu tiên tôi mở một phiên Matlab và chạy parfortest
ở đó, sau đó những con số được in đúng.
Thú vị - điều này không xảy ra với tôi. Bạn ở phiên bản nào? – jazzbassrob
'matlab pool' là gì? Tôi dường như không có giấy phép cho nó, nhưng sau khi tôi loại bỏ tôi nhận được cùng một số (mặc dù theo thứ tự ngược lại). – KronoS
'matlabpool' mở một nhóm công nhân để thực thi mã song song, không có nó,' parfor' là một 'for' đơn giản. – Oleg