Jakub Jelinek <jakub at redhat dot com> posted on July 16th that the GCC 4.9.1 release now supports OpenMP 4.0 in Fortran (as well as C/C++). This is great news for multi-core programmers. GCC looks to be on-track to become the opensource platform that both Intel Xeon Phi and GPU programmers can use to to test pragma based programming. As reported on techEnablement.com, GCC is likely to support Intel Xeon Phi offload and OpenACC pragmas in 2015.
The Gnu gfortran wiki reports:
- Full support for OpenMP 4.0: In GCC 4.9.1 (and later) there is now also full OpenMP 4.0 support for Fortran. (Except for actual offloading of target sections onto accelerators.) NOTE that modules using new OpenMPv4 features will generate a .mod file which is incompatible with GCC 4.9.0; otherwise, 4.9.0 and 4.9.1 generate identical (and hence compatible) .mod files.
- Version 4.0 of the OpenMP specification is now supported in the C and C++ compilers and starting with the 4.9.1 release also in the Fortran compiler. The new
-fopenmp-simdoption can be used to enable OpenMP’s SIMD directives, while ignoring other OpenMP directives. The new
-fsimd-cost-model=option permits to tune the vectorization cost model for loops annotated with OpenMP and Cilk Plus
-Wopenmp-simdwarns when the current cost model overrides simd directives set by the user.
The 4.9.1 release is available from the FTP servers listed at http://www.gnu.org/order/ftp.html.
For developers who wish to learn more, check out the five part Intel OpenMP 4.0 video series on SIMD and processor affinity. This should prove useful for those who use the GCC compiler even though the videos are based on the the Intel compiler.
As a side note, Phoronix notes that Intel’s Compiler Team Is Trying To Land OpenMP In Clang ASAP. Phoronix recently ran some OpenMP benchmarks of the out-of-tree LLVM Clang OpenMP support and compared the OMP performance to GCC in various multi-threaded benchmarks workloads. They wrote, “Clang will be much more competitive to GCC on modern multi-core systems in the many scientific applications that take advantage of OpenMP”.