Как упоминалось в предыдущих комментариях, переменные i
и j
не объявляются в операторах l oop. Поскольку компилятор позаботится о переменной l oop i
, установив для нее значение private, но не j
, внутренняя переменная l oop используется совместно, что приводит к фальсификации результата. Один из способов исправить это будет:
#pragma omp parallel for default (none) private(temp, i, j) shared(a, b, c, d)
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
temp = b[i] * c[j];
a[i][j] = temp * temp + d[i];
}
}