0
私はなぜ Matlabのparfor
で次のコードが動作しないのか、それを修正する方法を説明できますか?Matlabのparforの疑問?
R=10;
Power=zeros(2,R);
parfor s=1:R
Power(1,s)=1
Power(2,s)=2;
end
私はなぜ Matlabのparfor
で次のコードが動作しないのか、それを修正する方法を説明できますか?Matlabのparforの疑問?
R=10;
Power=zeros(2,R);
parfor s=1:R
Power(1,s)=1
Power(2,s)=2;
end
あなたは別の労働者に送られる1つの変数(power
)を持っていて、異なるコアを使用してそれを書きたいので、それは動作しません。
異なる変数を使って同じ変数に書き込む方法はありますか?誰がメモリを保管していますか?労働者はどこで書いたのですか?コードの構造は、並列計算を行うときに非常に重要です。なぜなら、どのようなメモリにどのワーカーを送るかを知っておく必要があるからです。変数を渡す際に間違ったアプローチを選択するだけで、コードを非並列のものよりも遅くすることができます。
あなたが表示されたコードに変更することができます:
R=10;
Power1=zeros(1,R);
Power2=zeros(1,R);
parfor s=1:R
Power1(1,s)=1
Power2(1,s)=2;
end
Power=[Power1;Power2]
私は、MATLABエラーにあなたを指示していること、特にvariable types in parfors、あなたはhttp://uk.mathworks.com/help/distcomp/parallel-for-loops-parfor.html に行き、「概念」のセクションを読むことをお勧め。