OpenMP is a major player in HPC. It is a shared memory threading model that complements and blends with MPI message parsing. OpenMP is celebrating its 20th birthday and looks back on a good history of enabling HPC in two decades. OpenMP differs from MPI in the sense that it is on the cluster level. It originated from distributed memory and message parsing and now has some form of shared memory support as well. Traditionally, OpenMP was the model to do the threading within the node and have MPI on top of that, to communicate with other cluster nodes.
Currently, OpenMP 4.5 is the latest specification. Last year, OpenMP released a technical report as a kind of alpha release of the upcoming OpenMP 5.0 specification. OpenMP is planning to have another technical report at the Supercomputing Conference in November 2017, which will be the better release. In Spring 2018, OpenMP is aiming to launch what is called the "Public Comment Period". OpenMP by then will have the ready-to-be-released specification and will ask the community for feedback, for concerns they might have with the new version and whatever errors and bugs they may find. After this process, in 2018, OpenMP is going to release, at Supercomputing Conference as well, the 5.0 specification. This is going to be the next major piece in the OpenMP history.
OpenMP is now working on a tools' interface. This is already in the alpha version where it is being finalized. You can have performance tools and have a well-defined interface into the OpenMP implementation, so that any OpenMP tool can talk to any OpenMP implementation and provide some context information about the performance behaviour of the application. OpenMP is also working on a debugger interface. This is basically the same idea, but now for correctness tools. In addition, there are lots of refinements of existing features. OpenMP is working on rebasing the C++ language to be C++14. Right now, it is C++89. That is a major lifting to ensure that OpenMP is still compatible with the latest developments of the languages that it supports.
OpenMP also supports Fortran 2003. Most of the features OpenMP is working on are for the 2008 support. Michael Klemm and his team are trying to evolve OpenMP along those lines as well. There are also additional features in terms of tasking support. The developers added already in the alpha release a support for task reduction so that you can have a full task tree unfolding and then do a global aggregation of partial results into a global result. This is something that OpenMP has had for two decades in the work sharing construct but which was missing from the tasking construct.
A key aspect of OpenMP always is to make it a good language that is expressive and capable of expressing what you need in your applications. OpenMP is trying to follow along, not only with the hardware trends to make sure that OpenMP is the programming model of choice to program the latest and greatest but also future hardware, but also with trends of more complexity in terms of what the application wants from the programming model.
OpenMP tries to stay hardware-agnostic. The team doesn't want to have OpenMP for some specific hardware because when the trend is over, OpenMP would become irrelevant. The team in OpenMP 4.0 introduced the offload model, meant to support anything that takes data or some crunching on it and send it back to the host. That model already fits FPGAs, GPUs, coprocessors, and whatever is coming. The only question is how you can map the baseline code, like Fortran code, to the underlying hardware. OpenMP itself doesn't make any assumptions or any big assumptions about the underlying hardware. You may restrict yourself to a subset of Fortran or C++ but from an OpenMP perspective, the goal is to try and be as agnostic as possible.
Currently, there are 29 ARB members within OpenMP, which are the contributing organisations. OpenMP has several vendors - big names like IBM, NVIDIA, Intel, and ARM, just to name a few because there are much more - and there are big user organisations like Lawrence Livermore, Sandia, Oak Ridge National Laboratories, and Barcelona Supercomputing Center, that also contribute from a research perspective. Overall, the involvement is about 50 to 60 people, individuals who are coming from these institutions to support the language development.
OpenMP is an open organisation that welcomes feedback. OpenMP is looking for new members. If there is an institution out there that wants to be more involved with OpenMP, the team is happy to talk to them on different levels. They can come to OpenMP and provide feedback. There are conferences and workshops. There is OpenMPCon, which is the users' community conference, in conjunction with IWOMP, the international workshop on OpenMP, which is the research conference with scientific papers. You can engage with OpenMP through those channels.
There is an OpenMP website where you can find information and also send contact information so that the team can follow up, just in case somebody is interested in joining as a member. The next conference is starting on 18 September 2017 at Stony Brook University, New York. IWOMP traditionally is on a three-year traveling cadence, visiting Asia, Europe and America. OpenMPCon follows along. This year, it is America.
Primeur Magazinehoped to see Michael Klemm in 20 years from now, celebrating the 40th anniversary. Michael Klemm hoped to see exascale by then.