A parallel application binary interface for Fortran 2018 compilers.
Overview | Downloads | Compatibility | Prerequisites | Installation | Getting Started | Contributing | Status Support | Acknowledgments | Donate
OpenCoarrays supports the GNU Compiler Collection (GCC) Fortran compiler
(gfortran
) by providing a parallel application binary interface (ABI) that
abstracts away the underlying communication library. OpenCoarrays thus enables
gfortran
to support Fortran's parallel programming features, often called
"Coarray Fortran," without making direct reference to the back-end communication
library: the Message Passing Interface (MPI). This ensures that Fortran
programs and Fortran compilers may take advantage of other communication
libraries without costly refactoring. Work is underway on the Caffeine
project to support alternative communication libraries and alternative compilers
by defining a compiler-independent parallel ABI atop the GASNet-EX exascale
networking middleware.
OpenCoarrays provides a compiler wrapper (caf
), a parallel runtime library
(libcaf_mpi
), and a program launcher (cafrun
). The wrapper and launcher
provide a uniform abstraction for compiling and executing Coarray Fortran
without direct reference to the underlying MPI layer.
Please see our Releases page.
The OpenCoarrays ABI was adopted by gfortran
in release the GCC 5.1.0 release
and gfortran
continues to work with OpenCoarrays as of this writing.
Building OpenCoarrays requires
gcc
and gfortran
.If you use a package manager or the OpenCoarrays installer, any missing prerequisites will be built for you.
Please see the INSTALL.md file.
Or try OpenCoarrays online as a Jupyter notebook kernel using Binder with no downloads, configuration or installation required. The default index.ipynb notebook is read only, but you can execute it, copy it to make changes, or create an entirely new CAF kernel notebook.
If you would like to be able to install OpenCoarrays through your favorite package manager, please ask them to add it, or contribute it yourself. If you see your favorite package manager has an outdated version, please ask them to update it, or contribute an update yourself.
To start using OpenCoarrays, please see the GETTING_STARTED.md file.
Please see the CONTRIBUTING.md file.
A list of open issues can be viewed on the issues page.
Please submit bug reports and feature requests via our Issues page.
We gratefully acknowledge support from the following institutions:
random_init
subroutine, andco_broadcast
of derived-type objects with allocatable
components.co_broadcast
of derived-type objects.If you find this software useful, please consider donating your time or your money to aid in development efforts.