Skip to content

Commit

Permalink
Implementing shared transport for atomicv
Browse files Browse the repository at this point in the history
  • Loading branch information
avincigu committed Dec 18, 2024
1 parent 60d1dac commit a1c8631
Showing 1 changed file with 71 additions and 1 deletion.
72 changes: 71 additions & 1 deletion src/shr_transport.h4
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,77 @@ shmem_shr_transport_atomicv(shmem_ctx_t ctx, void *target, const void *source,
shm_internal_datatype_t datatype)
{
#if USE_SHR_ATOMICS
RAISE_ERROR_STR("No path to peer");
int noderank = shmem_internal_get_shr_rank(pe);
void *remote_ptr;

if (noderank == -1)
RAISE_ERROR_MSG("No shared memory path to peer %d\n", pe);

shmem_shr_transport_ptr(target, noderank, &remote_ptr);

#define SHMEM_DEF_BAND_OP(STYPE,TYPE,ITYPE) \
case ITYPE: \
__atomic_fetch_and((TYPE *)remote_ptr, *((TYPE *)source), __ATOMIC_RELEASE);\
break;

#define SHMEM_DEF_BOR_OP(STYPE,TYPE,ITYPE) \
case ITYPE: \
__atomic_fetch_or((TYPE *)remote_ptr, *((TYPE *)source), __ATOMIC_RELEASE); \
break;

#define SHMEM_DEF_BXOR_OP(STYPE,TYPE,ITYPE) \
case ITYPE: \
__atomic_fetch_xor((TYPE *)remote_ptr, *((TYPE *)source), __ATOMIC_RELEASE);\
break;

#define SHMEM_DEF_SUM_OP(STYPE,TYPE,ITYPE) \
case ITYPE: \
__atomic_fetch_add((TYPE *)remote_ptr, *((TYPE *)source), __ATOMIC_RELEASE);\
break;

switch (op) {
case SHM_INTERNAL_BAND:
switch(datatype) {
SHMEM_DEFINE_FOR_BITWISE_AMO(SHMEM_DEF_BAND_OP)
default:
RAISE_ERROR_MSG("Unsupported datatype op=%d, dtype=%d\n", op, datatype);
}
break;
case SHM_INTERNAL_BOR:
switch(datatype) {
SHMEM_DEFINE_FOR_BITWISE_AMO(SHMEM_DEF_BOR_OP)
default:
RAISE_ERROR_MSG("Unsupported datatype op=%d, dtype=%d\n", op, datatype);
}
break;
case SHM_INTERNAL_BXOR:
switch(datatype) {
SHMEM_DEFINE_FOR_BITWISE_AMO(SHMEM_DEF_BXOR_OP)
default:
RAISE_ERROR_MSG("Unsupported datatype op=%d, dtype=%d\n", op, datatype);
}
break;
case SHM_INTERNAL_SUM:
switch(datatype) {
SHMEM_DEFINE_FOR_AMO(SHMEM_DEF_SUM_OP)
default:
RAISE_ERROR_MSG("Unsupported datatype op=%d, dtype=%d\n", op, datatype);
}
break;
/* Note: The following ops are only used by AMO reductions, which are
* presently disabled when shared memory AMOs are enabled. */
case SHM_INTERNAL_PROD:
case SHM_INTERNAL_MIN:
case SHM_INTERNAL_MAX:
default:
RAISE_ERROR_MSG("Unsupported op op=%d, dtype=%d\n", op, datatype);
}

#undef SHMEM_DEF_BAND_OP
#undef SHMEM_DEF_BOR_OP
#undef SHMEM_DEF_BXOR_OP
#undef SHMEM_DEF_SUM_OP

#else
RAISE_ERROR_STR("No path to peer");
#endif
Expand Down

0 comments on commit a1c8631

Please sign in to comment.