Add missing atomic_domain operations

Issue #131 resolved
Dan Bonachea created an issue

GASNet-EX remote atomics support includes the following operations, all of which are currently missing at the UPC++ level:

  1. atomic_domain.(fetch_)mult
  2. atomic_domain.(fetch_)min
  3. atomic_domain.(fetch_)max
  4. atomic_domain.(fetch_)bit_and - only for integer types
  5. atomic_domain.(fetch_)bit_or - only for integer types
  6. atomic_domain.(fetch_)bit_xor - only for integer types

We should add them to the UPC++ spec and implementation.

Now that the atomics spec is factored, the spec work should be a simple matter of adding them to the operation enum and function table. The implementation should be similarly mechanical.

@sbbaden has an immediate use case for atomic_domain.bit_xor(), which is required for implementing HPC Challenge RandomAccess (GUPS) using remote atomics - which is likely to be best fine-grained implementation we can produce for large-scale runs on Cray XT and other systems with offload support for atomics.

Comments (1)

  1. Log in to comment