Fortran Preprocessor for GPU's
OpenACC and OpenHMPP:
Coding with CAPS, allows the programmer to add OpenMP like extensions to the source code which identify Fortran subroutines that can execute in parallel. Once identified, these subroutines can be explicitly offloaded to run on the GPU while the Fortran program is running on the host. During the translation stage, CAPS automatically split the source code into standard Fortran source and source designed to be offloaded to a GPU. Special drivers and product integration make CAPS usage largely transparent during this step, when used in conjunction with Absoft Pro Fortran for Windows or Linux.
After translation is complete, the Fortran source is compiled by Absoft Pro Fortran and code for GPUs such as NVIDIA's CUDA (or OpenCL) is compiled by the data-parallel CUDA compiler (included). These two components are then automatically linked into a single, highly optimized, multi-threaded executable. When run on CUDA GPU enabled hardware, significant speed increases are possible. This operation is transparent to the user. On non-GPU systems, the code runs in the standard manner. This programming model allows software assets to utilize a single source tree and preserve portability and hardware interoperability across different GPU and non-GPU systems.
The directives used to identify parallel code segmentsare well defined, open source and provide maximum flexibility because they allow tuning any part of the application and preserve legacy codes. They also allow the application to scale by fully leveraging stream and vector units and dynamically adapting to execution on multi-GPU systems. OpenHMPP adds additional functionality including instantaneous prototyping and hardware performance evaluation of critical functions during the development cycle.|