我有一个程序块,例如:
for (iIndex1=0; iIndex1 < iSize; iIndex1++)
{
for (iIndex2=iIndex1+1; iIndex2 < iSize; iIndex2++)
{
iCount++;
fDist =(*this)[iIndex1].distance( (*this)[iIndex2] );
m_oPDF.addPairDistance( fDist );
if ((bShowProgress) && (iCount % 1000000 == 0))
xyz_exception::ui()->progress( iCount, (size()-1)*((size()-1))/2 );
}
}
}
}
我尝试过并行化内循环和外循环,并将 iCount 放在关键区域。并行化此的最佳方法是什么?如果我用 omp single 或 omp atomic 包装 iCount,那么代码会给出一个错误,我发现在 omp for 中这将是无效的。我想我正在添加许多无关的东西来并行化这一点。需要一些建议...
谢谢,
萨彦