我正在尝试使用OpenMP来使一些代码并行.
omp_set_num_threads( 8 );
#pragma omp parallel
for (int i = 0; i < verSize; ++i)
{
#pragma omp single nowait
{
neighVec[i].index = i;
mesh.getBoxIntersecTets(mesh.vertexList->at(i), &neighVec[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
verSize大约是90k,getBoxIntersecTets相当昂贵.所以我希望代码能够充分利用四核CPU.但是CPU使用率仅为25%左右.有任何想法吗?
我也尝试使用omp parallel for construct,但同样的故事.
getBoxIntersecTets使用STL unordered_set,vector和deque,但我想OpenMP应该对它们不可知,对吧?
谢谢.