Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
84538b5
hoist code out of conditional
jeffhammond Sep 27, 2024
dc8e367
start workoing on request-based RMA (again)
jeffhammond Sep 27, 2024
ad68f25
1) do not set aggregate initially (2) fix warning text
jeffhammond Sep 30, 2024
f6bccc9
small changes to design
jeffhammond Sep 30, 2024
62f8c39
add feature to use request-based RMA in atomics
jeffhammond Sep 30, 2024
4aa47b2
merge gmr-extras.c into gmr.c
jeffhammond Sep 30, 2024
c7b9899
add README for ARMCI_USE_REQUEST_ATOMICS
jeffhammond Sep 30, 2024
97b6809
add a nonblocking request handle to all put/get/acc operations in gmr
jeffhammond Sep 30, 2024
97017ce
more request prep
jeffhammond Sep 30, 2024
a578579
implement request-based RMA
jeffhammond Oct 1, 2024
b2555a1
fix strict aliasing rule violation that offends address sanitizer
jeffhammond Oct 1, 2024
d7d2f82
fix request array append
jeffhammond Oct 3, 2024
804771c
formatting and C99 loops
jeffhammond Oct 3, 2024
cef5391
formatting and C99 loops
jeffhammond Oct 3, 2024
b0375fa
add just-flushall code path for when things are weird
jeffhammond Oct 3, 2024
b485a3b
default to request-based atomics; print whether handles use RMA requests
jeffhammond Oct 3, 2024
633bcd5
turn off just_flushall; use Waitall again
jeffhammond Oct 3, 2024
ac26a2c
remove just_flushall code path; allow inactive handles but warn
jeffhammond Oct 3, 2024
c4612ff
whitespace and code motion
jeffhammond Oct 3, 2024
641ef17
cleanup/finish nonblocking handle stuff
jeffhammond Oct 3, 2024
87f2b55
workaround bug
jeffhammond Oct 3, 2024
475055f
remove just_flushall
jeffhammond Oct 3, 2024
1cbb894
relax assertions in PARMCI_Wait related to uninitialized handles
jeffhammond Oct 3, 2024
34280ee
fixed many incorrect/spurious warnings
jeffhammond Oct 4, 2024
d85f387
remove printf
jeffhammond Oct 4, 2024
fd8b6c6
these warnings appear to generate false positives
jeffhammond Oct 4, 2024
87f724d
reorganize init code so Warning works better
jeffhammond Oct 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ libarmci_la_SOURCES = src/buffer.c \
src/internals.c \
src/malloc.c \
src/gmr.c \
src/gmr-extras.c \
src/message.c \
src/message_gop.c \
src/mutex.c \
Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,11 @@ Boolean environment variables are enabled when set to a value beginning with

Argument to `usleep()` to pause the progress polling loop.

`ARMCI_USE_REQUEST_ATOMICS` (boolean)

Switch to request-based RMA (with Rget_accumulate) instead of
Fetch_and_op/Compare_and_swap plus a local flush.

## Noncollective Groups

`ARMCI_NONCOLLECTIVE_GROUPS` (boolean)
Expand Down
10 changes: 9 additions & 1 deletion src/armci.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
#ifndef _ARMCI_H_
#define _ARMCI_H_

// TODO add to build system
#define USE_RMA_REQUESTS 1

#include <mpi.h>

#define ARMCI_MPI 3
Expand Down Expand Up @@ -64,11 +67,16 @@ int ARMCI_PutS_flag(void *src_ptr, int src_stride_ar[/*stride_levels*/],
int count[/*stride_levels+1*/], int stride_levels,
int *flag, int value, int proc);


typedef struct armci_hdl_s
{
#ifdef USE_RMA_REQUESTS
int batch_size;
MPI_Request single_request; // used when batch_size=0 (common case)
MPI_Request *request_array; // used when batch_size>0
#else
int target; /* we do not actually support individual completion */
int aggregate;
#endif
}
armci_hdl_t;

Expand Down
7 changes: 4 additions & 3 deletions src/armci_internals.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ typedef struct {
int rma_nocheck; /* Use MPI_MODE_NOCHECK on synchronization calls that take assertion */
int disable_shm_accumulate; /* Set the disable_shm_accumulate window info key to true */
int use_same_op; /* Set accumulate_ops=same_op window info key */
int use_request_atomics; /* Use request-based RMA for atomic operations */
char rma_ordering[20]; /* Set accumulate_ordering=<this> window info key */

size_t memory_limit; /* upper bound on how much memory ARMCI can allocate */
Expand Down Expand Up @@ -202,12 +203,12 @@ void ARMCII_Strided_to_dtype(int stride_array[/*stride_levels*/], int count[/*st
int stride_levels, MPI_Datatype old_type, MPI_Datatype *new_type);

int ARMCII_Iov_op_dispatch(enum ARMCII_Op_e op, void **src, void **dst, int count, int size,
int datatype, int overlapping, int same_alloc, int proc, int blocking);
int datatype, int overlapping, int same_alloc, int proc, int blocking, armci_hdl_t * handle);

int ARMCII_Iov_op_batched(enum ARMCII_Op_e op, void **src, void **dst, int count, int elem_count,
MPI_Datatype type, int proc, int consrv /* if 1, batched = safe */, int blocking);
MPI_Datatype type, int proc, int consrv /* if 1, batched = safe */, int blocking, armci_hdl_t * handle);
int ARMCII_Iov_op_datatype(enum ARMCII_Op_e op, void **src, void **dst, int count, int elem_count,
MPI_Datatype type, int proc, int blocking);
MPI_Datatype type, int proc, int blocking, armci_hdl_t * handle);

armcii_iov_iter_t *ARMCII_Strided_to_iov_iter(
void *src_ptr, int src_stride_ar[/*stride_levels*/],
Expand Down
217 changes: 0 additions & 217 deletions src/gmr-extras.c

This file was deleted.

Loading