2016-10-18 10 views
1

誰かがopenmpでfirstprivateの例ができるかどうか知っていますか?OpenMP Firstprivate句

rowstr[0] = 0; 
for (j = 1; j < nrows+1; j++) { 
    rowstr[j] = rowstr[j] + rowstr[j-1]; 
} 
nza = rowstr[nrows] - 1; 

FIRSTPRIVATE変数はrowstrあるとjはプライベート変数です。

答えて

0

あなたはFIRSTPRIVATE句を使用している場合、一部の値が明確化、更新されることはありませんと同じように実際に、あなたはあなたの出力に矛盾を有していてもよくない。

のは、それは大きさ4の配列だとあなたは、2つのスレッド、スレッドを1つ持っているとしましょうあなたは反復0と1、もう1と2は完璧な世界で得られます。 firstprivate句を使用すると、2番目のスレッドは配列の位置2を最初の配列の位置1に加算しますが、シーケンシャルバージョンの場合と同じように前の繰り返しと加算します。

この特定のループには依存関係の問題があり、nzaでの合計削減のようなものを使用する必要があります。