High Performance Fortran for aerospace applications

Piyush Mehrotra, Hans Zima
2001 Parallel Computing  
This paper focuses on the use of High Performance Fortran (HPF) for important classes of algorithms employed in aerospace applications. HPF is a set of Fortran extensions designed to provide users with a high-level interface for programming data parallel scientific applications, while delegating to the compiler/runtime system the task of generating explicitly parallel message-passing programs. We begin by providing a short overview of the HPF language. This is followed by a detailed discussion
more » ... f the efficient use of HPF for applications involving multiple structured grids such as multiblock and adaptive mesh refinement (AMR) codes as well as unstructured grid codes. We focus on the data structures and computational structures used in these codes and on the high-level strategies that can be expressed in HPF to optimally exploit the parallelism in these algorithms. Introduction. Exploiting the full potential of parallel architectures requires a cooperative effort between the user and the language system. There is a clear trade-off between the amount of information the user has to provide and the amount of effort the compiler has to expend to generate optimal parallel code. The spectrum ranges from low-level languages in which the user has to explicitly encode all the parallelism while the compiler effort is minimal, to sequential languages where the compiler has the full responsibility for extracting the parallelism. High Performance Fortran (HPF) takes the middle groundsharing the responsibility between the user and the compiler/runtime system. It does this by providing Fortran directives which allow the user to express the parallelism and control the data locality at a very high level while utilizing a compiler which uses this information to generate the low-level details such as the required communication statements. In this paper, we focus on applications from Computational Fluid Dynamics (CFD) and show how HPF can be used to express the parallelism for algorithms used in this area. As the requirements of the computational aerodynamicists have increased, applications with single grids have given way to those employing multiple grids and even unstructured grids. We start by providing a brief overview of HPF and use some simple single grid applications to show how HPF directives are used. In Section 3, we focus on applications which use multiple grids in order to generate flow solutions over complex bodies. Section 4 presents unstructured grid applications, describing how the HPF directives can be used to control the data and work distributions required for such codes. Concluding remarks can be found in Section 5. Note that in this paper we are not concerned with the physics of the computations in these algorithms. Rather we focus on the data structures and the computational structures so that we can describe at a high level the approaches that can be used when employing HPF for exploiting the parallelism in these codes.
doi:10.1016/s0167-8191(00)00073-9 fatcat:iwexaqc67rel3m3ujzdtuzavqa