我有一个使用 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/