OpenACC Over OpenMP Proposed For GCC Compiler
As some more interesting GCC compiler news this week besides the integration of Intel Cilk Plus support and C11 _Atomic support being ready is a new competing implementation of the OpenACC parallel programming standard for the GNU Compiler Collection.
Back in September was a proposal out of Samsung for OpenACC in GCC with GPU support. That support hasn't been merged yet but now CodeSourcery is out with another implementation.
OpenACC is the parallel programming standard backed by Cray and NVIDIA and other firms to simplify CPU/GPU programming. The OpenACC approach is similar to OpenMP and this standard supports the C, C++, and Fortran languages. The big deal with OpenACC over OpenMP is support for GPU acceleration.
The approach done by Samsung in September had the OpenACC code being morphed into OpenCL 1.1 code for GPGPU execution since GCC doesn't have GPU support like in LLVM/Clang. The Samsung approach also targeted OpenACC 1.0 rather than OpenACC 2.0.
Now announced on Wednesday by Thomas Schwinge of CodeSourcery is an alternative implementation. This new implementation doesn't have any GPU side support, but it does have OpenACC 2.0 support and this implementation is all based off of GOMP, the GCC OpenMP support. With OpenMP and OpenACC being similar on the CPU side, CodeSourcery is leveraging the GOMP code-base. The OpenACC support ends up being embedded within the OpenMP infrastructure and passes. This implementation right now is still in early development form and only supports C while C++ and Fortran are to be forthcoming. There might also be some possibility for front/middle-end code sharing between the two OpenACC implementations for this open-source compiler.
Those interested in seeing this new GCC OpenACC work can visit the GCC mailing list. In the spirit of open-source, the best implementation shall win.
Back in September was a proposal out of Samsung for OpenACC in GCC with GPU support. That support hasn't been merged yet but now CodeSourcery is out with another implementation.
OpenACC is the parallel programming standard backed by Cray and NVIDIA and other firms to simplify CPU/GPU programming. The OpenACC approach is similar to OpenMP and this standard supports the C, C++, and Fortran languages. The big deal with OpenACC over OpenMP is support for GPU acceleration.
The approach done by Samsung in September had the OpenACC code being morphed into OpenCL 1.1 code for GPGPU execution since GCC doesn't have GPU support like in LLVM/Clang. The Samsung approach also targeted OpenACC 1.0 rather than OpenACC 2.0.
Now announced on Wednesday by Thomas Schwinge of CodeSourcery is an alternative implementation. This new implementation doesn't have any GPU side support, but it does have OpenACC 2.0 support and this implementation is all based off of GOMP, the GCC OpenMP support. With OpenMP and OpenACC being similar on the CPU side, CodeSourcery is leveraging the GOMP code-base. The OpenACC support ends up being embedded within the OpenMP infrastructure and passes. This implementation right now is still in early development form and only supports C while C++ and Fortran are to be forthcoming. There might also be some possibility for front/middle-end code sharing between the two OpenACC implementations for this open-source compiler.
Those interested in seeing this new GCC OpenACC work can visit the GCC mailing list. In the spirit of open-source, the best implementation shall win.
2 Comments