如何检查Linux上的OpenMP版本

我想知道如何检查Linux远程机器上的OpenMP版本

我不知道它在哪里安装。

看来,OpenMP的C / C ++规范没有提供以编程方式执行此操作的直接方式。 所以你必须检查你的编译器版本的文档。

gcc --version ## get compiler version 

对于GCC,这是一个很好的资源: http : //gcc.gnu.org/wiki/openmp :

从GCC 4.2开始,编译器实现了OpenMP标准的2.5版本,从4.4开始实现了OpenMP标准的3.0版本。 自GCC 4.7以来,OpenMP 3.1被支持。


编辑

经过一番努力,我得到了以下工作。 它至少给出了OpenMP版本的一个指示,尽管它仍然需要你查找一些东西。

 $ echo |cpp -fopenmp -dM |grep -i open #define _OPENMP 200805 

您可以在这里( http://openmp.org/wp/openmp-specifications )找到所提供的日期与实际的OpenMP版本号之间的映射。

在支持预处理器的实现中,_OPENMP宏名称被定义为十进制值yyyymm,其中yyyy和mm是实现支持的OpenMP API版本的年和月指定。

这里有一个简短的C ++ 11程序来显示你的OpenMP版本; 还涵盖了2015年11月发布的4.5版本。

 #include <unordered_map> #include <cstdio> #include <omp.h> int main(int argc, char *argv[]) { std::unordered_map<unsigned,std::string> map{ {200505,"2.5"},{200805,"3.0"},{201107,"3.1"},{201307,"4.0"},{201511,"4.5"}}; printf("We have OpenMP %s.\n", map.at(_OPENMP).c_str()); return 0; } 

并编译它:

 g++ -std=c++11 -fopenmp foobar.cpp 

你需要检查你的gcc版本

 gcc --version 

然后看下面的(不完整的)表格(他们的信息是从这篇Wiki文章和OpenMP官方网站的这个网页中收集到的):

 | gcc version | OpenMP version | Languages | Offloading | |-------------|----------------|-----------------|------------| | 4.2.0 | 2.5 | C | | | 4.4.0 | 3.0 | C | | | 4.7.0 | 3.1 | C | | | 4.9.0 | 4.0 | C, C++ | | | 4.9.1 | 4.0 | C, C++, Fortran | | | 5 | | | Yes | | 6.1 | 4.5 | C, C++ | | 

空白的条目在那里,因为我没有找到相应的信息。


随意编辑这个答案,并更新为新版本的新信息。