All PRIF Interfaces Defined and Basic Coarray Support Added
This release adds
- A new
prif
module providing the interface bodies for all of procedures in the Parallel Runtime Interface for Fortran (PRIF) procedures, - A symmetric heap for managing the memory associated with intrinsic-type coarrays and derived-type coarrays with no
allocatable
orpointer
components, - A non-symmetric, shared heap for managing derived-type coarrays with
allocatable
orpointer
components, and - 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
🛑 andprif_error_stop
🧯 with variableinteger
orcharacter
stop codes - Image enumeration:
prif_this_image
🖼️ andprif_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
andprif_get
functions - Global synchronization:
prif_sync_all
🧱 - Collective subroutines:
prif_co_min
,prif_co_max
,prif_co_sum
,prif_co_broadcast
📣, andprif_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-defined
operation
reduction function, and - Does not support derived type arguments.
- Assumes the user-provided
- Many of the parallel features listed above as supported do not contain support for the
optional
arguments to the corresponding PRIF routines. For example, theprif_this_image
,prif_num_images
, andprif_sync_all
routines accept theoptional
arguments but do not support the semantics of theoptional
arguments.
Full Changelog: 0.1.0...0.2.0