我想知道如何检查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++ | |
空白的条目在那里,因为我没有找到相应的信息。
随意编辑这个答案,并更新为新版本的新信息。