C++11 C++;openmp并行化std::向量循环

C++11 C++;openmp并行化std::向量循环,c++11,openmp,C++11,Openmp,我对openmp有问题。我尝试在C++C++中并行化,AlelWords是一个STD::vector类型的向量,而WORD是我自己定义的类。initProcess(const Lib&)是Wire类的成员函数,Lib是Lib的对象,也是我自己定义的。 所有Wire对象中都没有内存共享,我希望这段代码可以完全并行化,但我没有看到使用openmp有任何性能改进。我用openmp做错了吗 uint32_t wireCnt = allWires.size(); #pragma omp parallel

我对openmp有问题。我尝试在C++C++中并行化,AlelWords是一个STD::vector类型的向量,而WORD是我自己定义的类。initProcess(const Lib&)是Wire类的成员函数,Lib是Lib的对象,也是我自己定义的。 所有Wire对象中都没有内存共享,我希望这段代码可以完全并行化,但我没有看到使用openmp有任何性能改进。我用openmp做错了吗

uint32_t wireCnt = allWires.size();
#pragma omp parallel for
for (uint32_t i = 0; i < wireCnt; ++i)
{
    allWires[i]->initProcess (library);
}
uint32\u t wireCnt=allWires.size();
#pragma-omp并行
对于(uint32_t i=0;iinitProcess(库);
}

可能有很多方面。例如,您使用了多少个内核,wireCnt有多大?@AndyG,wireCnt大约为100K,如果没有openmp,这段代码大约需要8s。我没有指定要使用的内核数,但是机器上有8个内核。你是如何测量时间的?哪个编译器?您使用了哪些编译选项?是否确实启用了OpenMP?请使用
omp\u get\u wtime()
。如果仍然显示相同的结果,则可能需要使用“英特尔VTune”等性能工具(商业工具,可能需要付费许可证)