Задать вопрос
@RadioRedFox
Java, Android, Python, SQL

Почему получается разный результат с использованием OpenMP?

Есть программа

#pragma omp for 
			for (size_t i = 0; i < layers.size(); ++i)
				//code


Программа даёт такой же результат как и при последовательном запуске.

Но

#pragma omp parallel num_threads(8)
		{
#pragma omp for 
			for (size_t i = 0; i < layers.size(); ++i)
				//code
		}


Даёт другой результат, хотя смысл то тот же.
С чем это может быть связано?
Барьерами код обставлен.
Код в цикле меняет значение переменной в классе, но все ячейки затрагиваются разными тредами и память не перераспределяется.
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Сложный 2 комментария
Решения вопроса 1
@RadioRedFox Автор вопроса
Java, Android, Python, SQL
Roman,
Вы идеально ответили на мой вопрос.
Конструкция #pragma omp for не распараллеливает без #pragma omp parallel
Значит даёт такой же результат как в последовательном запуске -> значит ошибка действительно где с соревнованием в записи/доступе.
Спасибо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы