• Stars
    star
    247
  • Rank 164,117 (Top 4 %)
  • Language
    Fortran
  • License
    BSD 3-Clause "New...
  • Created over 9 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A parallel application binary interface for Fortran 2018 compilers.

Overview

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.

Downloads

Please see our Releases page.

Compatibility

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.

Prerequisites

Building OpenCoarrays requires

  • An MPI implementation,
  • CMake, and
  • The GCC C and Fortran compilers: gcc and gfortran.

If you use a package manager or the OpenCoarrays installer, any missing prerequisites will be built for you.

Installation

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.

Packaged Version

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.

Packaging status

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

Please submit bug reports and feature requests via our Issues page.

Acknowledgments

We gratefully acknowledge support from the following institutions:

  • The U.S. Nuclear Regulatory Commission (NRC) for funding the work that led to support for
    • the Windows operating system,
    • the random_init subroutine, and
    • co_broadcast of derived-type objects with allocatable components.
  • The National Aeronautics and Space Administration NASA for funding the work that led to support for the co_broadcast of derived-type objects.
  • Arm for approving compiler engineer contributions of code.
  • 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.
  • Archaeologic 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

More Repositories

1

jupyter-CAF-kernel

✨ A Coarray Fortran Jupyter notebook kernel ☁️ πŸ’» πŸ““ ⚑
Jupyter Notebook
56
star
2

Scientific-Software-Design

Code examples from Rouson, Xia & Xu (Cambridge University Press, 2011)
Fortran
39
star
3

smart-pointers

An object-oriented, extensible reference-counting utility for Fortran
Fortran
23
star
4

MORFEUS-Source

Multi-physics Object-oriented Reconfigurable Fluid Environment for Unified Simulations
Fortran
22
star
5

ISO_Fortran_binding

C/Fortran interoperability library
C
17
star
6

sourcery

A grab bag of tricks
Fortran
12
star
7

FEATS

Framework for Extensible Asynchronous Task Scheduling
Fortran
10
star
8

fidbits

Fortran tidbits: small pieces of tasty code and preservable items from conversation.
Fortran
8
star
9

rocket-science

A case study in modernizing legacy Fortran software
Fortran
7
star
10

docker-base

Light-weight, minimal base image for GCC MPICH OpenCoarrays
Shell
6
star
11

mpich-docker-image

Light-weight, minimal base image containing and installation of MPICH
Shell
4
star
12

PAW

PGAS Application Workshop
4
star
13

cmake-superproject-example

CMake superbuild of the daglib directed acyclic graph library and its dependencies
Fortran
3
star
14

homebrew-formulae

Sourcery institute tap for Homebrew formulae not in homebrew/homebrew-core
Ruby
2
star
15

si-nov-2018

Code examples for live coding and hands-on exercises
Fortran
2
star
16

emulators

Emulated collectives collection: collective subroutines and other procedures designed to emulate or extend standard language features.
Fortran
2
star
17

CentOS-dev-env

Latest CentOS stable release with latest stable GCC, git, CMake
Shell
2
star
18

miniFAVOR

A proxy application for fracture analysis of pressure vessels
Fortran
1
star
19

quarantine

Collaborative bug isolation exercise
HTML
1
star
20

Defunct

ad hoc tests for modern Fortran compilers
Fortran
1
star
21

hello-world

"Hello, world!" programs demonstrating features introduced by various historical Fortran standards
Fortran
1
star