Этот вопрос закрыт для ответов, так как повторяет вопрос Как распараллелить тройной цикл for с помощью OpenMP?
@Sypok228

Как распараллелить цикл for с помощью OpenMP?

Помогите распараллелить с помощью OpenMP
for (i=0; i<N-1; i++) {
		for (k=i+1; k <= N-1; k++)
			for (j=i+1; j <= N; j++)
				A(k,j) = A(k,j)-A(k,i)*A(i,j)/A(i,i);
	}

	X[N-1] = A(N-1,N)/A(N-1,N-1);
	for (j=N-2; j>=0; j--) {
		for (k=0; k <= j; k++)
			A(k,N) = A(k,N)-A(k,j+1)*X[j+1];
		X[j]=A(j,N)/A(j,j);
	}
  • Вопрос задан
  • 394 просмотра
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Что за A(i, j)?
Похоже у вас там алгоритм Гаусса, и это должен быть массив.

Внешний цикл по i нельзя параллелить в Гауссе, а вот вычитание строк можно.
Допишите перед циклами по j и k это:
#pragma omp parallel for collapse(2)

В последних двух циклах тоже нельзя внешний цикл параллелить, ибо результат последующих вычислений зависит от предыдущих итераций. А вот перед внутренним циклом смело втыкайте #pragma omp parallel for.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы