C++ 具有非常量值的的的OpenMP已崩溃

C++ 具有非常量值的的的OpenMP已崩溃,c++,performance,parallel-processing,openmp,C++,Performance,Parallel Processing,Openmp,Disclamer:正如您将看到的(在我看来),这个问题与或无关 我有以下代码: std::vector<Wrapper> localWrappers; std::vector<float> pixelDistancesNew; std::vector<float> curSigmas; //fill the 3 vectors #pragma omp parallel for collapse(2) schedule(dynamic, 1) for(int

Disclamer:正如您将看到的(在我看来),这个问题与或无关

我有以下代码:

std::vector<Wrapper> localWrappers;
std::vector<float> pixelDistancesNew;
std::vector<float> curSigmas;
//fill the 3 vectors
#pragma omp parallel for collapse(2) schedule(dynamic, 1)
for(int i=0; i<localWrappers.size(); i++)
  for (int r = par.border; r < (localWrappers[i].cur.rows - par.border); r++)
    for (int c = par.border; c < (localWrappers[i].cur.cols - par.border); c++) {
      const float val = localWrappers[i].cur.at<float>(r,c);
      if ( (val > positiveThreshold && (isMax(val, localWrappers[i].cur, r, c) && isMax(val, localWrappers[i].low, r, c) && isMax(val, localWrappers[i].high, r, c))) ||
        (val < negativeThreshold && (isMin(val, localWrappers[i].cur, r, c) && isMin(val, localWrappers[i].low, r, c) && isMin(val, localWrappers[i].high, r, c))) )
        // either positive -> local max. or negative -> local min.
        localizeKeypoint(r, c, curSigmas[i], pixelDistancesNew[i], localWrappers[i]);
    }
std::vector localWrappers;
std::矢量像素距离new;
std::矢量游标;
//填充3个向量
#pragma omp平行折叠(2)计划(动态,1)
对于(int i=0;i positiveThreshold&&(isMax(val,localWrappers[i].cur,r,c)&&isMax(val,localWrappers[i].low,r,c)&&isMax(val,localWrappers[i].high,r,c)))||
(val局部最大值或负->局部最小值。
localizeKeypoint(r、c、curSigmas[i]、PixelDistanceNew[i]、localWrappers[i]);
}
我得到了这个错误:

error: parallel loops with collapse must be perfectly nested
    for(int i=0; i<localWrappers.size(); i++)
            ^

Error: the OpenMP "single" pragma must not be enclosed by the "for" pragma
错误:带折叠的并行循环必须完全嵌套

对于(int i=0;i请确保问题出在
localWrappers[i].cur.rows
和它对外部循环变量的依赖关系。如果这对所有
i
都是常量,那么使用一个不依赖于
i
的表达式。如果不是,您可能需要手动折叠循环。@Zulan问题是,这对所有的
i
都不是常量i@Zulan你有什么建议来解决这个问题?@Zulan你们能看一下这个问题吗?