Hi all, one of my job as CEO of OpenMP is to manage the improvement of OpenMP, the de-facto parallel programming API serving on C, C++, and Fortran. For the last several years, we have been working in collaboration with Intel, IBM and many other companies to add OpenMP support into clang/llvm. OpenMP is already well supported by many proprietary compilers from IBM, Intel, Oracle, PathScale, TI, as well as GNU and others. But with clang/llvm, we had to start from scratch but Intel had an OpenMP github branch which we have been collaborating with developing, and upstreaming to clang. So over the last 2 years, you have been seeing more OpenMP support in clang/llvm in llvm 3.5, 3.6 releases.
I am happy to announce that this collaboration has achieved full OpenMP 3.1 support in clang/llvm 3.7 which will be released at the end of August.
This branch will have OpenMP 3.1 fully supported, but disabled by default (due to a timing of library switch, but eventually it will be on by default likely by the next clang release). To enable it, please use “-fopenmp=libomp“ command line option. Your feedback (positive or negative) on
using OpenMP-enabled clang would be much appreciated; please share it either at the cfe-dev or openmp-dev mailing list.
In addition to OpenMP 3.1, several important elements of 4.0 version of the
standard are supported as well:
– “omp simd“, “omp for simd“ and “omp parallel for simd“ pragmas
– atomic constructs
– “proc_bind“ clause of “omp parallel“ pragma
– “depend“ clause of “omp task“ pragma (except for array sections)
– “omp cancel“ and “omp cancellation point“ pragmas
– “omp taskgroup“ pragma
Clang 3.7 now fully supports OpenMP 3.1 and is reported to work on many platforms, including x86, x86-64 and Power based on the collaboration of many companies below.
Our intention is to have clang/llvm along with GNU compilers be the reference implementations allowing it to follow OpenMP closely as OpenMP rapidly develop new features. Commercial compilers have their own specific pressures and customer requirements and can typically follow as they need.
We plan to continue work on 4.0 for clang 3.8. Please see this link for up-to-date
status. OpenMP 4.1 is sure to follow too as we are now just releasing the public Comment draft and aimed to ratify OpenMP 4.1 with significant enhancements for accelerators by SuperComputing 2015 in November.
Contributors to this work include AMD, Argonne National Lab., IBM, Intel, Texas Instruments, University of Houston and many others.