Fortran C Shell CMake Makefile Ruby Other
zbeekman Remove macOS CMake tests
 Using MPI with older GFortran still requires a custom bottle
Latest commit 4abda19 Jul 8, 2018
Permalink
Failed to load latest commit information.
.Dockerfiles/master-jupyter-inherit Dockerfile to in cloud with jupyter-CAF-kernel Nov 10, 2017
.github Overall tightening of pull request template Aug 9, 2017
cmake Add `make dist` target using CMake Nov 12, 2017
developer-scripts Test CMake script on macOS with clang & Open-MPI Jul 8, 2018
doc Update `caf.1` and add `cafrun.1` manpages Sep 22, 2017
prerequisites Try to truncate the gcc 8.1 patch to exclude tests May 30, 2018
src Improve build msgs & cache doc for failed images Jul 3, 2018
.VERSION Bump version number for release May 26, 2018
.gitattributes Dockerfile to in cloud with jupyter-CAF-kernel Nov 10, 2017
.pullapprove.yml Cleanup YAML files with yamllint and yaml-lint May 7, 2017
.travis.yml Remove macOS CMake tests Jul 8, 2018
AUTHORS.md Map authors to Github names Feb 12, 2017
Brewfile Update Brewfile Aug 28, 2017
CAF_ABI.md Update repo name opencoarrays --> OpenCoarrays Feb 12, 2017
CMakeLists.txt Never build ISO_Fortran_BINDING by default Jul 3, 2018
CONTRIBUTING.md Update Pull Request template May 30, 2017
FAQ.md Add table of contents in FAQ.md Mar 22, 2018
GETTING_STARTED.md Replace `mpif90` → `mpifort`, `mpirun` → `mpiexec` Jul 18, 2017
INSTALL Fix some language in INSTALL{,.md} Jan 24, 2018
INSTALL.md Use HTTPS for links to avoid redirects when avail Jan 25, 2018
LICENSE Use Github's template Nov 4, 2016
README.md Add blurb in News section about CAF in the cloud Aug 9, 2017
codecov.yml Cleanup YAML files with yamllint and yaml-lint May 7, 2017
install.sh installer detect Windows/invoke windows-install.sh Sep 7, 2017
install.sh-usage Document that -B only works for arg gcc Jan 26, 2018
subkey-328B3A0E-secret.asc.enc Add gpg subkey for signing releases on Travis-CI Jan 21, 2017

README.md

News

You can now try OpenCoarrays online as a Jupyter notebook kernel using Binder! No downloads, configuration or installation required! Please note: the default index.ipynb notebook is read only. You can execute it, but if you want to make changes you should create a copy of it or create an entirely new CAF kernel notebook.

Overview

OpenCoarrays is an open-source software project that supports the coarray Fortran (CAF) parallel programming features of the Fortran 2008 standard and several features proposed for Fortran 2015 in the draft Technical Specification TS 18508 Additional Parallel Features in Fortran.

OpenCoarrays provides a compiler wrapper (named caf), a runtime library (named libcaf_mpi.a by default), and an executable file launcher (named cafrun). With OpenCoarrays-aware compilers, the compiler wrapper passes the provided source code to the chosen compiler (mpifort by default). For non-OpenCoarrays-aware compilers, the wrapper transforms CAF syntax into OpenCoarrays procedure calls before invoking the chosen compiler on the transformed code. The runtime library supports compiler communication and synchronization requests by invoking a lower-level communication library--the Message Passing Interface (MPI) by default. The launcher passes execution to the chosen communication library's parallel program launcher (mpiexec by default).

OpenCoarrays defines an application binary interface (ABI) that translates high-level communication and synchronization requests into low-level calls to a user-specified communication library. This design decision liberates compiler teams from hardwiring communication-library choice into their compilers and it frees Fortran programmers to express parallel algorithms once and reuse identical CAF source with whichever communication library is most efficient for a given hardware platform. The communication substrate for OpenCoarrays built with the preferred build system, CMake, is the Message Passing Interface (MPI).

OpenCoarrays enables CAF application developers to express parallel algorithms without hardwiring a particular version of a particular communication library or library version into their codes. Such abstraction makes application code less sensitive to the evolution of the underlying communication libraries and hardware platforms.

Downloads

Please see our Releases page.

Compatibility

The GNU Compiler Collection (GCC) Fortran front end (gfortran) is OpenCoarrays-aware for release versions 5.1.0 and higher. Users of other compilers, including earlier versions of gfortran, can access a limited subset of CAF features via the provided opencoarrays module. After installation, please execute the caf script (which is installed in the bin directory of the installation path) with no arguments to see a list of the corresponding limitations. Please also notify the corresponding compiler vendor and the OpenCoarrays team that you would like for a future version of the compiler to be OpenCoarrays-aware.

Prerequisites

We expect our LIBCAF_MPI library to be the default OpenCoarrays library. LIBCAF_MPI is the most straightforward to install and use, the most robust in terms of its internal complexity, and the most frequently updated and maintained. Building LIBCAF_MPI requires prior installation of an MPI implementation. We recommend MPICH generally or, if available, MVAPICH for better performance. OpenMPI is another option.

We offer an unsupported LIBCAF_GASNet alternative. We intend for LIBCAF_GASNet to be an "expert" alternative capable of outperforming MPI for some applications on some platforms. LIBCAF_GASNet requires greater care to configure and use and building LIBCAF_GASNet requires prior installation of GASNet.

Installation

Please see the INSTALL.md file.

Getting Started

To start using OpenCoarrays, please see the GETTING_STARTED.md file.

Contributing

Please see the CONTRIBUTING.md file.

Status

A list of open issues can be viewed on the issues page.

Support

Acknowledgements

We gratefully acknowledge support from the following institutions:

  • National Center for Atmospheric Research for access to the Yellowstone/Caldera supercomputers and for logistics support during the initial development of OpenCoarrays.
  • CINECA for access to Eurora/PLX for the project HyPS- BLAS under the ISCRA grant program for 2014.
  • Google for support of a related Google Summer of Code 2014 project.
  • The National Energy Research Scientific Computing Center (NERSC), which is supported by the Office of Science of the U.S. Department of Energy under Contract No. DE-AC02-05CH11231, for access to the Hopper and Edison supercomputers under the OpenCoarrays project start allocation.
  • Sourcery, Inc., for financial support for the domain registration, web hosting, advanced development, and conference travel.

Donate

If you find this software useful, please consider donating your time or your money to aid in development efforts.


GitHub forks GitHub stars GitHub watchers Twitter URL