我正在尝试编译以下代码:
#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
因为编译器需要预先计算分配给每个线程的迭代次数。但是我不明白为什么在这种情况下会出现这种限制。有什么线索吗?
编辑:即使我做了for(i = 0; i != 100; i++)
,尽管我可以放“ <”或“ <=”。