Speaker
Description
For decades Fortran has been on the forefront of high performance computing. As new architectures emerged, the Fortran standard added constructs to exploit them, but not always with complete success. For example, F90 added array syntax to describe vectorization, yet vectorizing compilers found it easier to translate DO loops with appropriate directives. Co-arrays were added in F08 and extended in F18 to support distributed memory, but this is usually addressed by the Message-Passing Interface (MPI). Other libraries, e.g., BLAS, LAPACK or PLASMA cover optimized numerical calculations outside of the language.
The advent of General Purpose Graphics Processing Units (GPGPUs) has created another conundrum. They can be programmed with an appropriate language (CUDA, CUDAFortran, or OpenCL) or with directives (e.g., OpenMP4.5 or OpenACC3.0), each with disadvantages. In this talk, we outline the lessons learned in porting the ICON atmospheric model to GPUs with OpenCL, CUDAFortran and, finally, OpenACC, with the latter now in production at the Swiss National Supercomputing Centre (CSCS). Now that we understand the programming challenges, it is possible to consider new extensions to the Fortran standard to address GPUs, which are clearly not going away any time soon. We attempt to give some future perspectives.