Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
6f3bf4c
test/bench: adapt p2p tests to multi-pair tests
hzhou Aug 7, 2025
005451f
test/bench: add p2p_self test
hzhou Aug 8, 2025
2e75378
misc: add MPIR_async_test
hzhou Jan 31, 2024
74630f4
ch4/ofi: create general pipeline chunk pools
hzhou Aug 5, 2025
3f25663
ch4/ofi: wrap initialization of per-vci struct
hzhou Aug 6, 2025
9213ff5
ch4/ofi: make MPIDI_OFI_request_t a union
hzhou Aug 10, 2025
0a30064
ch4/ofi: add MPIR_CVAR_CH4_OFI_RNDV_PROTOCOL
hzhou Aug 5, 2025
255ad49
ch4/ofi: add MPIDI_OFI_RNDV_{send,recv}_hdr
hzhou Aug 7, 2025
70e6d15
ch4/ofi: avoid posting large buffer in recv
hzhou Aug 5, 2025
7bdf40b
ch4/ofi: add rndv pipeline protocol
hzhou Aug 1, 2025
d12c93b
ch4/ofi: add rndv read protocol
hzhou Aug 6, 2025
228e722
ch4/ofi: add rndv write protocol
hzhou Aug 8, 2025
b7d35ce
ch4/ofi: remove the old gpu pipeline code
hzhou Aug 7, 2025
a80ced9
ch4/ofi: remove the huge protocol
hzhou Aug 7, 2025
b5fec23
ch4/ofi: removing leftover constants
hzhou Aug 8, 2025
6acf08b
ch4/ofi: remove MPIR_CVAR_CH4_OFI_EAGER_MAX_MSG_SIZE
hzhou Aug 7, 2025
d649898
ch4/ofi: fix warnings in MPIDI_NM_progress
hzhou Aug 7, 2025
561710f
ch4/ofi: refactor and implement rndv auto selection
hzhou Aug 8, 2025
9630d42
ch4/ofi: synchronize remote_data_sz in rndv protocols
hzhou Aug 9, 2025
551c238
ch4/ofi: avoid overwriting rndv fields
hzhou Aug 10, 2025
f634d90
ch4/ofi: fix thread critical sections in rndv algorithms
hzhou Aug 11, 2025
e1a40a8
test: add tests to cover ofi rndv protocols
hzhou Aug 11, 2025
0335526
ch4/ofi: fix MPIDI_OFI_rndv_need_pack for reg_host
hzhou Aug 18, 2025
f4b1e3e
ch4/ofi: fix noinline build
hzhou Aug 20, 2025
5e8794d
ch4: pass rreq to MPIDI_NM_am_can_do_tag
hzhou Aug 20, 2025
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: 1 addition & 0 deletions src/mpid/ch4/netmod/ofi/Makefile.mk
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ mpi_core_sources += src/mpid/ch4/netmod/ofi/func_table.c \
src/mpid/ch4/netmod/ofi/ofi_part.c \
src/mpid/ch4/netmod/ofi/ofi_events.c \
src/mpid/ch4/netmod/ofi/ofi_rndv.c \
src/mpid/ch4/netmod/ofi/ofi_rndv_read.c \
src/mpid/ch4/netmod/ofi/ofi_pipeline.c \
src/mpid/ch4/netmod/ofi/ofi_huge.c \
src/mpid/ch4/netmod/ofi/ofi_progress.c \
Expand Down
12 changes: 12 additions & 0 deletions src/mpid/ch4/netmod/ofi/ofi_events.c
Original file line number Diff line number Diff line change
Expand Up @@ -677,6 +677,18 @@ int MPIDI_OFI_dispatch_function(int vci, struct fi_cq_tagged_entry *wc, MPIR_Req
mpi_errno = MPIDI_OFI_pipeline_recv_chunk_event(wc, req);
break;

case MPIDI_OFI_EVENT_RNDVREAD_RECV_MRS:
mpi_errno = MPIDI_OFI_rndvread_recv_mrs_event(wc, req);
break;

case MPIDI_OFI_EVENT_RNDVREAD_READ_CHUNK:
mpi_errno = MPIDI_OFI_rndvread_read_chunk_event(wc, req);
break;

case MPIDI_OFI_EVENT_RNDVREAD_ACK:
mpi_errno = MPIDI_OFI_rndvread_ack_event(wc, req);
break;

case MPIDI_OFI_EVENT_CHUNK_DONE:
mpi_errno = chunk_done_event(vci, wc, req);
break;
Expand Down
3 changes: 3 additions & 0 deletions src/mpid/ch4/netmod/ofi/ofi_events.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ int MPIDI_OFI_peek_rndv_event(int vci, struct fi_cq_tagged_entry *wc, MPIR_Reque
int MPIDI_OFI_rndv_cts_event(int vci, struct fi_cq_tagged_entry *wc, MPIR_Request * req);
int MPIDI_OFI_pipeline_send_chunk_event(struct fi_cq_tagged_entry *wc, MPIR_Request * r);
int MPIDI_OFI_pipeline_recv_chunk_event(struct fi_cq_tagged_entry *wc, MPIR_Request * r);
int MPIDI_OFI_rndvread_recv_mrs_event(struct fi_cq_tagged_entry *wc, MPIR_Request * r);
int MPIDI_OFI_rndvread_read_chunk_event(struct fi_cq_tagged_entry *wc, MPIR_Request * r);
int MPIDI_OFI_rndvread_ack_event(struct fi_cq_tagged_entry *wc, MPIR_Request * r);

MPL_STATIC_INLINE_PREFIX MPL_gpu_engine_type_t MPIDI_OFI_gpu_get_recv_engine_type(void)
{
Expand Down
34 changes: 34 additions & 0 deletions src/mpid/ch4/netmod/ofi/ofi_pre.h
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,40 @@ typedef struct {
} MPIDI_OFI_pipeline_t;

typedef struct {
const void *buf;
MPI_Aint count;
MPI_Datatype datatype;
/* cached fields */
MPL_pointer_attr_t attr;
MPI_Aint data_sz;
/* tracking fields */
int num_nics;
MPI_Aint sz_per_nic;
union {
struct {
const void *data;
struct fid_mr **mrs;
} send;
struct {
bool need_pack;
union {
void *data; /* !need_pack */
int copy_infly; /* need_pack */
} u;
MPI_Aint remote_data_sz;
uint64_t remote_base;
uint64_t *rkeys;
MPI_Aint chunks_per_nic;
MPI_Aint cur_chunk_index;
int num_infly;
bool all_issued;
} recv;
} u;
/* send/recv fields */
int vci_local;
int vci_remote;
struct MPIDI_av_entry *av;
uint64_t match_bits;
} MPIDI_OFI_rndvread_t;

typedef struct {
Expand Down
4 changes: 4 additions & 0 deletions src/mpid/ch4/netmod/ofi/ofi_rndv.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ int MPIDI_OFI_recv_rndv_event(int vci, struct fi_cq_tagged_entry *wc, MPIR_Reque
mpi_errno = MPIDI_OFI_pipeline_recv(rreq, hdr.am_tag, vci_src, vci_dst);
break;
case MPIR_CVAR_CH4_OFI_RNDV_PROTOCOL_read:
mpi_errno = MPIDI_OFI_rndvread_recv(rreq, hdr.am_tag, vci_src, vci_dst);
break;
case MPIR_CVAR_CH4_OFI_RNDV_PROTOCOL_write:
/* not supported yet */
MPIR_Assert(0);
Expand Down Expand Up @@ -213,6 +215,8 @@ int MPIDI_OFI_rndv_cts_event(int vci, struct fi_cq_tagged_entry *wc, MPIR_Reques
mpi_errno = MPIDI_OFI_pipeline_send(sreq, hdr->am_tag);
break;
case MPIR_CVAR_CH4_OFI_RNDV_PROTOCOL_read:
mpi_errno = MPIDI_OFI_rndvread_send(sreq, hdr->am_tag);
break;
case MPIR_CVAR_CH4_OFI_RNDV_PROTOCOL_write:
/* not supported yet */
MPIR_Assert(0);
Expand Down
2 changes: 2 additions & 0 deletions src/mpid/ch4/netmod/ofi/ofi_rndv.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@

int MPIDI_OFI_pipeline_send(MPIR_Request * sreq, int tag);
int MPIDI_OFI_pipeline_recv(MPIR_Request * rreq, int tag, int vci_src, int vci_dst);
int MPIDI_OFI_rndvread_send(MPIR_Request * sreq, int tag);
int MPIDI_OFI_rndvread_recv(MPIR_Request * rreq, int tag, int vci_src, int vci_dst);

typedef struct {
char pad[MPIDI_REQUEST_HDR_SIZE];
Expand Down
Loading