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)
Вы пропускаете «параллельный» тег из предложения сокращения:
#pragma omp for reduction(+:result) private(b)
должно быть
#pragma omp parallel for reduction(+:result) private(b)
Других решений пока нет …