2017-01-17 3 views
-3

私はMatlabの並列計算にparforを使用しています。私はこのコマンドに慣れていません。それが可能なら、私のコードを見て、私がparforで書くことができるかどうか教えてください。エラー: 変数pyraが使用されるため、parforループを実行できません。matlabでのparforループの使用

parfor i = 1:inter 
    scaled = resize(im, 1/sc^(i-1)); 
    pyra.feat{i} = descripteurs(scaled,class); 

    pyra.scale(i) = 1/sc^(i-1); 

    for j = i+inter:inter:max_scale 
    scaled = reduce(scaled); 
    pyra.feat{j} = descripteurs(scaled,class); 
    pyra.scale(j) = 0.6 * pyra.scale(j-inter); 
    end 
end 
+1

'parfor'ループ内での変数の使用について、Mathworks自身の[詳細なドキュメント](https://www.mathworks.com/help/distcomp/variables-in-parfor-loops.html)から始めてください。 – Suever

+0

Iドキュメントに示されているように変更を進めようとしましたが、まだ問題があります。 – dido

+0

どうすればこの問題を解決することができますか? – dido

答えて

0

問題がparforループを通る各反復は、ループの他の反復に依存するので、あなたのコードは並列化ではないであるということです。

具体的には、外側のループを介して以前の繰り返しで計算された内側ループ内からpyra.scaleの値にアクセスしようとしています。このため、parforループの各反復の実行は以前の反復に依存するため、2つの反復を同時に(同時に)実行することはできません。

parforループで変数を使用する方法の詳細については、the documentationを参照してください。

関連する問題