В некоторых документах, связанных с OpenMP, говорится, что для обработки цикла OpenMP он должен быть «счетным», предоставляя различные определения для цикла «счетный»:
• the number of iterations in the loop must be countable
with an integer and loop use a fixed increment.
• the loop count can be “determined” ( what does it mean “determined”? )
Действительно ли это требование OpenMP? Или это требование конкретной реализации компилятора OpenMP?
Кроме того, может ли следующий цикл - не кажется счетным - быть распараллеленным с помощью OpenMP (обратите внимание, что вопрос в том, можно ли распараллелить код, а не в том, есть ли способ создать параллельный эквивалент этого кода)
for ( i = 0; i < cnt; )
{
x1 = 2.0 * x - 1.;
if ( x1 < 1.0 )
{
i = i + 3;
x = x*2.;
}
else // if ( x1 >= 1. )
{
i = i + 2;
x = x/2.;
}
}