Здравствуйте, barmale-y, Вы писали:
Во-первых, в reduction(data:max) вначале идёт операция, а потом список переменных.
reduction поддерживает только очень ограниченный набор операций, для более сложных нужно использовать ручное аггрегирование с помощью критической секции. Что-то в таком духе:
int main()
{
int max = 0;
int lmax;
# pragma omp parallel shared(max) private(lmax)
{
lmax = 0;
# pragma omp for
for (int i = 0; i < 1000000; ++i)
{
int sq = i * i;
if (sq > lmax)
lmax = sq;
}
# pragma omp critical
{
if (lmax > max)
max = lmax;
}
}
}