Skip to content

Latest commit

 

History

History
249 lines (201 loc) · 7.99 KB

implementation-status.md

File metadata and controls

249 lines (201 loc) · 7.99 KB

Implementation Status

Caffeine is an implementation of the Parallel Runtime Interface for Fortran (PRIF). This document outlines the implementation status in Caffeine of the features defined in the latest PRIF specification, revision 0.5. Caffeine contains interfaces for all of the PRIF procedures (except when stated otherwise below) and the symbols are linkable and callable, but some procedures will fail at runtime with an unimplemented error. For more details about the implementation of the various PRIF features, please see the following sections:

Named Constants

Caffeine contains definitions for all of the PRIF-relevant constants from ISO_FORTRAN_ENV and for all of the PRIF-specific constants.

stat and errmsg support

Many PRIF procedures have optional arguments stat, errmsg, and errmsg_alloc. There is no support for these optional arguments in Caffeine yet and this is not represented in the tables in the following sections.

Program Startup and Shutdown

Support = partial

Procedure Status Notes
prif_init YES
prif_stop, prif_error_stop partial Missing support for quiet=.true.
prif_fail_image no
prif_register_stop_callback YES

Image Queries

Support = partial

Procedure Status Notes
prif_num_images YES
prif_num_images_with_team, prif_num_images_with_team_number no
prif_this_image_no_coarray partial team argument is ignored
prif_this_image_with_coarray, prif_this_image_with_dim no
prif_failed_images no
prif_stopped_images no
prif_image_status no

Storage Management

Support = partial (no support for coarray aliases)

Procedure Status Notes
prif_allocate_coarray YES
prif_allocate YES
prif_deallocate_coarray partial no final_func arg support
prif_deallocate YES
prif_alias_create no
prif_alias_destroy no

Coarray Queries

Support = partial (only support for prif_image_index)

Procedure Status Notes
prif_set_context_data, prif_get_context_data no
prif_size_bytes no
prif_lcobound_no_dim, prif_lcobound_with_dim no
prif_ucobound_no_dim, prif_ucobound_with_dim no
prif_coshape no
prif_local_data_pointer YES
prif_image_index YES
prif_image_index_with_team no
prif_image_index_with_team_number no

Continguous Coarray Access

Support = partial

Procedure Status Notes
prif_get YES
prif_get_indirect YES
prif_put YES
prif_put_indirect YES
prif_put_with_notify no
prif_put_with_notify_indirect no
prif_put_indirect_with_notify no
prif_put_indirect_with_notify_indirect no

Strided Coarray Access

Support = no


SYNC Statements

Support = partial ( only support for prif_sync_all)

Procedure Status Notes
prif_sync_memory no
prif_sync_all YES
prif_sync_images no
prif_sync_team no

Locks and Unlocks

Support = no


Critical

Support = no


Events and Notifications

Support = no


Teams

Support = partial (No support for prif_get_team and prif_team_number)

Procedure Status Notes
prif_form_team YES
prif_get_team no
prif_team_number no
prif_change_team YES
prif_end_team YES

Collectives

Support = partial (...)

Procedure Status Notes
prif_co_broadcast YES
prif_co_max partial only supports 32-bit and 64-bit numeric types
prif_co_max_character no procedure not yet added to Caffeine
prif_co_min partial only supports 32-bit and 64-bit numeric types
prif_co_min_character no procedure not yet added to Caffeine
prif_co_sum partial only supports 32-bit and 64-bit numeric types
prif_co_reduce partial only supports intrinsic types (no support for derived types), interface not yet updated to v0.5

Atomic Memory Operations

Support = no