Fortran M is a small set of extensions to Fortran that supports a modular approach to parallel programming , permits the writing of provably deterministic parallel programs , allows the specification of dynamic process and communication structures, provides for the integration of task and data parallelism, and enables compiler optimizations aimed at communication as well as computation. Fortran M provides constructs for creating tasks and channels, for sending messages on channels, for mapping tasks and data to processors, and so on.
Because Fortran M extends Fortran 77 , any valid Fortran program is also a valid Fortran M program. (There is one exception to this rule: the keyword COMMON must be renamed to PROCESS COMMON . However, this requirement can be overridden by a compiler argument; see §4.1.) The extensions themselves have a Fortran ``look and feel'' and are intended to be easy to use: they can be mastered in a few hours.
The basic paradigm underlying Fortran M is task-parallelism : the parallel execution of (possibly dissimilar) tasks. Hence, Fortran M complements data-parallel languages such as Fortran D and High Performance Fortran (HPF) . In particular, Fortran M can be used to coordinate multiple data-parallel computations. Our goal is to integrate HPF with Fortran M, thus combining the data-parallel and task-parallel programming paradigms in a single system.
Current application efforts include coupled climate models, multidisciplinary design, air quality modeling, particle-in-cell codes, and computational biology.