我需要並行化代碼以節省時間。我有一個內部到另一個循環的循環,我想並行化外部循環(因爲我認爲這樣代碼更快)。我的代碼如下所示:在外部使用parfor的雙循環錯誤
A = rand(1000,1);
B = rand(1000,1);
Biggers = zeros(1000,1000);
parfor i = 1:size(A,1)
for j= 1:1:size(B,1)
if B(i,1) > A(j,1)
Biggers(i,j) = A(j,1);
end
end
end
,但如果我運行它這樣,我得到的錯誤:
Error: The variable Biggers in a parfor cannot be classified.
See Parallel for Loops in MATLAB, "Overview".
,如果我不是並行的內部循環,也就是說,如果設計的代碼這種情況不會發生如:
A = rand(1000,1);
B = rand(1000,1);
Biggers = zeros(1000,1000);
for i = 1:size(A,1)
parfor j= 1:1:size(B,1)
if B(i,1) > A(j,1)
Biggers(i,j) = A(j,1);
end
end
end
我不明白,爲什麼在第一種情況下Biggers
不被視爲一個切片變量,因爲每個工人只專注於我行變量。
我該如何解決問題?