All Projects → sourceryinstitute → Opencoarrays

sourceryinstitute / Opencoarrays

Licence: bsd-3-clause
A parallel application binary interface for Fortran 2018 compilers.

Programming Languages

fortran
972 projects

Projects that are alternatives of or similar to Opencoarrays

Mfem
Lightweight, general, scalable C++ library for finite element methods
Stars: ✭ 667 (+341.72%)
Mutual labels:  parallel-computing, scientific-computing, hpc, high-performance-computing
Sundials
SUNDIALS is a SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. This is a mirror of current releases, and development will move here eventually. Pull requests are welcome for bug fixes and minor changes.
Stars: ✭ 194 (+28.48%)
Mutual labels:  parallel-computing, scientific-computing, hpc, high-performance-computing
t8code
Parallel algorithms and data structures for tree-based AMR with arbitrary element shapes.
Stars: ✭ 37 (-75.5%)
Mutual labels:  hpc, parallel-computing, high-performance-computing
Samrai
Structured Adaptive Mesh Refinement Application Infrastructure - a scalable C++ framework for block-structured AMR application development
Stars: ✭ 160 (+5.96%)
Mutual labels:  parallel-computing, scientific-computing, hpc
Feelpp
💎 Feel++: Finite Element Embedded Language and Library in C++
Stars: ✭ 229 (+51.66%)
Mutual labels:  parallel-computing, scientific-computing, high-performance-computing
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (-81.46%)
Mutual labels:  hpc, parallel-computing, high-performance-computing
PyMFEM
Python wrapper for MFEM
Stars: ✭ 91 (-39.74%)
Mutual labels:  hpc, parallel-computing, scientific-computing
bitpit
Open source library for scientific HPC
Stars: ✭ 80 (-47.02%)
Mutual labels:  hpc, parallel-computing, scientific-computing
Batchtools
Tools for computation on batch systems
Stars: ✭ 127 (-15.89%)
Mutual labels:  parallel-computing, hpc, high-performance-computing
Dash
DASH, the C++ Template Library for Distributed Data Structures with Support for Hierarchical Locality for HPC and Data-Driven Science
Stars: ✭ 134 (-11.26%)
Mutual labels:  parallel-computing, hpc, high-performance-computing
Visit
VisIt - Visualization and Data Analysis for Mesh-based Scientific Data
Stars: ✭ 140 (-7.28%)
Mutual labels:  scientific-computing, hpc
Edge
Extreme-scale Discontinuous Galerkin Environment (EDGE)
Stars: ✭ 18 (-88.08%)
Mutual labels:  scientific-computing, high-performance-computing
Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (+425.17%)
Mutual labels:  parallel-computing, high-performance-computing
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+423.18%)
Mutual labels:  parallel-computing, scientific-computing
Sos
Sandia OpenSHMEM is an implementation of the OpenSHMEM specification over multiple Networking APIs, including Portals 4, the Open Fabric Interface (OFI), and UCX. Please click on the Wiki tab for help with building and using SOS.
Stars: ✭ 34 (-77.48%)
Mutual labels:  parallel-computing, hpc
Nasoq
NASOQ:Numerically Accurate Sparsity Oriented QP Solver
Stars: ✭ 30 (-80.13%)
Mutual labels:  scientific-computing, high-performance-computing
Geopm
Global Extensible Open Power Manager
Stars: ✭ 57 (-62.25%)
Mutual labels:  hpc, high-performance-computing
P4pdes
C and Python examples from my book on using PETSc to solve PDEs
Stars: ✭ 67 (-55.63%)
Mutual labels:  parallel-computing, scientific-computing
Parenchyma
An extensible HPC framework for CUDA, OpenCL and native CPU.
Stars: ✭ 71 (-52.98%)
Mutual labels:  parallel-computing, hpc
Kokkos
Kokkos C++ Performance Portability Programming EcoSystem: The Programming Model - Parallel Execution and Memory Abstraction
Stars: ✭ 744 (+392.72%)
Mutual labels:  parallel-computing, high-performance-computing

Overview

OpenCoarrays supports Fortran 2018 compilers by providing a parallel application binary interface (ABI) that abstracts away the underlying parallel programming model, which can be the Message Passing Interface (MPI) or OpenSHMEM. Parallel Fortran 2018 programs may be written and compiled into object files once and then linked or re-linked to either MPI or OpenSHMEM without modifying or recompiling the Fortran source. Not a single line of source code need change to switch parallel programming models. The default programming model is MPI because it provides the broadest capability for supporting Fortran 2018 features. However, having the option to change parallel programming models at link-time may enhance portability and performance (see Rouson et al. (2017)).

OpenCoarrays provides a compiler wrapper (caf), parallel runtime libraries (libcaf_mpi and libcaf_openshmem), and a parallel executable file launcher (cafrun). The wrapper and launcher provide a uniform abstraction for compiling and executing parallel Fortran 2018 programs without direct reference to the underlying parallel programming model.

Downloads

Please see our Releases page.

Compatibility

The GNU Compiler Collection (GCC) Fortran front end (gfortran) has used OpenCoarrays since the GCC 5.1.0 release . Discussions are under way around incorporating OpenCoarrays into other compilers.

Prerequisites

Building OpenCoarrays requires

  • An MPI implementation (default: MPICH).
  • CMake.
  • A Fortran compiler (default: GCC).
  • Optional: An OpenSHMEM implementation.

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:

  • 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.
  • 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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].