小编bir*_*man的帖子

OpenMP不会使用所有核心?

我正在尝试使用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应该对它们不可知,对吧?

谢谢.

c++ stl openmp

2
推荐指数
1
解决办法
1708
查看次数

标签 统计

c++ ×1

openmp ×1

stl ×1