Date Version
----------------------
Nov 2021 OpenMP 5.2
Nov 2020 OpenMP 5.1
Nov 2018 OpenMP 5.0
Nov 2015 OpenMP 4.5
Jul 2013 OpenMP 4.0
Jul 2011 OpenMP 3.1
May 2008 OpenMP 3.0
May 2005 OpenMP 2.5
Mar 2002 C/C++ 2.0
Nov 2000 Fortran 2.0
Nov 1999 Fortran 1.1
Oct 1998 C/C++ 1.0
Oct 1997 Fortran 1.0
8条答案
按热度按时间sczxawaw1#
OpenMP的C/C ++规范似乎没有提供直接的编程方法,所以你必须检查你的编译器版本的文档。
对于GCC,这是一个很好的资源(没有提到GCC的最新版本):http://gcc.gnu.org/wiki/openmp:
从GCC 4.2开始,编译器实现OpenMP标准的2.5版,从GCC 4.4开始,编译器实现OpenMP标准的3.0版。从GCC 4.7开始,编译器支持OpenMP 3.1。
编辑
经过更努力的尝试,我得到了下面的工作。它至少给出了OpenMP版本的指示--尽管它仍然需要您查找一些东西。
您可以转到此处(http://www.openmp.org/specifications/)以发现所提供的日期与实际OpenMP版本号之间的Map。
在支持预处理器的实现中,_OPENMP宏名称被定义为具有十进制值yyyymm,其中yyyy和mm是实现支持的OpenMP API版本的年和月标识。
w7t8yxp52#
这里有一个简短的C++11程序来显示你的OpenMP版本;它还涵盖了2020年11月发布的版本5.1。
并编译为:
sg24os4d3#
您需要使用以下命令检查
gcc
版本然后查看下表(不完整)(其信息来自OpenMP官方网站的this Wiki article和this webpage):
空白条目在那里,因为我没有找到相应的信息。
wi3ka0sx4#
首先设置环境变量OMP_DISPLAY_ENV:在bash中:
或在类CSH壳中:
然后编译并运行OpenMP程序:
将有其他信息,如:
其中_OPENMP具有8位十进制值yyyymm,其中yyyy和mm是实现支持的OpenMP API版本的年份和月份名称。
olqngx595#
OpenMP文档改进了很多。你可以从this链接找到更多关于支持的OpenMP版本对应的编译器的信息。
回到您的问题,如上所述,首先找到gcc编译器版本,然后参考上面的链接了解相应的OpenMP版本。
上面的链接还提供了不同编译器中支持的OpenMP版本。
0tdrvxhp6#
实际上,我认为你不能直接得到openmp的版本,但是编译器会使用一个预定义的宏
_OPENMP
来表示openmp的发布日期,你应该指定-fopenmp
选项来使用这个宏。您可以先使用shell命令获取openmp的发布日期,如下所示
至于我的gcc,它是
然后你可以查看openmp的发布历史(https://www.openmp.org/news/press-releases/)来获得版本,
201511
的意思是2015年11月,版本是openmp 4.5
。发布历史记录如下:
nfzehxib7#
这是上面user2023370的答案的一个更安全的版本。为了简洁起见,省略了旧的OpenMP版本:
如果遇到新的版本号或损坏的版本号,与使用
at()
函数成员相反,此语句将不会引发异常。版本号来自https://github.com/jeffhammond/HPCInfo/blob/master/docs/Preprocessor-Macros.md。
to94eoyn8#
你可以通过运行一个简单的C程序来检查它:
然后用
GCC
编译它,或者像我的例子一样,通过添加标志-fopenmp
来编译它