如何测试C ++是否使用openmp?

时间:2016-04-17 01:10:15

标签: c++ g++ openmp

我有一个程序可以对一堆图像进行独立计算。这似乎是一个使用OpenMP的好主意:

//file: WoodhamData.cpp
#include <omp.h>

...

void WoodhamData::GenerateLightingDirection() {
    int imageWidth = (this->normalMap)->width();
    int imageHeight = (this->normalMap)->height();
    #pragma omp paralell for num_threads(2)
    for (int r = 0; r < RadianceMaps.size(); r++) {
        if (omp_get_thread_num() == 0){
            std::cout<<"threads="<<omp_get_num_threads()<<std::endl;
        }
        ...
    }
}

为了使用OpenMP,我将-fopenmp添加到我的makefile中,因此输出:

g++ -g -o test.exe src/test.cpp src/WoodhamData.cpp -pthread -L/usr/X11R6/lib -fopenmp --std=c++0x -lm -lX11 -Ilib/eigen/ -Ilib/CImg

然而,我伤心地说,我的程序报告threads=1(从终端运行./test.exe ...

有谁知道可能出错了什么?这是我程序中最慢的部分,加速它会很棒。

1 个答案:

答案 0 :(得分:2)

您的OpenMP指令错误 - 它是&#34; parallel&#34;不是&#34; paralell&#34;。