многопоточность — Noob C ++ / OpenMP: почему я получаю эту ошибку времени компиляции? переменная в предложении «сокращения» должна быть общей в окружающем контексте

 1 int result = 0;
2 int b = 0;
3 #pragma  omp for reduction(+:result) private(b)
4 for(int i = 0; i < size; i++) {
5    ifile >> b;
6    if(b== 100)
7      result++;
8 }

Почему я получаю эту ошибку?

(3) ошибка C3037: «результат»: переменная в предложении «сокращение» должна быть общей в окружающем контексте

Я пробовал гуглить кстати … все примеры выглядят так. Я также пишу код в Visual Studio 2012, если это имеет значение. Я ненавижу задавать подобные вопросы, но это мешает мне продолжать.

Исправлено: добавить параллель

#pragma omp parallel for private(buffer) reduction(+:result)

2

Решение

Вы пропускаете «параллельный» тег из предложения сокращения:

#pragma  omp for reduction(+:result) private(b)

должно быть

#pragma omp parallel for reduction(+:result) private(b)
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]