Skip to content

0.2.0

Latest
Compare
Choose a tag to compare
@rouson rouson released this 28 Mar 22:59
· 18 commits to main since this release
42fe4f6

All PRIF Interfaces Defined and Basic Coarray Support Added

This release adds

  1. A new prif module providing the interface bodies for all of procedures in the Parallel Runtime Interface for Fortran (PRIF) procedures,
  2. A symmetric heap for managing the memory associated with intrinsic-type coarrays and derived-type coarrays with no allocatable or pointer components,
  3. A non-symmetric, shared heap for managing derived-type coarrays with allocatable or pointer components, and
  4. An initial working implementation of contiguous Remote Memory Access (RMA) and supporting procedures, as specified by PRIF.

Currently Supported Features

  • Program launch: image creation via the prif_init 🚀
  • Program termination: prif_stop 🛑 and prif_error_stop 🧯 with variable integer or character stop codes
  • Image enumeration: prif_this_image 🖼️ and prif_num_images 🔢
  • Image Queries: prif_image_index ☝️
  • Coarray allocation: allocation and deallocation via the prif_allocate, prif_deallocate 🗑️ , prif_allocate_non_symmetric, prif_deallocate_non_symmetric functions
  • Coarray RMA: Contiguous RMA via the prif_put and prif_get functions
  • Global synchronization: prif_sync_all 🧱
  • Collective subroutines: prif_co_min, prif_co_max, prif_co_sum , prif_co_broadcast 📣, and prif_co_reduce 🥘

Supported Platforms

Compilers

We currently build Caffeine and its dependencies with gfortran and gcc with a goal to support additional compilers in a future release.

Operating systems and architectures

We regularly test on

  • Linux: x86
  • macOS: x86 and Apple Silicon

Limitations

  • The parallel features that are not yet supported have associated PRIF subroutines that can be called and will return an unimplemented error message
  • The current prif_co_reduce implementation
    • Assumes the user-provided prif_co_reduce operation function is commutative,
    • Assumes no user-initiated communication happens during the execution of the user-definedoperation reduction function, and
    • Does not support derived type arguments.
  • Many of the parallel features listed above as supported do not contain support for the optional arguments to the corresponding PRIF routines. For example, the prif_this_image, prif_num_images, and prif_sync_all routines accept the optional arguments but do not support the semantics of the optional arguments.

Full Changelog: 0.1.0...0.2.0