C++ 如何测试C++;正在使用openmp吗?

C++ 如何测试C++;正在使用openmp吗?,c++,g++,openmp,C++,G++,Openmp,我有一个程序,可以对一组图像进行独立计算。这似乎是一个使用OpenMP的好主意: //file: WoodhamData.cpp #include <omp.h> ... void WoodhamData::GenerateLightingDirection() { int imageWidth = (this->normalMap)->width(); int imageHeight = (this->normalMap)->height

我有一个程序,可以对一组图像进行独立计算。这似乎是一个使用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;
        }
        ...
    }
}
然而,我很难过地说,我的程序报告
threads=1
(从终端
/test.exe运行…


有人知道可能出了什么问题吗?这是我程序中最慢的部分,最好能把它加快一点。

您的OpenMP指令是错误的-它是“并行”而不是“并行”

-Wall
编译并查看警告。@Zboson谢谢,这正是我所需要的!向我展示了kjpus指出的问题。诅咒我糟糕的语法。我想这应该作为一个评论。你可以建议使用
-Wall
,以便OP在将来发现其他打字错误。这是我的错,标题中的问题在技术上与我在正文中提出的问题不同@兹博森的回答是我想要的,但这正确地回答了我的问题。我必须参考stackoverflow指南。@Kenkron,很多时候我没有得到我想要的结果,因为布拉格语语句中的拼写错误。我浪费了很多时间进行printf调试,但从来没有发现pragma语句的问题。从那以后,我学会了使用
-Wall
更多。这可能是OpenMP的一个弱点。普通的C代码会出现语法错误,但pragma语句不一定会出现语法错误。这是一个有趣的问题。我想知道您是否可以启用一个选项,将未知的pragma语句视为编译错误<代码>-Werror有时我觉得太苛刻了。@Kenkron,
-Wunknown pragmas
。现在,我们只需要找到一种方法,让它在
未知杂注上出错,而不是在这个警告上给出警告,并且只在这个警告上出错,而不是所有警告。@Kenkron,我认为
-Werror=unknown杂注
可能会这样做。
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