は、私はMATLABでこのコードがあるとします。並列計算(MATLAB)の乱数ジェネレータ、並列ループごとに異なる初期乱数?
% Predefined data
SX = [1, 2, 3, 4];
parfor xx = 1:4
naming2 = SX(xx);
[BestM, BestX{xx}, fina_M{xx}, final_D{xx}, BestAA{xx}, final_Data{xx}] = Optmz(naming2, v_data);
end
Optmz
は、最適化アルゴリズムです。この最適化アルゴリズムは、回帰モデルを最適化するために実行する必要があります(異なる出力と最適化された入力 - 特徴選択を使用します)。ヒューリスティックな最適化アルゴリズムは、乱数に基づいています。 parlor
ループごとに異なる初期乱数がありますか?これは私のアプリケーションの時間を短縮するための適切な構造ですか?私は現在、上記の構造にループfor
を使用しています。
これは印刷された出力の一部です。反復はソートされません。何の問題?上記のコードに基づいて、私たちは同じ数の4つの反復を持つべきです。最初の乱数発生器が異なる4人すべての労働者で、合計の計算が必要です。たとえば、並列計算を行わずに順番に計算を実行するような方法です。最初の1つ、2つ目、3つ目、最後に4番目を実行します。
******Iteration 24, Best Cost = 0.041201******
******Iteration 26, Best Cost = 0.034994******
******Iteration 26, Best Cost = 0.036624******
******Iteration 26, Best Cost = 0.039317******
******Iteration 25, Best Cost = 0.039584******
******Iteration 27, Best Cost = 0.034994******
******Iteration 27, Best Cost = 0.036624******
******Iteration 27, Best Cost = 0.039317******
******Iteration 28, Best Cost = 0.034994******
******Iteration 26, Best Cost = 0.039242******
******Iteration 28, Best Cost = 0.036624******
******Iteration 28, Best Cost = 0.03931******
******Iteration 29, Best Cost = 0.034994******
******Iteration 29, Best Cost = 0.036624******
******Iteration 27, Best Cost = 0.039048******
******Iteration 29, Best Cost = 0.03931******
******Iteration 30, Best Cost = 0.034994******
******Iteration 30, Best Cost = 0.036624******
******Iteration 28, Best Cost = 0.039048******
@ MZimmerman6私たちはすべてのパーラーループで異なる初期乱数を持っていますか?これは私のアプリケーションの時間を短縮するための適切な構造ですか?反復はソートされません。何の問題? – user2991243
'parfor'ループでは、アクセスされたインデックスは決して順番になることは決してありません。順序と並行処理を保証するのは通常矛盾です。 – rayryeng
反復の順番が間違っているかどうかを確認する場合は、@rayryengによると、何らかの順序を保証することはほとんど不可能です。このため、コードが特定の順序で処理されていないかどうかを気にしないようにコードを設計する必要があります。 – MZimmerman6