[flang-commits] [flang] Parallel runtime library design doc (PRIF) (PR #76088)

Brad Richardson via flang-commits flang-commits at lists.llvm.org
Wed Jul 17 10:31:43 PDT 2024


everythingfunctional wrote:

We've just produced a new revision of this document, for those interested in reviewing a nicely formatted version, the following link provides a PDF:
http://doi.org/10.25344/S4WG64

The changes from the previous revision are:

* Changes to Coarray Access (puts and gets):
  - Refactor to provide separate procedure interfaces for the various combinations of: 
    direct vs indirect target location, puts with or without a *notify-variable*, 
    direct vs indirect *notify-variable* location, and strided vs contiguous data access.
  - Add discussion of direct and indirect location accesses to
    the Design Decisions and Impact section
  - Rename `_raw_` procedures to `_indirect_`
  - Replace `cosubscripts`, `team`, and `team_number` arguments with `image_num` 
  - Replace `first_element_addr` arguments with `offset` 
  - Replace `type(*)` `value` arguments with `size` and `current_image_buffer`
  - Rename `remote_ptr_stride` arguments to `remote_stride`
  - Rename `current_image_buffer_stride` arguments to `current_image_stride`
  - Rename `size` arguments to `size_in_bytes`

* Other changes to PRIF procedure interfaces:
  - Establish a new uniform argument ordering across all non-collective
    communication procedures
  - Remove `prif_base_pointer`. Direct access procedures should be used instead.
  - Add direct versions of `prif_event_post`, `prif_lock`, and
   `prif_unlock` and rename previous versions to `..._indirect`
  - Convert `prif_num_images` into three different procedures with no
    optional arguments, in order to more closely align with the
    Fortran standard. Do the same with `prif_image_index`.
  - Correct the kind for atomic procedures from `atomic_int_kind` to `PRIF_ATOMIC_INT_KIND`
    and from `atomic_logical_kind` to `PRIF_ATOMIC_LOGICAL_KIND`
  - Remove target attribute from `coarray_handles` argument in `prif_deallocate_coarray`
  - Rename `element_length` argument in `prif_allocate_coarray` to `element_size`
  - Rename `image_index` argument in `prif_this_image_no_coarray` to `this_image`
  - Remove generic interfaces throughout

* Miscellaneous new features:
  - Allow multiple calls to `prif_init` from each process, and add
    `PRIF_STAT_ALREADY_INIT` constant 
  - Add new PRIF-specific constants `PRIF_VERSION_MAJOR` and `PRIF_VERSION_MINOR`

* Narrative and editorial improvements:
  - Add/improve Common Arguments subsections and add links to them
    below procedure interfaces
  - Elide argument lists for all procedures and add prose explaining
    how the PRIF specification presents the procedure interfaces
  - Add client notes to subsections introducing PRIF Types, and permute subsection order
  - Add guidance to clients regarding coarray dummy arguments
  - Remove grammar non-terminals, including `coindexed-named-object`
  - Add several terms to the glossary
  - Numerous minor wording changes throughout

https://github.com/llvm/llvm-project/pull/76088


More information about the flang-commits mailing list