20 #ifndef OMPI_OSC_PT2PT_H
21 #define OMPI_OSC_PT2PT_H
23 #include "ompi_config.h"
25 #include "opal/class/opal_free_list.h"
27 #include "opal/threads/threads.h"
29 #include "ompi/win/win.h"
30 #include "ompi/communicator/communicator.h"
36 #define CONTROL_MSG_TAG (-200)
114 unsigned int *p2p_copy_num_pending_sendreqs;
119 int *p2p_fence_coll_counts;
124 bool *p2p_sc_remote_active_ranks;
125 int *p2p_sc_remote_ranks;
128 int32_t p2p_lock_status;
129 int32_t p2p_shared_count;
132 int32_t p2p_lock_received_ack;
141 #define P2P_MODULE(win) ((ompi_osc_pt2pt_module_t*) win->w_osc_module)
147 int ompi_osc_pt2pt_component_init(
bool enable_progress_threads,
148 bool enable_mpi_threads);
150 int ompi_osc_pt2pt_component_finalize(
void);
152 int ompi_osc_pt2pt_component_query(
struct ompi_win_t *win,
156 int ompi_osc_pt2pt_component_select(
struct ompi_win_t *win,
161 int ompi_osc_pt2pt_component_irecv(
void *buf,
168 ompi_request_complete_fn_t callback,
171 int ompi_osc_pt2pt_component_isend(
void *buf,
178 ompi_request_complete_fn_t callback,
184 int ompi_osc_pt2pt_module_free(
struct ompi_win_t *win);
186 int ompi_osc_pt2pt_module_put(
void *origin_addr,
190 OPAL_PTRDIFF_TYPE target_disp,
195 int ompi_osc_pt2pt_module_accumulate(
void *origin_addr,
199 OPAL_PTRDIFF_TYPE target_disp,
205 int ompi_osc_pt2pt_module_get(
void *origin_addr,
209 OPAL_PTRDIFF_TYPE target_disp,
214 int ompi_osc_pt2pt_module_fence(
int assert,
struct ompi_win_t *win);
216 int ompi_osc_pt2pt_module_start(
struct ompi_group_t *group,
219 int ompi_osc_pt2pt_module_complete(
struct ompi_win_t *win);
221 int ompi_osc_pt2pt_module_post(
struct ompi_group_t *group,
225 int ompi_osc_pt2pt_module_wait(
struct ompi_win_t *win);
227 int ompi_osc_pt2pt_module_test(
struct ompi_win_t *win,
230 int ompi_osc_pt2pt_module_lock(
int lock_type,
235 int ompi_osc_pt2pt_module_unlock(
int target,
OSC module instance.
Definition: osc.h:269
volatile int32_t p2p_tag_counter
cyclic counter for a unique tag for long messages.
Definition: osc_pt2pt.h:111
size_t p2p_c_eager_size
max size of eager message
Definition: osc_pt2pt.h:43
Definition: condition.h:49
Definition: ompi_datatype.h:68
opal_condition_t p2p_cond
condition variable for access to current module
Definition: osc_pt2pt.h:65
int32_t p2p_num_complete_msgs
Number of "count" messages from the remote complete group we've received.
Definition: osc_pt2pt.h:106
Definition: mutex_unix.h:53
Definition: osc_pt2pt.h:57
ompi_osc_base_module_t super
Extend the basic osc module interface.
Definition: osc_pt2pt.h:59
The opal_list_t interface is used to provide a generic doubly-linked list container for Open MPI...
opal_mutex_t p2p_lock
lock access to data structures in the current module
Definition: osc_pt2pt.h:62
Definition: osc_pt2pt.h:38
ompi_win_t * p2p_win
pointer back to window
Definition: osc_pt2pt.h:71
Top-level description of requests.
One-sided Communication interface.
Definition: opal_free_list.h:31
ompi_osc_base_component_t super
Extend the basic osc component interface.
Definition: osc_pt2pt.h:40
opal_free_list_t p2p_c_buffers
free list for eager / control meessages
Definition: osc_pt2pt.h:52
OSC component interface.
Definition: osc.h:154
opal_free_list_t p2p_c_sendreqs
free list of ompi_osc_pt2pt_sendreq_t structures
Definition: osc_pt2pt.h:46
A hash table that may be indexed with either fixed length (e.g.
ompi_communicator_t * p2p_comm
communicator created with this window
Definition: osc_pt2pt.h:74
unsigned int * p2p_num_pending_sendreqs
list of unsigned int counters for the number of requests to a particular rank in p2p_comm for this ac...
Definition: osc_pt2pt.h:84
Group structure Currently we have four formats for storing the process pointers that are members of t...
Definition: group.h:79
opal_list_t p2p_pending_sendreqs
list of ompi_osc_pt2pt_sendreq_t structures, and includes all requests for this access epoch that hav...
Definition: osc_pt2pt.h:79
Definition: opal_list.h:147
int32_t p2p_num_pending_out
For MPI_Fence synchronization, the number of messages to send in epoch.
Definition: osc_pt2pt.h:91
opal_mutex_t p2p_acc_lock
lock for "atomic" window updates from reductions
Definition: osc_pt2pt.h:68
int32_t p2p_num_pending_in
For MPI_Fence synchronization, the number of expected incoming messages.
Definition: osc_pt2pt.h:98
opal_free_list_t p2p_c_replyreqs
free list of ompi_osc_pt2pt_replyreq_t structures
Definition: osc_pt2pt.h:48
int32_t p2p_num_post_msgs
Number of "ping" messages from the remote post group we've received.
Definition: osc_pt2pt.h:102
opal_free_list_t p2p_c_longreqs
free list of ompi_osc_pt2pt_longreq_t structures
Definition: osc_pt2pt.h:50
Definition: communicator.h:118
Main top-level request struct definition.
Definition: request.h:100
Back-end type of MPI_Op.
Definition: op.h:100