Parallelizing code is essential for programmers looking to leverage multicore environments. OpenMP offers multi-platform, shared memory processing in multiple languages. We caught up with Michael Wong, CEO of OpenMP, to learn much more.
insideHPC: What is OpenMP ?
Michael Wong: OpenMP is a specification for a set of compiler directives, library routines, and environment variables that can be used to specify high-level parallelism in Fortran and C/C++ programs.
insideHPC: What problems does OpenMP solve ?
Michael Wong: In order to parallelize code, programmers look for regions of code whose instructions can be shared among the processors. Much of the time, they focus on distributing the work in loop nests to the processors. In most programs, code executed on one processor require results that have been calculated on another one. In principle, this is not a problem because a value produced by one processor can be stored in main memory and retrieved from there by code running on other processors as needed. However, the programmer needs to ensure that the value is retrieved after it has been produced, that is, that the accesses occur in the required order. Since the processors operate independently of one another, this is a nontrivial difficulty: their clocks are not synchronized, and they can and do execute their portions of the code at slightly different speeds.
To solve this problem, the vendors of SMPs in the 1980s provided special notation to specify how the work of a program was to be parceled out to the individual processors of an SMP, as well as to enforce an ordering of accesses by different threads to shared data. The notation mainly took the form of special instructions, or directives, that could be added to programs written in sequential languages, especially Fortran. The compiler used this information to create the actual code for execution by each processor. Although this strategy worked, it had the obvious deficiency that a program written for one SMP did not necessarily execute on another one.
In order to solve this problem of non-standardization, OpenMP was defined by the OpenMP ARB, a group of vendors who joined forces during the latter half of the 1990s to provide a common means for programming a broad range of SMP architectures. The first version, consisting of a set of directives that could be used with Fortran, was introduced to the public in late 1997. (Quote from Using OpenMP: Portable Shared Memory Parallel Programming, by Barbara Chapman, Gabriele Jost and Ruud van der Pas, MIT Press, Cambridge, MA, 2008.)
With the following versions, OpenMP was extended so that also DSP systems and accelerators could be programmed.
Today, OpenMP has opened itself to many forms of memory architecture beyond shared memory. In a recent press release, we have updated our Mission Statement:
After 16 years focus on Shared memory parallelism support in HPC, OpenMP has now through a year-long collaborative discussion and study with its members have voted unanimously to change that mission statement now to this:
Standardize directive-based multi-language parallelism that is performant, productive, and portable.”
While we are dropping the words “shared memory” and “HPC”, it is still a focus, but it is now expanded beyond that. We have effectively broken the previous Mission Statement parameters by supporting Accelerators across a broad-range of devices (GPUS, DSPs, GPGPUS,..) with different memory architecture. We are also looking to expand beyond HPC into commercial and manufacturing computing. Please see this link for more information.
insideHPC: Who is using OpenMP ?
Michael Wong: The users of OpenMP are working in industry, research and academia, in fields varying from aeronautics, automotive, pharmaceutics to finance, games, oil and gas, and on devices varying from accelerators, embedded multicore systems to high-end supercomputing systems. cOMPunity is the community of OpenMP researchers and developers in academia and industry. It is a forum for the dissemination and exchange of information about OpenMP.
The OpenMP ARB has also started compiling a list of users of OpenMP, although it only started recently. We plan to support a new Conference for users, beyond the traditional research oriented IWOMP, starting in 2015 called OpenMPCon, it is a Conference for the entire OpenMP community. We will be accepting proposals soon.
insideHPC: What is the mission of the Architecture Review Board ?
Michael Wong: The OpenMP ARB mission is to standardize directive-based multi-language high-level parallelism that is performant, productive and portable.
Jointly defined by a group of major computer hardware and software vendors, the OpenMP API is a portable, scalable model that gives shared memory parallel programmers a simple and flexible interface for developing parallel applications on platforms ranging from embedded systems and accelerator devices to multicore systems and shared memory systems. The OpenMP ARB owns the OpenMP brand, oversees the OpenMP specification and produces and approves new versions of the specification.
insideHPC: Josh Simons of VMware is your current Chair. What role does VMware play in the technology ?
Michael Wong: Directors act solely on the governance of OpenMP and as such are more involved in the legal, procedural, and overall soundness of OpenMP by-laws. As such, they do not need to be an OpenMP member for directorship. Directors are individuals and can come from any affiliation, as long as their personal resume fulfills the parameter of the job. We gain benefit from their wide ranging experience and deep insight in the business of parallel computing. We continue to solicit Directorship from qualified individuals. The qualification is available on demand.
Here is a view of the structure of the Corporation:
insideHPC: What does OpenMP ARB have in store for the upcoming HPC Seminar and Workshop in Aachen, Germany ?
Michael Wong: The HPC Seminar and Workshop (PPCES) include sessions on OpenMP. Here follows a short report:
The Parallel Programming in Computational Engineering and Science (PPCES) 2014 continued the tradition of annual week-long events that take place in Aachen every spring since 2001.
Throughout the week a wide spectrum of topics was covered, ranging from serial programming (Monday) to parallel programming using MPI (Tuesday) and OpenMP (Wednesday) in both Fortran and C/C++ as well as performance tuning. The participants are introduced to modern features of the OpenMP 4.0 standard like vectorization and programming for accelerators and for the Many Integrated Core (MIC) Architecture (Thursday) as well as GPGPU programming with OpenACC (Friday). Hands-on exercises for each topic are provided.
We enjoyed unexpected popularity; the available 80 places were overbooked at Monday and Wednesday. The OpenMP day – Wednesday – was clear the favorite day with most registrations and most participants (all seats taken!).
The course materials including the labs are available here.
insideHPC: What do you have planned for ISC’14?
Michael Wong: The OpenMP ARB will be represented by the IT Center of the RWTH Aachen University, specifically at the Jarra Booth.
The OpenMP ARB will also have a Booth at SC14. We organize presentations at the stand, and an OpenMP Birds of a Feather session. There are OpenMP tutorials, and OpenMP related research presentations.
Other events coming include IWOMP 2014 to be held in Salvador Brazil for which we are finalizing the program and of course SuperComputing 2014. A Language committee meeting is usually scheduled to pair with IWOMP. OpenMP is a constantly updated vibrant language responding to evolving community needs. As such, we have at least three Language meetings per year to meet face-to-face as well as weekly telecons to discuss proposals for improving the language. This gives us greater agility to publish new specifications more frequently, interspersed with interim Technical Reports that show progress and directions.
In 2015, in addition to three regularly scheduled Language meetings, we will have the usual hosting through JARA at ISC 2015, then IWOMP 2015 tentatively scheduled to be held at RWTH Aachen paired with the inaugural OpenMPCon 2015, the annual OpenMP Users conference for the entire OpenMP community.
Note that you can find more information on OpenMP in the OpenMP FAQ.