c++ - iMac 上的 OpenMP 'slower'? (C++)

标签 c++ openmp

我有一个使用 OpenMP 的 C++ 小程序。它在 Windows7、Core i7 和 VisualStudio 2010 上运行良好。在配备 Core i7 和 g++ v4.2.1 的 iMac 上,使用 4 个线程的代码运行速度比只使用一个线程慢得多。在使用 g++ 的其他 2 台 Red Hat 机器上也出现了相同的“较慢”行为。 这是代码:

   int iHundredMillion = 100000000;
   int iNumWorkers = 4;
   std::vector<Worker*> workers;

   for(int i=0; i<iNumWorkers; ++i)
   {
      Worker * pWorker = new Worker();
      workers.push_back(pWorker);
   }

   int iThr;

   #pragma omp parallel for  private (iThr)     // Parallel run
   for(int k=0; k<iNumWorkers; ++k)
   {
      iThr = omp_get_thread_num();
      workers[k]->Run( (3)*iHundredMillion, iThr );
   }

我正在像这样使用 g++ 进行编译:

g++ -fopenmp -O2 -o a.out *.cpp

谁能告诉我我在 *nix 平台上犯了什么愚蠢的错误?

最佳答案

我认为 g++ 编译器的优化不如 visual studio 编译器。您能否尝试其他优化级别(如 -O3)并查看它是否有所作为?

或者您可以尝试其他编译器。英特尔为非商业目的提供免费的 Linux 编译器。

http://software.intel.com/en-us/articles/non-commercial-software-development/

关于c++ - iMac 上的 OpenMP 'slower'? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3739117/

相关文章:

c - OpenMP : Creating threads, 并行性,循环障碍

c - 如何使用 OpenMP 优化中值滤波器(C)?

c - 如何使用openmp并行化代码以减少添加矩阵和

c++ - 以编程方式更改桌面背景

c++ - 无法连接(空)::selectionChanged 到 QTableView

c++ - 我如何计算 (2i+1) 的总和!使用 while 循环?

c++ - MRB_THROW 导致 libc++abi.dylib 出错

c++ - openMP VS2017 不工作

c++ - 包装 PropertySheet;如何处理回调?

c - 如何在 Xeon Phi 中传递结构以卸载