“With their HPC on Linux knowledge and long history of engagement with the HPC community, we welcome SUSE as one of the newest OpenACC members,” says Duncan Poole, President of OpenACC-Standard.org. “SUSE engineers are already collaborating with other OpenACC members on the GNU Compiler Collection (GCC), the most common compiler used in HPC today.”
OpenACC (“Open Accelerators”) is a directives-based programming approach to parallel computing designed for performance and portability on CPUs and accelerators for High Performance Computing. SUSE is now proud to announce its membership in OpenACC and looking forward to contributing to this portable programming model for HPC that has been adopted by many top applications. Other members include NVIDIA, Cray, AMD, Tokyo Institute of Technology and OpenACC implementations are now available from PGI, Cray and GCC.
When applications are being supported in an HPC environment, there are essentially three ways to accelerate those applications from a software perspective:
- The first is through libraries, which are easiest to use and provide very good performance. But libraries are finite and limited to what’s included in them. The programmer is not able to make changes that are not defined in the libraries.
- The second method is through programming whereby a CUDA architecture is used to support a variety of programming environments, like OpenCL, Fortran and C. While this is a very flexible approach, it requires the programmer to recreate their sequential program from scratch. And parallel programs created in a parallel programming language tend to only work on a very small number of platforms.
- The third approach is using “compiler directives” with OpenACC, which is a more flexible approach than using libraries, albeit a little harder. At the same time, OpenACC is easier than CUDA, but less flexible based on optimizations that can be made for the code. The programmer
creates the directives, informing the compiler how to “parallelize” the code. This gives the greatest benefit of portability, as the code with compiler directives can be compiled for many different parallel platforms. OpenACC works across multiple architectures, which is not true for most libraries and for CUDA.
It is usually recommended that users start with libraries, then check into OpenACC and dive into CUDA for certain kernels if necessary for the GPU portion. Using OpenACC yields some key advantages. I mentioned the portability aspect above – being performance-portable enables support across CPUs, GPU accelerators and co-processors from multiple vendors. It’s also single source – there is no GPU-specific code. You compile the same program for accelerators or serial processors. And it’s incremental, meaning that developers can port and tune just parts of their application over time.
OpenACC is a very natural fit for SUSE, where enterprise-grade HPC is in our DNA. Given the compute-intensive nature of HPC workloads, it’s important to contribute to open source initiatives that drive performance improvements and ease of use across different platforms and architectures. SUSE looks forward to contributing to the OpenACC specification as well as supporting it in its GCC implementation. In the end, it’s really about improving the ease of use for accelerators in all facets of compute-intensive workloads.
For more information about SUSE’s solutions for HPC, please visit https://www.suse.com/programs/high-performance-computing/ and https://www.suse.com/products/server/hpc/ and https://www.suse.com/solutions/hpc-storage/ .
Thanks for reading!