Есть программа которая выполняет один и тот же блок с разными начальными параметрами (просчитывает результат столкновения частиц для диапазона начальных скоростей). В Внутри этого блока есть участок, который нужно вычислять строго последовательно (там решение ДУ конечно-разностным методом), поэтому мне нужно, чтобы каждый такой блок рассчитывался одним ядром процессора. Т.е. каждое ядро должно полностью выполнять такой блок для какой-то конкретной начальной скорости. У меня код выглядит примерно так:
#pragma omp parallel for
for (int k = 0; k < Nv; k++)
{
v = v0 + k*dv;
...
{кусок который нельзя вычислять параллельно}
...
}
Но в результате работы такого кода параллельно вычисляется весь блок, вместе с куском который нужно считать последовательно. (Без параллельных вычислений код работает как надо)
Как мне распределить этот цикл между ядрами чтобы каждая отдельная итерация выполнялась только одним ядром?