Выскажите ваше мнение о параллельной версии кода. Будет ли работать? Можно ли осуществить более эффективное распараллеливание?
Прямой ход
Код:
for( k=0; k<n; ++k ) {
#pragma omp parallel for private(i,j,koef) shared(n,k)
for( i=k+1; i<n; ++i){
koef = -a[i][k]/a[k][k];
for( j=k; j<=n; ++j ){
a[i][j] += koef*a[k][j];
}
}
}
Обратный
Код:
x[n-1]=a[n-1][n]/a[n-1][n-1];
for( k=n-2; k>=0; k-- ) {
x[k] = a[k][n];
#pragma omp parallel for shared(n,k) private(j)
for( j=k+1; j<n; ++j ){
x[k] -= a[k][j]*x[j];
}
x[k] /= a[k][k];
}