2 つの Matlab 関数を並行して実行する必要があります。問題は、それらからの結果の取得が実行よりもはるかに遅いことです。
最初の方法:
spmd;
if labindex==1,
K=MatricaK(NP, NE, r, Kxx, N, h, 1); %K is 1000x1000 matrix
end;
if labindex==2,
F=Apkrovos(NP, NE, N, r, Ta, h, 1); %F is 1000x1 vector
end;
end;
%This part is quite fast, around 0.17s.
K=K{1};
F=F{2};
%This part is very slow, around 1.15s.
2 番目の方法:
parfor i=1:2
if i==1
K=MatricaK(NP, NE, r, Kxx, N, h, 1); %this way doesn't return K outside the loop, but very fast, around 0.15 for all loop
..
K{i}=MatricaK(NP, NE, r, Kxx, N, h, 1); %this works, but slow, around 1.5s
..
K = [K MatricaK(NP, NE, r, Kxx, N, h, 1)]; %also works, but slow, around 1.5s
...
end;
結果を速く返すにはどうすればよいですか? 同時に 3 つの異なる関数を実行する MATLAB の並列プログラミングを見つけましたが、速度については何もありません。