Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,26 @@ program that execute asynchronously in shared or distributed memory, except
where a program uses specific synchronization mechanisms. Fortran's
coarray feature provides distributed data structures that offer a subscripted,
multidimensional array notation defining a partitioned global address space
(PGAS). One image can use the cosubscript notation to perform one-sided access
(PGAS). One image can use a coindexed notation to perform one-sided access
of coarray data associated with another image.

Fortran 2018 greatly expanded this feature set to include such concepts as
Fortran 2018 greatly expanded this feature set to include concepts such as
teams (groupings) of images, events (counting semaphores), collective
subroutines and failed-image detection (fault tolerance). Fortran 2023 provided
additional, minor multi-image extensions, including notified remote data access.

Several popular Fortran compilers, including [LLVM Flang](https://flang.llvm.org/docs/FortranStandardsSupport.html)
and LFortran, currently
and [LFortran](https://github.com/lfortran/lfortran), currently
lack complete support for multi-image parallel execution. These features are a mandatory
part of Fortran, and thus are an important part of reaching full compliance with
the 2008, 2018, or 2023 versions of the Fortran standard. Thanks to PRIF and Caffeine,
the forthcoming LLVM Flang 22 release is expected to support a meaningful subset of
multi-image Fortran features. For more details, see
[LLVM-HPC2025 paper](#Additional-Publications) below.
the 2008, 2018, or 2023 revisions of the Fortran standard.
The latest LLVM Flang 22 release adds experimental support for a
[meaningful subset](https://flang.llvm.org/docs/FortranStandardsSupport.html#fortran-2018)
of multi-image Fortran features using PRIF and Caffeine.
For more details, see [LLVM-HPC2025 paper](#Additional-Publications) below.

Caffeine provides a portable, high-performance and open-source parallel
runtime library that such compilers can target in code generation as part of
runtime library that compilers can target in code generation as part of
their solution to support Fortran's multi-image parallel features.

Prerequisites & Dependencies
Expand Down Expand Up @@ -132,10 +133,16 @@ using Fortran's multi-image features to print a message from each image.

Run tests
---------

After installation, one can optionally issue the following command to run
Caffeine's correctness unit tests to exercise the PRIF subroutines:

```
./run-fpm.sh test
```

Note that some unit tests are conditionally skipped based on platform and configuration details.

Recognized Environment Variables
--------------------------------

Expand Down
2 changes: 1 addition & 1 deletion docs/README-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Release Procedure for Caffeine
2. When testing on Perlmutter, use the following steps:
1. Build source and tests on the login node using the desired compiler
2. Get a dedicated node: `salloc -t 10 -N 2 -n 8 -q interactive -A PROJECT_ID -C cpu`
3. Launch the parallel job to run the tests: `env SUBJOB_PREFIX=skip GASNET_SUPERNODE_MAXSIZE=2 CAF_IMAGES=8 build/run-fpm.sh test --verbose`
3. Launch the parallel job to run the tests: `env SUBJOB_PREFIX=skip GASNET_SPAWN_VERBOSE=1 GASNET_SUPERNODE_MAXSIZE=2 CAF_IMAGES=8 build/run-fpm.sh test --verbose`
8. Create annotated tag (only after release candidate has been checked by team members)
For example `git tag -a #.#.# -m "release version #.#.#"`, then `git push origin #.#.#`
9. Publish the release
Expand Down
5 changes: 2 additions & 3 deletions docs/implementation-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@ more details about the implementation of the various PRIF features, please see t
following sections:

- [Named Constants](#Named-Constants)
- [`stat` and `errmsg` support](#stat-and-errmsg-support)
- [Program Startup and Shutdown](#Program-Startup-and-Shutdown)
- [Image Queries](#Image-Queries)
- [Storage Management](#Storage-Management)
- [Coarray Queries](#Coarray-Queries)
- [Continguous Coarray Access](#Continguous-Coarray-Access)
- [Contiguous Coarray Access](#Contiguous-Coarray-Access)
- [Strided Coarray Access](#Strided-Coarray-Access)
- [SYNC Statements](#SYNC-Statements)
- [Locks and Unlocks](#Locks-and-Unlocks)
Expand All @@ -23,7 +22,7 @@ following sections:
- [Collectives](#Collectives)
- [Atomic Memory Operations](#Atomic-Memory-Operations)

The priorites for feature implementation and addressing known defects is communicated by
The priorites for feature implementation and addressing known defects are communicated by
the labels in the Caffeine [issue tracker](https://github.com/BerkeleyLab/caffeine/issues).

## Named Constants
Expand Down