我试图编译以下代码:
#pragma omp parallel shared (j)
{
#pragma omp for schedule(dynamic)
for(i = 0; i != j; i++)
{
// do something
}
}
但我收到以下错误:错误:无效的控制谓词。
OpenMP 标准规定,对于构造函数,parallel for
它“仅”允许以下运算符之一:<
, <=
, >
>=
.
我不明白不允许的理由i != j
。我可以理解,在 的情况下static schedule
,因为编译器需要预先计算分配给每个线程的迭代次数。但是我不明白为什么在这种情况下会出现这种限制。有什么线索吗?
编辑:即使我 make for(i = 0; i != 100; i++)
,虽然我可以放 "<" 或 "<=" 。