One original goal of the OpenCoarrays project was to provide a transparent application binary interface (ABI) supported by interchangeable parallel runtime libraries based on a range of communication libraries. The following header files in this directory define that ABI:
- libcaf.h
- libcaf-gfortran-descriptor.h
- libcaf-version-def.h:
where the above files are in dependency order: each file depends on the file(s) listed below it. The runtime-libraries subdirectory contains runtimes based on the following communication libraries:
- Message Passing Interface (MPI)
- OpenSHMEM
- GASNet
We currently maintain, build, and test only the MPI runtime. The GASNet and OpenSHMEM runtime library source code serve only to provide detailed, open-source documentation of the research described by Fanfarillo et al. (2014) and Rouson et al. (2017). For a Fortran 2018 parallel runtime library based on the more recent GASNet-EX exascale networking middleware described by Bonachea and Hargrove (2018), please see the Caffeine repository.
One exception regarding the transparent nature of the ABI is the opencoarrays module, which provides a public function that returns the underlying MPI communicator. This capability can be useful for using coarray Fortran to drive an ensemble of simulations using pre-existing MPI as described in Rouson, McCreight, and Fanfarillo (2017).