Я пытался скомпилировать следующий код:
#pragma omp parallel shared (j)
{
#pragma omp for schedule(dynamic)
for(i = 0; i != j; i++)
{
// do something
}
}
Я получаю эту ошибку: ошибка: неверный контроль предиката.
Я проверяю справочное руководство openMP , и он говорит, что для параллелизма для него "только" допускает один из следующих операторов: < <= → =.
Я не понимаю, почему не разрешить i != j
. Я мог понять, было ли это статическим расписанием, поскольку openMP необходимо предварительно вычислить количество итераций, назначенных каждому потоку. Но я не могу понять, почему это ограничение в таком случае, например. Любые подсказки?
EDIT: даже если я делаю for(i = 0; i != 100; i++)
, хотя я мог бы просто поставить "<" или "< =".