Giter Club home page Giter Club logo

caffeine's Introduction

Caffeine

CoArray Fortran Framework of Efficient Interfaces to Network Environments

Caffeine is a parallel runtime library that aims to support Fortran compilers with a programming-model-agnostic application interface to various communication libraries. Current work is on supporting the Parallel Runtime Interface for Fortran (PRIF) with the GASNet-EX exascale-ready networking middleware. Future plans include support for an alternative Message Passing Interface (MPI) back end.

Caffeine system stack diagram

Prerequisites

Build prerequisites

The install.sh script uses the following packages:

The script will invoke these if present in a user's PATH. If not present, the script will ask permission to use Homebrew to install the relevant package.

Caffeine leverages the following non-parallel features of Fortran to simplify the writing of a portable, compact runtime-library that supports Fortran's parallel features:

Feature Introduced in
The iso_c_binding module Fortran 2003
The contiguous attribute Fortran 2008
Submodule support [1] Fortran 2008
do concurrent [2] Fortran 2008
The ISO_Fortran_binding.h C header file Fortran 2018
Assumed-type dummy arguments: type(*) Fortran 2018
Assumed-rank dummy arguments: array(..) Fortran 2018

[1] This feature simplifies development but is not essential to the package

[2] This feature is used to support only co_reduce and might become optional in a future release.

Download, build, and run an example

git clone https://github.com/BerkeleyLab/caffeine.git
cd caffeine
./install.sh
export GASNET_PSHM_NODES=8
FC=<Fortran-compiler-path> CC=<C-compiler-path> CXX=<C++-compiler-path> ./build/run-fpm.sh run --example hello

Run tests

./build/run-fpm.sh test

Publications

Citing Caffeine? Please use the following publication:

Damian Rouson, Dan Bonachea.
"Caffeine: CoArray Fortran Framework of Efficient Interfaces to Network Environments",
Proceedings of the Eighth Annual Workshop on the LLVM Compiler Infrastructure in HPC (LLVM-HPC2022), November 2022.
Paper: https://doi.org/10.25344/S4459B
Talk Slides

Caffeine is an implementation of the Parallel Runtime Interface for Fortran (PRIF):

Damian Rouson, Brad Richardson, Dan Bonachea, Katherine Rasmussen.
"Parallel Runtime Interface for Fortran (PRIF) Design Document, Revision 0.2",
Lawrence Berkeley National Laboratory Technical Report (LBNL-2001563), December 2023.
https://doi.org/10.25344/S4DG6S

Documentation

One of our continuous integration (CI) scripts generates up-to-date Caffeine documentation using ford. The CI script also deploys the generated documentation to the our GitHub Pages site. Alternatively, generate HTML documentation locally using ford as follows:

ford doc-generator.md

Open doc/html/index.html in a web browser.

Funding

The Computer Languages and Systems Software (CLaSS) Group at Berkeley Lab has developed Caffeine development on funding from the Exascale Computing Project (ECP) and the Stewardship for Programming Systems and Tools (S4PST) project.

License

See LICENSE.txt for usage terms and conditions.

caffeine's People

Contributors

rouson avatar ktras avatar everythingfunctional avatar wyphan avatar bonachea avatar awehrfritz avatar arthurpv avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.