我想使用VS2017编写OpenMP,但是我发现一些指令无法使用。如果OpenMP的版本是2.0,则太低。因此我安装了intel C ++编译器18.0,并且在版本17.0、18.0和19.0编译器中支持OpenMP 4.5 C / C ++,并且intel c ++编译器可以在VS2017中使用。但是当我使用编译器中的OpenMP,我发现OpenMP的版本仍然是2.0。所以,我真的不知道该怎么办。
答案 0 :(得分:0)
英特尔的C ++编译器没有附带标准模板库,OpenMP或任何其他库的实现—如果您愿意,它不是完整的软件包。它通过使用系统上可用的功能来工作。在Linux上,通常是gcc / g ++,而在Windows上,这些库是由msvc提供的。结果,语言(即C ++ 17等)和其他库(OpenMP ...)的支持都基于底层编译器的支持。
简而言之,在Linux上,Intel的C ++编译器支持OpenMP 4.5,因为GCC从6.1版开始就支持OpenMP 4.5。但是,在Windows上,英特尔的C ++编译器仅支持OpenMP 2.0,因为这是Microsoft选择在其编译器中实现的(我不确定为什么,在他们的论坛上有很多帖子要求将OpenMP 4.5用于msvc)。作为参考,2016年的这份文档为您介绍了VS2017: https://docs.microsoft.com/en-us/cpp/parallel/openmp/openmp-in-visual-cpp?view=vs-2017