0

次のネストされたforループがあります。最初のループを並列化したいのですが、2番目のループを並列化してはいけません。したがって、各スレッドが2番目のループをそれ自体で実行するようにします。つまり、2番目のループは各スレッド(コード内の各「i」)に対して特別である必要があります。

どうやってやるの?

#pragma omp parallel for
    for (i=k+1;i<row;i++){
        for (n=0;n<k;n++){
           // #pragma omp atomic
            dummy += L[i][n]*L[k][n];
            L[i][k] = (A[i][k] - dummy)/L[k][k];
        }
        dummy = 0;
    }
4

1 に答える 1

1

プラグマは、omp parallel for直後のループにのみ適用されます。iループはスレッド間で分散されます。の各反復内でinループは同じスレッドで実行されます。あなたのコードはあなたがやろうとしていることをすでにやっています。

于 2012-04-07T07:50:19.473 に答える