Update OpenMP to higher versions in Visual Studio 2022

4.9k Views Asked by At

In VS22, OpenMP is still at version 2.0. Is it possible to update it to 5.0 or at least 3.0? I haven't managed to find any options in VS22 Installer which would allow that.

2

There are 2 best solutions below

2
On

For a long time, MSVC used its own runtime that is completely obsolete now since it only support OpenMP 2.0 released 20 years ago. Since recently, MSCV now support the LLVM runtime (libomp also used by ICC) as a new backend. You can enable it using the flag /openmp:llvm meant to support OpenMP 3.1 (released 11 years ago). You can also use the /openmp:experimental so to be able to use some features of OpenMP 4.5 (typically tasks though this is the most experimental part). Offloading features (eg. on GPU) is not supported yet. The support of OpenMP 5.0 is not planed yet. For more information, please read this.

As pointed out by @Laci in the comments, an alternative solution is to use the Clang-cl compiler so to benefit from a relatively complete support of OpenMP in Visual studio. Please note that using Clang-cl instead of the default compiler can result in some incompatibility (especially for large codes). For example, Clang does not support some C++17/C++20 features like the parallel STL, polymorphic allocators or some advanced atomic features yet (as opposed to MSVC). You can get more information about the support of C++ features for each compiler here.

0
On

Visual Studio 2022 (version 17.3) supports all tasking constructs and most other features from OpenMP 3.1. See related blogs: https://devblogs.microsoft.com/cppblog/category/openmp/ The support is still experimental, libomp140* runtime is not part of redist yet. @kaiyakha: if you can please open a ticket for the compiler crash here: https://developercommunity.visualstudio.com/search?space=62&entry=problem that would be great, thank you!