Readers who follow my blog (and Mentor Embedded) may know that I take special pride in highlighting the work that we continue do in and around open source for embedded development. Apart from being active in various roles in popular open source projects such as the GNU Project (inc. GCC, GDB), The Yocto Project, I am pleased to announce that we have recently also joined the OpenACC organization. To explain a bit about the charter of OpenACC and the role and value Mentor Graphics’ open source expertise will provide, here is a brief overview from Duncan Poole (thank you), President, OpenACC.
OpenACC was founded in 2011 as a specification for programming accelerators with portability and high performance using directives. A non-profit organization was formed (OpenACC-Standard.Org) and over 14 members and several supporters have since joined to help advanced the standard.
Mentor benefits from OpenACC membership because it allows them to develop GCC solutions that are better aligned with the OpenACC standard. Also many members are government labs, and academic institutions, experienced in porting codes to achieve higher performance with OpenACC. These organizations, most notably Oak Ridge National Laboratory (ORNL), have been asking for an open source GCC compiler to be used in research, and as a free alternative to commercial implementations. ORNL for example is planning on leveraging this work to explore parallelizing C++ in HPC code using OpenACC.
OpenACC brings important benefits to developers. By using pragmas, or directives, in their code, the developer is providing hints to the compiler indicating which loops or loop nests can be parallelized. The compiler then takes on the burden of allocating memory on CPU and accelerator, copying data between them, issuing instructions for the target accelerator, and returning the results back to the host CPU. Developers are looking for simpler, more maintainable alternatives, and these hints are in direct contrast to languages like CUDA and OpenCL, which require the user to issue explicit instructions usually tuned to a specific device and memory hierarchy.
As a new OpenACC member, Mentor brings significant expertise in porting the GNU Compiler Suite to new architectures, and tuning the compilers for new devices like accelerators. And, the company is currently focused on adding support for OpenACC 2.0 in GCC, , and generating assembly level instructions for an NVIDIA GPU. Let’s not underestimate the effort involved, which includes teaching GCC how to parse OpenACC directives, how to translate the directives into appropriate blocks of code and data migration, and how to generate instructions for the target device itself.
This also has implications for embedded development. Both for high performance embedded computing (HPEC) and for coding for accelerators used on mobile devices which often use OpenCL. Here again developers are looking for simpler ways to express parallelism to take advantage of the multicore revolution on mobile, OpenACC directives may be the answer.
More on that, at another time.
Today, we announced Mentor’s membership in OpenACC. The implications of the contribution that Mentor is making are far reaching. With native support for the most widely used compiler for HPC and Linux, and through the wonders of open source collaboration, OpenACC is set on a path to target a broad array of devices, and on a path to widespread user adoption.
If you would like to learn more, Mentor Embedded will be providing a simple demonstration of this work in the OpenACC Booth (#4508) at the Supercomputing Conference in Denver next week. You may also drop by and hear Mentor speak about this work at the OpenACC Birds-of-a-Feather (BOF) session. A complete list of OpenACC events at SC13 is listed here.
More about Duncan
Duncan Poole is responsible for strategic partnerships for NVIDIA’s Accelerated Computing Division. His responsibilities reach across the developer tool chain. To drive successful partnerships where engineering interfaces are adopted by external parties building tools for accelerated computing. This includes open standards, compilers, profilers, debuggers, performance analysis tools, compute and communications libraries. Duncan is also the president of OpenACC, a member of OpenMP. These organizations encourage adoption of directives by developers wanting good performance and good portability in their accelerated code.