1 /* 2 * Copyright (C) by Argonne National Laboratory 3 * See COPYRIGHT in top-level directory 4 */ 5 6 /* ch4 netmod functions */ 7 #ifndef NETMOD_H_INCLUDED 8 #define NETMOD_H_INCLUDED 9 10 #include <mpidimpl.h> 11 12 #define MPIDI_MAX_NETMOD_STRING_LEN 64 13 14 typedef union { 15 #ifdef HAVE_CH4_NETMOD_OFI 16 MPIDI_OFI_Global_t ofi; 17 #endif 18 #ifdef HAVE_CH4_NETMOD_UCX 19 MPIDI_UCX_Global_t ucx; 20 #endif 21 } MPIDI_NM_Global_t; 22 23 typedef int (*MPIDI_NM_mpi_init_t) (int rank, int size, int appnum, int *tag_bits, 24 MPIR_Comm * init_comm); 25 typedef int (*MPIDI_NM_mpi_finalize_t) (void); 26 typedef int (*MPIDI_NM_post_init_t) (void); 27 typedef int (*MPIDI_NM_get_vci_attr_t) (int vci); 28 typedef int (*MPIDI_NM_progress_t) (int vci, int blocking); 29 typedef int (*MPIDI_NM_mpi_comm_connect_t) (const char *port_name, MPIR_Info * info, int root, 30 int timeout, MPIR_Comm * comm, 31 MPIR_Comm ** newcomm_ptr); 32 typedef int (*MPIDI_NM_mpi_comm_disconnect_t) (MPIR_Comm * comm_ptr); 33 typedef int (*MPIDI_NM_mpi_open_port_t) (MPIR_Info * info_ptr, char *port_name); 34 typedef int (*MPIDI_NM_mpi_close_port_t) (const char *port_name); 35 typedef int (*MPIDI_NM_mpi_comm_accept_t) (const char *port_name, MPIR_Info * info, int root, 36 MPIR_Comm * comm, MPIR_Comm ** newcomm_ptr); 37 typedef int (*MPIDI_NM_am_send_hdr_t) (int rank, MPIR_Comm * comm, int handler_id, 38 const void *am_hdr, size_t am_hdr_sz); 39 typedef int (*MPIDI_NM_am_isend_t) (int rank, MPIR_Comm * comm, int handler_id, const void *am_hdr, 40 size_t am_hdr_sz, const void *data, MPI_Count count, 41 MPI_Datatype datatype, MPIR_Request * sreq); 42 typedef int (*MPIDI_NM_am_isendv_t) (int rank, MPIR_Comm * comm, int handler_id, 43 struct iovec * am_hdrs, size_t iov_len, const void *data, 44 MPI_Count count, MPI_Datatype datatype, MPIR_Request * sreq); 45 typedef int (*MPIDI_NM_am_send_hdr_reply_t) (MPIR_Context_id_t context_id, int src_rank, 46 int handler_id, const void *am_hdr, size_t am_hdr_sz); 47 typedef int (*MPIDI_NM_am_isend_reply_t) (MPIR_Context_id_t context_id, int src_rank, 48 int handler_id, const void *am_hdr, size_t am_hdr_sz, 49 const void *data, MPI_Count count, MPI_Datatype datatype, 50 MPIR_Request * sreq); 51 typedef size_t(*MPIDI_NM_am_hdr_max_sz_t) (void); 52 typedef size_t(*MPIDI_NM_am_eager_limit_t) (void); 53 typedef size_t(*MPIDI_NM_am_eager_buf_limit_t) (void); 54 typedef int (*MPIDI_NM_comm_get_lpid_t) (MPIR_Comm * comm_ptr, int idx, int *lpid_ptr, 55 bool is_remote); 56 typedef int (*MPIDI_NM_get_local_upids_t) (MPIR_Comm * comm, size_t ** local_upid_size, 57 char **local_upids); 58 typedef int (*MPIDI_NM_upids_to_lupids_t) (int size, size_t * remote_upid_size, char *remote_upids, 59 int **remote_lupids); 60 typedef int (*MPIDI_NM_create_intercomm_from_lpids_t) (MPIR_Comm * newcomm_ptr, int size, 61 const int lpids[]); 62 typedef int (*MPIDI_NM_mpi_comm_commit_pre_hook_t) (MPIR_Comm * comm); 63 typedef int (*MPIDI_NM_mpi_comm_commit_post_hook_t) (MPIR_Comm * comm); 64 typedef int (*MPIDI_NM_mpi_comm_free_hook_t) (MPIR_Comm * comm); 65 typedef int (*MPIDI_NM_mpi_win_create_hook_t) (MPIR_Win * win); 66 typedef int (*MPIDI_NM_mpi_win_allocate_hook_t) (MPIR_Win * win); 67 typedef int (*MPIDI_NM_mpi_win_allocate_shared_hook_t) (MPIR_Win * win); 68 typedef int (*MPIDI_NM_mpi_win_create_dynamic_hook_t) (MPIR_Win * win); 69 typedef int (*MPIDI_NM_mpi_win_attach_hook_t) (MPIR_Win * win, void *base, MPI_Aint size); 70 typedef int (*MPIDI_NM_mpi_win_detach_hook_t) (MPIR_Win * win, const void *base); 71 typedef int (*MPIDI_NM_mpi_win_free_hook_t) (MPIR_Win * win); 72 typedef int (*MPIDI_NM_rma_win_cmpl_hook_t) (MPIR_Win * win); 73 typedef int (*MPIDI_NM_rma_win_local_cmpl_hook_t) (MPIR_Win * win); 74 typedef int (*MPIDI_NM_rma_target_cmpl_hook_t) (int rank, MPIR_Win * win); 75 typedef int (*MPIDI_NM_rma_target_local_cmpl_hook_t) (int rank, MPIR_Win * win); 76 typedef void (*MPIDI_NM_am_request_init_t) (MPIR_Request * req); 77 typedef void (*MPIDI_NM_am_request_finalize_t) (MPIR_Request * req); 78 typedef int (*MPIDI_NM_mpi_send_t) (const void *buf, MPI_Aint count, MPI_Datatype datatype, 79 int rank, int tag, MPIR_Comm * comm, int context_offset, 80 MPIDI_av_entry_t * addr, MPIR_Request ** request); 81 typedef int (*MPIDI_NM_send_coll_t) (const void *buf, MPI_Aint count, MPI_Datatype datatype, 82 int rank, int tag, MPIR_Comm * comm, int context_offset, 83 MPIDI_av_entry_t * addr, MPIR_Request ** request, 84 MPIR_Errflag_t * errflag); 85 typedef int (*MPIDI_NM_mpi_ssend_t) (const void *buf, MPI_Aint count, MPI_Datatype datatype, 86 int rank, int tag, MPIR_Comm * comm, int context_offset, 87 MPIDI_av_entry_t * addr, MPIR_Request ** request); 88 typedef int (*MPIDI_NM_mpi_isend_t) (const void *buf, MPI_Aint count, MPI_Datatype datatype, 89 int rank, int tag, MPIR_Comm * comm, int context_offset, 90 MPIDI_av_entry_t * addr, MPIR_Request ** request); 91 typedef int (*MPIDI_NM_isend_coll_t) (const void *buf, MPI_Aint count, MPI_Datatype datatype, 92 int rank, int tag, MPIR_Comm * comm, int context_offset, 93 MPIDI_av_entry_t * addr, MPIR_Request ** request, 94 MPIR_Errflag_t * errflag); 95 typedef int (*MPIDI_NM_mpi_issend_t) (const void *buf, MPI_Aint count, MPI_Datatype datatype, 96 int rank, int tag, MPIR_Comm * comm, int context_offset, 97 MPIDI_av_entry_t * addr, MPIR_Request ** request); 98 typedef int (*MPIDI_NM_mpi_cancel_send_t) (MPIR_Request * sreq); 99 typedef int (*MPIDI_NM_mpi_recv_t) (void *buf, MPI_Aint count, MPI_Datatype datatype, int rank, 100 int tag, MPIR_Comm * comm, int context_offset, 101 MPIDI_av_entry_t * addr, MPI_Status * status, 102 MPIR_Request ** request); 103 typedef int (*MPIDI_NM_mpi_irecv_t) (void *buf, MPI_Aint count, MPI_Datatype datatype, int rank, 104 int tag, MPIR_Comm * comm, int context_offset, 105 MPIDI_av_entry_t * addr, MPIR_Request ** request, 106 MPIR_Request * partner); 107 typedef int (*MPIDI_NM_mpi_imrecv_t) (void *buf, MPI_Aint count, MPI_Datatype datatype, 108 MPIR_Request * message); 109 typedef int (*MPIDI_NM_mpi_cancel_recv_t) (MPIR_Request * rreq); 110 typedef void *(*MPIDI_NM_mpi_alloc_mem_t) (size_t size, MPIR_Info * info_ptr); 111 typedef int (*MPIDI_NM_mpi_free_mem_t) (void *ptr); 112 typedef int (*MPIDI_NM_mpi_improbe_t) (int source, int tag, MPIR_Comm * comm, int context_offset, 113 MPIDI_av_entry_t * addr, int *flag, MPIR_Request ** message, 114 MPI_Status * status); 115 typedef int (*MPIDI_NM_mpi_iprobe_t) (int source, int tag, MPIR_Comm * comm, int context_offset, 116 MPIDI_av_entry_t * addr, int *flag, MPI_Status * status); 117 typedef int (*MPIDI_NM_mpi_win_set_info_t) (MPIR_Win * win, MPIR_Info * info); 118 typedef int (*MPIDI_NM_mpi_win_shared_query_t) (MPIR_Win * win, int rank, MPI_Aint * size, 119 int *disp_unit, void *baseptr); 120 typedef int (*MPIDI_NM_mpi_put_t) (const void *origin_addr, int origin_count, 121 MPI_Datatype origin_datatype, int target_rank, 122 MPI_Aint target_disp, int target_count, 123 MPI_Datatype target_datatype, MPIR_Win * win, 124 MPIDI_av_entry_t * addr, MPIDI_winattr_t winattr); 125 typedef int (*MPIDI_NM_mpi_win_start_t) (MPIR_Group * group, int assert, MPIR_Win * win); 126 typedef int (*MPIDI_NM_mpi_win_complete_t) (MPIR_Win * win); 127 typedef int (*MPIDI_NM_mpi_win_post_t) (MPIR_Group * group, int assert, MPIR_Win * win); 128 typedef int (*MPIDI_NM_mpi_win_wait_t) (MPIR_Win * win); 129 typedef int (*MPIDI_NM_mpi_win_test_t) (MPIR_Win * win, int *flag); 130 typedef int (*MPIDI_NM_mpi_win_lock_t) (int lock_type, int rank, int assert, MPIR_Win * win, 131 MPIDI_av_entry_t * addr); 132 typedef int (*MPIDI_NM_mpi_win_unlock_t) (int rank, MPIR_Win * win, MPIDI_av_entry_t * addr); 133 typedef int (*MPIDI_NM_mpi_win_get_info_t) (MPIR_Win * win, MPIR_Info ** info_p_p); 134 typedef int (*MPIDI_NM_mpi_get_t) (void *origin_addr, int origin_count, 135 MPI_Datatype origin_datatype, int target_rank, 136 MPI_Aint target_disp, int target_count, 137 MPI_Datatype target_datatype, MPIR_Win * win, 138 MPIDI_av_entry_t * addr, MPIDI_winattr_t winattr); 139 typedef int (*MPIDI_NM_mpi_win_free_t) (MPIR_Win ** win_ptr); 140 typedef int (*MPIDI_NM_mpi_win_fence_t) (int assert, MPIR_Win * win); 141 typedef int (*MPIDI_NM_mpi_win_create_t) (void *base, MPI_Aint length, int disp_unit, 142 MPIR_Info * info, MPIR_Comm * comm_ptr, 143 MPIR_Win ** win_ptr); 144 typedef int (*MPIDI_NM_mpi_accumulate_t) (const void *origin_addr, int origin_count, 145 MPI_Datatype origin_datatype, int target_rank, 146 MPI_Aint target_disp, int target_count, 147 MPI_Datatype target_datatype, MPI_Op op, MPIR_Win * win, 148 MPIDI_av_entry_t * addr, MPIDI_winattr_t winattr); 149 typedef int (*MPIDI_NM_mpi_win_attach_t) (MPIR_Win * win, void *base, MPI_Aint size); 150 typedef int (*MPIDI_NM_mpi_win_allocate_shared_t) (MPI_Aint size, int disp_unit, 151 MPIR_Info * info_ptr, MPIR_Comm * comm_ptr, 152 void **base_ptr, MPIR_Win ** win_ptr); 153 typedef int (*MPIDI_NM_mpi_rput_t) (const void *origin_addr, int origin_count, 154 MPI_Datatype origin_datatype, int target_rank, 155 MPI_Aint target_disp, int target_count, 156 MPI_Datatype target_datatype, MPIR_Win * win, 157 MPIDI_av_entry_t * addr, MPIDI_winattr_t winattr, 158 MPIR_Request ** request); 159 typedef int (*MPIDI_NM_mpi_win_flush_local_t) (int rank, MPIR_Win * win, MPIDI_av_entry_t * addr); 160 typedef int (*MPIDI_NM_mpi_win_detach_t) (MPIR_Win * win, const void *base); 161 typedef int (*MPIDI_NM_mpi_compare_and_swap_t) (const void *origin_addr, const void *compare_addr, 162 void *result_addr, MPI_Datatype datatype, 163 int target_rank, MPI_Aint target_disp, 164 MPIR_Win * win, MPIDI_av_entry_t * addr, 165 MPIDI_winattr_t winattr); 166 typedef int (*MPIDI_NM_mpi_raccumulate_t) (const void *origin_addr, int origin_count, 167 MPI_Datatype origin_datatype, int target_rank, 168 MPI_Aint target_disp, int target_count, 169 MPI_Datatype target_datatype, MPI_Op op, MPIR_Win * win, 170 MPIDI_av_entry_t * addr, MPIDI_winattr_t winattr, 171 MPIR_Request ** request); 172 typedef int (*MPIDI_NM_mpi_rget_accumulate_t) (const void *origin_addr, int origin_count, 173 MPI_Datatype origin_datatype, void *result_addr, 174 int result_count, MPI_Datatype result_datatype, 175 int target_rank, MPI_Aint target_disp, 176 int target_count, MPI_Datatype target_datatype, 177 MPI_Op op, MPIR_Win * win, MPIDI_av_entry_t * addr, 178 MPIDI_winattr_t winattr, MPIR_Request ** request); 179 typedef int (*MPIDI_NM_mpi_fetch_and_op_t) (const void *origin_addr, void *result_addr, 180 MPI_Datatype datatype, int target_rank, 181 MPI_Aint target_disp, MPI_Op op, MPIR_Win * win, 182 MPIDI_av_entry_t * addr, MPIDI_winattr_t winattr); 183 typedef int (*MPIDI_NM_mpi_win_allocate_t) (MPI_Aint size, int disp_unit, MPIR_Info * info, 184 MPIR_Comm * comm, void *baseptr, MPIR_Win ** win); 185 typedef int (*MPIDI_NM_mpi_win_flush_t) (int rank, MPIR_Win * win, MPIDI_av_entry_t * addr); 186 typedef int (*MPIDI_NM_mpi_win_flush_local_all_t) (MPIR_Win * win); 187 typedef int (*MPIDI_NM_mpi_win_unlock_all_t) (MPIR_Win * win); 188 typedef int (*MPIDI_NM_mpi_win_create_dynamic_t) (MPIR_Info * info, MPIR_Comm * comm, 189 MPIR_Win ** win); 190 typedef int (*MPIDI_NM_mpi_rget_t) (void *origin_addr, int origin_count, 191 MPI_Datatype origin_datatype, int target_rank, 192 MPI_Aint target_disp, int target_count, 193 MPI_Datatype target_datatype, MPIR_Win * win, 194 MPIDI_av_entry_t * addr, MPIDI_winattr_t winattr, 195 MPIR_Request ** request); 196 typedef int (*MPIDI_NM_mpi_win_sync_t) (MPIR_Win * win); 197 typedef int (*MPIDI_NM_mpi_win_flush_all_t) (MPIR_Win * win); 198 typedef int (*MPIDI_NM_mpi_get_accumulate_t) (const void *origin_addr, int origin_count, 199 MPI_Datatype origin_datatype, void *result_addr, 200 int result_count, MPI_Datatype result_datatype, 201 int target_rank, MPI_Aint target_disp, 202 int target_count, MPI_Datatype target_datatype, 203 MPI_Op op, MPIR_Win * win, MPIDI_av_entry_t * addr, 204 MPIDI_winattr_t winattr); 205 typedef int (*MPIDI_NM_mpi_win_lock_all_t) (int assert, MPIR_Win * win); 206 typedef int (*MPIDI_NM_rank_is_local_t) (int target, MPIR_Comm * comm); 207 typedef int (*MPIDI_NM_av_is_local_t) (MPIDI_av_entry_t * av); 208 typedef int (*MPIDI_NM_mpi_barrier_t) (MPIR_Comm * comm, MPIR_Errflag_t * errflag); 209 typedef int (*MPIDI_NM_mpi_bcast_t) (void *buffer, int count, MPI_Datatype datatype, int root, 210 MPIR_Comm * comm, MPIR_Errflag_t * errflag); 211 typedef int (*MPIDI_NM_mpi_allreduce_t) (const void *sendbuf, void *recvbuf, int count, 212 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 213 MPIR_Errflag_t * errflag); 214 typedef int (*MPIDI_NM_mpi_allgather_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 215 void *recvbuf, int recvcount, MPI_Datatype recvtype, 216 MPIR_Comm * comm, MPIR_Errflag_t * errflag); 217 typedef int (*MPIDI_NM_mpi_allgatherv_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 218 void *recvbuf, const int *recvcounts, const int *displs, 219 MPI_Datatype recvtype, MPIR_Comm * comm, 220 MPIR_Errflag_t * errflag); 221 typedef int (*MPIDI_NM_mpi_scatter_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 222 void *recvbuf, int recvcount, MPI_Datatype recvtype, 223 int root, MPIR_Comm * comm, MPIR_Errflag_t * errflag); 224 typedef int (*MPIDI_NM_mpi_scatterv_t) (const void *sendbuf, const int *sendcounts, 225 const int *displs, MPI_Datatype sendtype, void *recvbuf, 226 int recvcount, MPI_Datatype recvtype, int root, 227 MPIR_Comm * comm_ptr, MPIR_Errflag_t * errflag); 228 typedef int (*MPIDI_NM_mpi_gather_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 229 void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, 230 MPIR_Comm * comm, MPIR_Errflag_t * errflag); 231 typedef int (*MPIDI_NM_mpi_gatherv_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 232 void *recvbuf, const int *recvcounts, const int *displs, 233 MPI_Datatype recvtype, int root, MPIR_Comm * comm, 234 MPIR_Errflag_t * errflag); 235 typedef int (*MPIDI_NM_mpi_alltoall_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 236 void *recvbuf, int recvcount, MPI_Datatype recvtype, 237 MPIR_Comm * comm, MPIR_Errflag_t * errflag); 238 typedef int (*MPIDI_NM_mpi_alltoallv_t) (const void *sendbuf, const int *sendcounts, 239 const int *sdispls, MPI_Datatype sendtype, void *recvbuf, 240 const int *recvcounts, const int *rdispls, 241 MPI_Datatype recvtype, MPIR_Comm * comm, 242 MPIR_Errflag_t * errflag); 243 typedef int (*MPIDI_NM_mpi_alltoallw_t) (const void *sendbuf, const int *sendcounts, 244 const int *sdispls, const MPI_Datatype sendtypes[], 245 void *recvbuf, const int *recvcounts, const int *rdispls, 246 const MPI_Datatype recvtypes[], MPIR_Comm * comm, 247 MPIR_Errflag_t * errflag); 248 typedef int (*MPIDI_NM_mpi_reduce_t) (const void *sendbuf, void *recvbuf, int count, 249 MPI_Datatype datatype, MPI_Op op, int root, 250 MPIR_Comm * comm_ptr, MPIR_Errflag_t * errflag); 251 typedef int (*MPIDI_NM_mpi_reduce_scatter_t) (const void *sendbuf, void *recvbuf, 252 const int *recvcounts, MPI_Datatype datatype, 253 MPI_Op op, MPIR_Comm * comm_ptr, 254 MPIR_Errflag_t * errflag); 255 typedef int (*MPIDI_NM_mpi_reduce_scatter_block_t) (const void *sendbuf, void *recvbuf, 256 int recvcount, MPI_Datatype datatype, MPI_Op op, 257 MPIR_Comm * comm_ptr, MPIR_Errflag_t * errflag); 258 typedef int (*MPIDI_NM_mpi_scan_t) (const void *sendbuf, void *recvbuf, int count, 259 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 260 MPIR_Errflag_t * errflag); 261 typedef int (*MPIDI_NM_mpi_exscan_t) (const void *sendbuf, void *recvbuf, int count, 262 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 263 MPIR_Errflag_t * errflag); 264 typedef int (*MPIDI_NM_mpi_neighbor_allgather_t) (const void *sendbuf, int sendcount, 265 MPI_Datatype sendtype, void *recvbuf, 266 int recvcount, MPI_Datatype recvtype, 267 MPIR_Comm * comm); 268 typedef int (*MPIDI_NM_mpi_neighbor_allgatherv_t) (const void *sendbuf, int sendcount, 269 MPI_Datatype sendtype, void *recvbuf, 270 const int *recvcounts, const int *displs, 271 MPI_Datatype recvtype, MPIR_Comm * comm); 272 typedef int (*MPIDI_NM_mpi_neighbor_alltoallv_t) (const void *sendbuf, const int *sendcounts, 273 const int *sdispls, MPI_Datatype sendtype, 274 void *recvbuf, const int *recvcounts, 275 const int *rdispls, MPI_Datatype recvtype, 276 MPIR_Comm * comm); 277 typedef int (*MPIDI_NM_mpi_neighbor_alltoallw_t) (const void *sendbuf, const int *sendcounts, 278 const MPI_Aint * sdispls, 279 const MPI_Datatype * sendtypes, void *recvbuf, 280 const int *recvcounts, const MPI_Aint * rdispls, 281 const MPI_Datatype * recvtypes, MPIR_Comm * comm); 282 typedef int (*MPIDI_NM_mpi_neighbor_alltoall_t) (const void *sendbuf, int sendcount, 283 MPI_Datatype sendtype, void *recvbuf, 284 int recvcount, MPI_Datatype recvtype, 285 MPIR_Comm * comm); 286 typedef int (*MPIDI_NM_mpi_ineighbor_allgather_t) (const void *sendbuf, int sendcount, 287 MPI_Datatype sendtype, void *recvbuf, 288 int recvcount, MPI_Datatype recvtype, 289 MPIR_Comm * comm, MPIR_Request ** req); 290 typedef int (*MPIDI_NM_mpi_ineighbor_allgatherv_t) (const void *sendbuf, int sendcount, 291 MPI_Datatype sendtype, void *recvbuf, 292 const int *recvcounts, const int *displs, 293 MPI_Datatype recvtype, MPIR_Comm * comm, 294 MPIR_Request ** req); 295 typedef int (*MPIDI_NM_mpi_ineighbor_alltoall_t) (const void *sendbuf, int sendcount, 296 MPI_Datatype sendtype, void *recvbuf, 297 int recvcount, MPI_Datatype recvtype, 298 MPIR_Comm * comm, MPIR_Request ** req); 299 typedef int (*MPIDI_NM_mpi_ineighbor_alltoallv_t) (const void *sendbuf, const int *sendcounts, 300 const int *sdispls, MPI_Datatype sendtype, 301 void *recvbuf, const int *recvcounts, 302 const int *rdispls, MPI_Datatype recvtype, 303 MPIR_Comm * comm, MPIR_Request ** req); 304 typedef int (*MPIDI_NM_mpi_ineighbor_alltoallw_t) (const void *sendbuf, const int *sendcounts, 305 const MPI_Aint * sdispls, 306 const MPI_Datatype * sendtypes, void *recvbuf, 307 const int *recvcounts, const MPI_Aint * rdispls, 308 const MPI_Datatype * recvtypes, MPIR_Comm * comm, 309 MPIR_Request ** req); 310 typedef int (*MPIDI_NM_mpi_ibarrier_t) (MPIR_Comm * comm, MPIR_Request ** req); 311 typedef int (*MPIDI_NM_mpi_ibcast_t) (void *buffer, int count, MPI_Datatype datatype, int root, 312 MPIR_Comm * comm, MPIR_Request ** req); 313 typedef int (*MPIDI_NM_mpi_iallgather_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 314 void *recvbuf, int recvcount, MPI_Datatype recvtype, 315 MPIR_Comm * comm, MPIR_Request ** req); 316 typedef int (*MPIDI_NM_mpi_iallgatherv_t) (const void *sendbuf, int sendcount, 317 MPI_Datatype sendtype, void *recvbuf, 318 const int *recvcounts, const int *displs, 319 MPI_Datatype recvtype, MPIR_Comm * comm, 320 MPIR_Request ** req); 321 typedef int (*MPIDI_NM_mpi_iallreduce_t) (const void *sendbuf, void *recvbuf, int count, 322 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 323 MPIR_Request ** req); 324 typedef int (*MPIDI_NM_mpi_ialltoall_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 325 void *recvbuf, int recvcount, MPI_Datatype recvtype, 326 MPIR_Comm * comm, MPIR_Request ** req); 327 typedef int (*MPIDI_NM_mpi_ialltoallv_t) (const void *sendbuf, const int *sendcounts, 328 const int *sdispls, MPI_Datatype sendtype, void *recvbuf, 329 const int *recvcounts, const int *rdispls, 330 MPI_Datatype recvtype, MPIR_Comm * comm, 331 MPIR_Request ** req); 332 typedef int (*MPIDI_NM_mpi_ialltoallw_t) (const void *sendbuf, const int *sendcounts, 333 const int *sdispls, const MPI_Datatype sendtypes[], 334 void *recvbuf, const int *recvcounts, const int *rdispls, 335 const MPI_Datatype recvtypes[], MPIR_Comm * comm, 336 MPIR_Request ** req); 337 typedef int (*MPIDI_NM_mpi_iexscan_t) (const void *sendbuf, void *recvbuf, int count, 338 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 339 MPIR_Request ** req); 340 typedef int (*MPIDI_NM_mpi_igather_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 341 void *recvbuf, int recvcount, MPI_Datatype recvtype, 342 int root, MPIR_Comm * comm, MPIR_Request ** req); 343 typedef int (*MPIDI_NM_mpi_igatherv_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 344 void *recvbuf, const int *recvcounts, const int *displs, 345 MPI_Datatype recvtype, int root, MPIR_Comm * comm, 346 MPIR_Request ** req); 347 typedef int (*MPIDI_NM_mpi_ireduce_scatter_block_t) (const void *sendbuf, void *recvbuf, 348 int recvcount, MPI_Datatype datatype, 349 MPI_Op op, MPIR_Comm * comm, 350 MPIR_Request ** req); 351 typedef int (*MPIDI_NM_mpi_ireduce_scatter_t) (const void *sendbuf, void *recvbuf, 352 const int *recvcounts, MPI_Datatype datatype, 353 MPI_Op op, MPIR_Comm * comm, MPIR_Request ** req); 354 typedef int (*MPIDI_NM_mpi_ireduce_t) (const void *sendbuf, void *recvbuf, int count, 355 MPI_Datatype datatype, MPI_Op op, int root, 356 MPIR_Comm * comm_ptr, MPIR_Request ** req); 357 typedef int (*MPIDI_NM_mpi_iscan_t) (const void *sendbuf, void *recvbuf, int count, 358 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 359 MPIR_Request ** req); 360 typedef int (*MPIDI_NM_mpi_iscatter_t) (const void *sendbuf, int sendcount, MPI_Datatype sendtype, 361 void *recvbuf, int recvcount, MPI_Datatype recvtype, 362 int root, MPIR_Comm * comm, MPIR_Request ** req); 363 typedef int (*MPIDI_NM_mpi_iscatterv_t) (const void *sendbuf, const int *sendcounts, 364 const int *displs, MPI_Datatype sendtype, void *recvbuf, 365 int recvcount, MPI_Datatype recvtype, int root, 366 MPIR_Comm * comm_ptr, MPIR_Request ** req); 367 typedef int (*MPIDI_NM_mpi_type_commit_hook_t) (MPIR_Datatype * datatype_p); 368 typedef int (*MPIDI_NM_mpi_type_free_hook_t) (MPIR_Datatype * datatype_p); 369 typedef int (*MPIDI_NM_mpi_op_commit_hook_t) (MPIR_Op * op_p); 370 typedef int (*MPIDI_NM_mpi_op_free_hook_t) (MPIR_Op * op_p); 371 372 typedef struct MPIDI_NM_funcs { 373 MPIDI_NM_mpi_init_t mpi_init; 374 MPIDI_NM_mpi_finalize_t mpi_finalize; 375 MPIDI_NM_post_init_t post_init; 376 MPIDI_NM_get_vci_attr_t get_vci_attr; 377 MPIDI_NM_progress_t progress; 378 MPIDI_NM_mpi_comm_connect_t mpi_comm_connect; 379 MPIDI_NM_mpi_comm_disconnect_t mpi_comm_disconnect; 380 MPIDI_NM_mpi_open_port_t mpi_open_port; 381 MPIDI_NM_mpi_close_port_t mpi_close_port; 382 MPIDI_NM_mpi_comm_accept_t mpi_comm_accept; 383 /* Routines that handle addressing */ 384 MPIDI_NM_comm_get_lpid_t comm_get_lpid; 385 MPIDI_NM_get_local_upids_t get_local_upids; 386 MPIDI_NM_upids_to_lupids_t upids_to_lupids; 387 MPIDI_NM_create_intercomm_from_lpids_t create_intercomm_from_lpids; 388 MPIDI_NM_mpi_comm_commit_pre_hook_t mpi_comm_commit_pre_hook; 389 MPIDI_NM_mpi_comm_commit_post_hook_t mpi_comm_commit_post_hook; 390 MPIDI_NM_mpi_comm_free_hook_t mpi_comm_free_hook; 391 /* Window initialization/cleanup routines */ 392 MPIDI_NM_mpi_win_create_hook_t mpi_win_create_hook; 393 MPIDI_NM_mpi_win_allocate_hook_t mpi_win_allocate_hook; 394 MPIDI_NM_mpi_win_allocate_shared_hook_t mpi_win_allocate_shared_hook; 395 MPIDI_NM_mpi_win_create_dynamic_hook_t mpi_win_create_dynamic_hook; 396 MPIDI_NM_mpi_win_attach_hook_t mpi_win_attach_hook; 397 MPIDI_NM_mpi_win_detach_hook_t mpi_win_detach_hook; 398 MPIDI_NM_mpi_win_free_hook_t mpi_win_free_hook; 399 /* RMA synchronization routines */ 400 MPIDI_NM_rma_win_cmpl_hook_t rma_win_cmpl_hook; 401 MPIDI_NM_rma_win_local_cmpl_hook_t rma_win_local_cmpl_hook; 402 MPIDI_NM_rma_target_cmpl_hook_t rma_target_cmpl_hook; 403 MPIDI_NM_rma_target_local_cmpl_hook_t rma_target_local_cmpl_hook; 404 /* Request allocation routines */ 405 MPIDI_NM_am_request_init_t am_request_init; 406 MPIDI_NM_am_request_finalize_t am_request_finalize; 407 /* Active Message Routines */ 408 MPIDI_NM_am_send_hdr_t am_send_hdr; 409 MPIDI_NM_am_isend_t am_isend; 410 MPIDI_NM_am_isendv_t am_isendv; 411 MPIDI_NM_am_send_hdr_reply_t am_send_hdr_reply; 412 MPIDI_NM_am_isend_reply_t am_isend_reply; 413 MPIDI_NM_am_hdr_max_sz_t am_hdr_max_sz; 414 MPIDI_NM_am_eager_limit_t am_eager_limit; 415 MPIDI_NM_am_eager_buf_limit_t am_eager_buf_limit; 416 } MPIDI_NM_funcs_t; 417 418 typedef struct MPIDI_NM_native_funcs { 419 MPIDI_NM_mpi_send_t mpi_send; 420 MPIDI_NM_send_coll_t send_coll; 421 MPIDI_NM_mpi_ssend_t mpi_ssend; 422 MPIDI_NM_mpi_isend_t mpi_isend; 423 MPIDI_NM_isend_coll_t isend_coll; 424 MPIDI_NM_mpi_issend_t mpi_issend; 425 MPIDI_NM_mpi_cancel_send_t mpi_cancel_send; 426 MPIDI_NM_mpi_recv_t mpi_recv; 427 MPIDI_NM_mpi_irecv_t mpi_irecv; 428 MPIDI_NM_mpi_imrecv_t mpi_imrecv; 429 MPIDI_NM_mpi_cancel_recv_t mpi_cancel_recv; 430 MPIDI_NM_mpi_alloc_mem_t mpi_alloc_mem; 431 MPIDI_NM_mpi_free_mem_t mpi_free_mem; 432 MPIDI_NM_mpi_improbe_t mpi_improbe; 433 MPIDI_NM_mpi_iprobe_t mpi_iprobe; 434 MPIDI_NM_mpi_win_set_info_t mpi_win_set_info; 435 MPIDI_NM_mpi_win_shared_query_t mpi_win_shared_query; 436 MPIDI_NM_mpi_put_t mpi_put; 437 MPIDI_NM_mpi_win_start_t mpi_win_start; 438 MPIDI_NM_mpi_win_complete_t mpi_win_complete; 439 MPIDI_NM_mpi_win_post_t mpi_win_post; 440 MPIDI_NM_mpi_win_wait_t mpi_win_wait; 441 MPIDI_NM_mpi_win_test_t mpi_win_test; 442 MPIDI_NM_mpi_win_lock_t mpi_win_lock; 443 MPIDI_NM_mpi_win_unlock_t mpi_win_unlock; 444 MPIDI_NM_mpi_win_get_info_t mpi_win_get_info; 445 MPIDI_NM_mpi_get_t mpi_get; 446 MPIDI_NM_mpi_win_free_t mpi_win_free; 447 MPIDI_NM_mpi_win_fence_t mpi_win_fence; 448 MPIDI_NM_mpi_win_create_t mpi_win_create; 449 MPIDI_NM_mpi_accumulate_t mpi_accumulate; 450 MPIDI_NM_mpi_win_attach_t mpi_win_attach; 451 MPIDI_NM_mpi_win_allocate_shared_t mpi_win_allocate_shared; 452 MPIDI_NM_mpi_rput_t mpi_rput; 453 MPIDI_NM_mpi_win_flush_local_t mpi_win_flush_local; 454 MPIDI_NM_mpi_win_detach_t mpi_win_detach; 455 MPIDI_NM_mpi_compare_and_swap_t mpi_compare_and_swap; 456 MPIDI_NM_mpi_raccumulate_t mpi_raccumulate; 457 MPIDI_NM_mpi_rget_accumulate_t mpi_rget_accumulate; 458 MPIDI_NM_mpi_fetch_and_op_t mpi_fetch_and_op; 459 MPIDI_NM_mpi_win_allocate_t mpi_win_allocate; 460 MPIDI_NM_mpi_win_flush_t mpi_win_flush; 461 MPIDI_NM_mpi_win_flush_local_all_t mpi_win_flush_local_all; 462 MPIDI_NM_mpi_win_unlock_all_t mpi_win_unlock_all; 463 MPIDI_NM_mpi_win_create_dynamic_t mpi_win_create_dynamic; 464 MPIDI_NM_mpi_rget_t mpi_rget; 465 MPIDI_NM_mpi_win_sync_t mpi_win_sync; 466 MPIDI_NM_mpi_win_flush_all_t mpi_win_flush_all; 467 MPIDI_NM_mpi_get_accumulate_t mpi_get_accumulate; 468 MPIDI_NM_mpi_win_lock_all_t mpi_win_lock_all; 469 MPIDI_NM_rank_is_local_t rank_is_local; 470 MPIDI_NM_av_is_local_t av_is_local; 471 /* Collectives */ 472 MPIDI_NM_mpi_barrier_t mpi_barrier; 473 MPIDI_NM_mpi_bcast_t mpi_bcast; 474 MPIDI_NM_mpi_allreduce_t mpi_allreduce; 475 MPIDI_NM_mpi_allgather_t mpi_allgather; 476 MPIDI_NM_mpi_allgatherv_t mpi_allgatherv; 477 MPIDI_NM_mpi_scatter_t mpi_scatter; 478 MPIDI_NM_mpi_scatterv_t mpi_scatterv; 479 MPIDI_NM_mpi_gather_t mpi_gather; 480 MPIDI_NM_mpi_gatherv_t mpi_gatherv; 481 MPIDI_NM_mpi_alltoall_t mpi_alltoall; 482 MPIDI_NM_mpi_alltoallv_t mpi_alltoallv; 483 MPIDI_NM_mpi_alltoallw_t mpi_alltoallw; 484 MPIDI_NM_mpi_reduce_t mpi_reduce; 485 MPIDI_NM_mpi_reduce_scatter_t mpi_reduce_scatter; 486 MPIDI_NM_mpi_reduce_scatter_block_t mpi_reduce_scatter_block; 487 MPIDI_NM_mpi_scan_t mpi_scan; 488 MPIDI_NM_mpi_exscan_t mpi_exscan; 489 MPIDI_NM_mpi_neighbor_allgather_t mpi_neighbor_allgather; 490 MPIDI_NM_mpi_neighbor_allgatherv_t mpi_neighbor_allgatherv; 491 MPIDI_NM_mpi_neighbor_alltoall_t mpi_neighbor_alltoall; 492 MPIDI_NM_mpi_neighbor_alltoallv_t mpi_neighbor_alltoallv; 493 MPIDI_NM_mpi_neighbor_alltoallw_t mpi_neighbor_alltoallw; 494 MPIDI_NM_mpi_ineighbor_allgather_t mpi_ineighbor_allgather; 495 MPIDI_NM_mpi_ineighbor_allgatherv_t mpi_ineighbor_allgatherv; 496 MPIDI_NM_mpi_ineighbor_alltoall_t mpi_ineighbor_alltoall; 497 MPIDI_NM_mpi_ineighbor_alltoallv_t mpi_ineighbor_alltoallv; 498 MPIDI_NM_mpi_ineighbor_alltoallw_t mpi_ineighbor_alltoallw; 499 MPIDI_NM_mpi_ibarrier_t mpi_ibarrier; 500 MPIDI_NM_mpi_ibcast_t mpi_ibcast; 501 MPIDI_NM_mpi_iallgather_t mpi_iallgather; 502 MPIDI_NM_mpi_iallgatherv_t mpi_iallgatherv; 503 MPIDI_NM_mpi_iallreduce_t mpi_iallreduce; 504 MPIDI_NM_mpi_ialltoall_t mpi_ialltoall; 505 MPIDI_NM_mpi_ialltoallv_t mpi_ialltoallv; 506 MPIDI_NM_mpi_ialltoallw_t mpi_ialltoallw; 507 MPIDI_NM_mpi_iexscan_t mpi_iexscan; 508 MPIDI_NM_mpi_igather_t mpi_igather; 509 MPIDI_NM_mpi_igatherv_t mpi_igatherv; 510 MPIDI_NM_mpi_ireduce_scatter_block_t mpi_ireduce_scatter_block; 511 MPIDI_NM_mpi_ireduce_scatter_t mpi_ireduce_scatter; 512 MPIDI_NM_mpi_ireduce_t mpi_ireduce; 513 MPIDI_NM_mpi_iscan_t mpi_iscan; 514 MPIDI_NM_mpi_iscatter_t mpi_iscatter; 515 MPIDI_NM_mpi_iscatterv_t mpi_iscatterv; 516 /* Datatype hooks */ 517 MPIDI_NM_mpi_type_commit_hook_t mpi_type_commit_hook; 518 MPIDI_NM_mpi_type_free_hook_t mpi_type_free_hook; 519 /* Op hooks */ 520 MPIDI_NM_mpi_op_commit_hook_t mpi_op_commit_hook; 521 MPIDI_NM_mpi_op_free_hook_t mpi_op_free_hook; 522 } MPIDI_NM_native_funcs_t; 523 524 extern MPIDI_NM_funcs_t *MPIDI_NM_funcs[]; 525 extern MPIDI_NM_funcs_t *MPIDI_NM_func; 526 extern MPIDI_NM_native_funcs_t *MPIDI_NM_native_funcs[]; 527 extern MPIDI_NM_native_funcs_t *MPIDI_NM_native_func; 528 extern int MPIDI_num_netmods; 529 extern char MPIDI_NM_strings[][MPIDI_MAX_NETMOD_STRING_LEN]; 530 531 int MPIDI_NM_mpi_init_hook(int rank, int size, int appnum, int *tag_bits, MPIR_Comm * init_comm); 532 int MPIDI_NM_mpi_finalize_hook(void); 533 int MPIDI_NM_post_init(void); 534 int MPIDI_NM_get_vci_attr(int vci); 535 int MPIDI_NM_progress(int vci, int blocking); 536 int MPIDI_NM_mpi_comm_connect(const char *port_name, MPIR_Info * info, int root, int timeout, 537 MPIR_Comm * comm, MPIR_Comm ** newcomm_ptr); 538 int MPIDI_NM_mpi_comm_disconnect(MPIR_Comm * comm_ptr); 539 int MPIDI_NM_mpi_open_port(MPIR_Info * info_ptr, char *port_name); 540 int MPIDI_NM_mpi_close_port(const char *port_name); 541 int MPIDI_NM_mpi_comm_accept(const char *port_name, MPIR_Info * info, int root, MPIR_Comm * comm, 542 MPIR_Comm ** newcomm_ptr); 543 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_am_send_hdr(int rank, MPIR_Comm * comm, int handler_id, 544 const void *am_hdr, 545 size_t am_hdr_sz) MPL_STATIC_INLINE_SUFFIX; 546 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_am_isend(int rank, MPIR_Comm * comm, int handler_id, 547 const void *am_hdr, size_t am_hdr_sz, 548 const void *data, MPI_Count count, 549 MPI_Datatype datatype, 550 MPIR_Request * sreq) MPL_STATIC_INLINE_SUFFIX; 551 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_am_isendv(int rank, MPIR_Comm * comm, int handler_id, 552 struct iovec *am_hdrs, size_t iov_len, 553 const void *data, MPI_Count count, 554 MPI_Datatype datatype, 555 MPIR_Request * sreq) MPL_STATIC_INLINE_SUFFIX; 556 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_am_send_hdr_reply(MPIR_Context_id_t context_id, int src_rank, 557 int handler_id, const void *am_hdr, 558 size_t am_hdr_sz) MPL_STATIC_INLINE_SUFFIX; 559 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_am_isend_reply(MPIR_Context_id_t context_id, int src_rank, 560 int handler_id, const void *am_hdr, 561 size_t am_hdr_sz, const void *data, 562 MPI_Count count, MPI_Datatype datatype, 563 MPIR_Request * sreq) MPL_STATIC_INLINE_SUFFIX; 564 MPL_STATIC_INLINE_PREFIX size_t MPIDI_NM_am_hdr_max_sz(void) MPL_STATIC_INLINE_SUFFIX; 565 MPL_STATIC_INLINE_PREFIX size_t MPIDI_NM_am_eager_limit(void) MPL_STATIC_INLINE_SUFFIX; 566 MPL_STATIC_INLINE_PREFIX size_t MPIDI_NM_am_eager_buf_limit(void) MPL_STATIC_INLINE_SUFFIX; 567 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_comm_get_lpid(MPIR_Comm * comm_ptr, int idx, 568 int *lpid_ptr, 569 bool is_remote) MPL_STATIC_INLINE_SUFFIX; 570 int MPIDI_NM_get_local_upids(MPIR_Comm * comm, size_t ** local_upid_size, char **local_upids); 571 int MPIDI_NM_upids_to_lupids(int size, size_t * remote_upid_size, char *remote_upids, 572 int **remote_lupids); 573 int MPIDI_NM_create_intercomm_from_lpids(MPIR_Comm * newcomm_ptr, int size, const int lpids[]); 574 int MPIDI_NM_mpi_comm_commit_pre_hook(MPIR_Comm * comm); 575 int MPIDI_NM_mpi_comm_commit_post_hook(MPIR_Comm * comm); 576 int MPIDI_NM_mpi_comm_free_hook(MPIR_Comm * comm); 577 int MPIDI_NM_mpi_win_create_hook(MPIR_Win * win); 578 int MPIDI_NM_mpi_win_allocate_hook(MPIR_Win * win); 579 int MPIDI_NM_mpi_win_allocate_shared_hook(MPIR_Win * win); 580 int MPIDI_NM_mpi_win_create_dynamic_hook(MPIR_Win * win); 581 int MPIDI_NM_mpi_win_attach_hook(MPIR_Win * win, void *base, MPI_Aint size); 582 int MPIDI_NM_mpi_win_detach_hook(MPIR_Win * win, const void *base); 583 int MPIDI_NM_mpi_win_free_hook(MPIR_Win * win); 584 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_rma_win_cmpl_hook(MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 585 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_rma_win_local_cmpl_hook(MPIR_Win * 586 win) MPL_STATIC_INLINE_SUFFIX; 587 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_rma_target_cmpl_hook(int rank, 588 MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 589 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_rma_target_local_cmpl_hook(int rank, 590 MPIR_Win * 591 win) MPL_STATIC_INLINE_SUFFIX; 592 MPL_STATIC_INLINE_PREFIX void MPIDI_NM_am_request_init(MPIR_Request * req) MPL_STATIC_INLINE_SUFFIX; 593 MPL_STATIC_INLINE_PREFIX void MPIDI_NM_am_request_finalize(MPIR_Request * 594 req) MPL_STATIC_INLINE_SUFFIX; 595 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_send(const void *buf, MPI_Aint count, 596 MPI_Datatype datatype, int rank, int tag, 597 MPIR_Comm * comm, int context_offset, 598 MPIDI_av_entry_t * addr, 599 MPIR_Request ** request) MPL_STATIC_INLINE_SUFFIX; 600 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_send_coll(const void *buf, MPI_Aint count, 601 MPI_Datatype datatype, int rank, int tag, 602 MPIR_Comm * comm, int context_offset, 603 MPIDI_av_entry_t * addr, MPIR_Request ** request, 604 MPIR_Errflag_t * errflag) MPL_STATIC_INLINE_SUFFIX; 605 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ssend(const void *buf, MPI_Aint count, 606 MPI_Datatype datatype, int rank, int tag, 607 MPIR_Comm * comm, int context_offset, 608 MPIDI_av_entry_t * addr, 609 MPIR_Request ** request) MPL_STATIC_INLINE_SUFFIX; 610 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_isend(const void *buf, MPI_Aint count, 611 MPI_Datatype datatype, int rank, int tag, 612 MPIR_Comm * comm, int context_offset, 613 MPIDI_av_entry_t * addr, 614 MPIR_Request ** request) MPL_STATIC_INLINE_SUFFIX; 615 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_isend_coll(const void *buf, MPI_Aint count, 616 MPI_Datatype datatype, int rank, int tag, 617 MPIR_Comm * comm, int context_offset, 618 MPIDI_av_entry_t * addr, MPIR_Request ** request, 619 MPIR_Errflag_t * errflag) MPL_STATIC_INLINE_SUFFIX; 620 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_issend(const void *buf, MPI_Aint count, 621 MPI_Datatype datatype, int rank, int tag, 622 MPIR_Comm * comm, int context_offset, 623 MPIDI_av_entry_t * addr, 624 MPIR_Request ** request) MPL_STATIC_INLINE_SUFFIX; 625 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_cancel_send(MPIR_Request * sreq) MPL_STATIC_INLINE_SUFFIX; 626 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_recv(void *buf, MPI_Aint count, MPI_Datatype datatype, 627 int rank, int tag, MPIR_Comm * comm, 628 int context_offset, MPIDI_av_entry_t * addr, 629 MPI_Status * status, 630 MPIR_Request ** request) MPL_STATIC_INLINE_SUFFIX; 631 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_irecv(void *buf, MPI_Aint count, MPI_Datatype datatype, 632 int rank, int tag, MPIR_Comm * comm, 633 int context_offset, MPIDI_av_entry_t * addr, 634 MPIR_Request ** request, 635 MPIR_Request * partner) MPL_STATIC_INLINE_SUFFIX; 636 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_imrecv(void *buf, MPI_Aint count, MPI_Datatype datatype, 637 MPIR_Request * message) MPL_STATIC_INLINE_SUFFIX; 638 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_cancel_recv(MPIR_Request * rreq) MPL_STATIC_INLINE_SUFFIX; 639 void *MPIDI_NM_mpi_alloc_mem(size_t size, MPIR_Info * info_ptr); 640 int MPIDI_NM_mpi_free_mem(void *ptr); 641 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_improbe(int source, int tag, MPIR_Comm * comm, 642 int context_offset, MPIDI_av_entry_t * addr, 643 int *flag, MPIR_Request ** message, 644 MPI_Status * status) MPL_STATIC_INLINE_SUFFIX; 645 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_iprobe(int source, int tag, MPIR_Comm * comm, 646 int context_offset, MPIDI_av_entry_t * addr, 647 int *flag, 648 MPI_Status * status) MPL_STATIC_INLINE_SUFFIX; 649 int MPIDI_NM_mpi_win_set_info(MPIR_Win * win, MPIR_Info * info); 650 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_shared_query(MPIR_Win * win, int rank, 651 MPI_Aint * size, int *disp_unit, 652 void *baseptr) MPL_STATIC_INLINE_SUFFIX; 653 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_put(const void *origin_addr, int origin_count, 654 MPI_Datatype origin_datatype, int target_rank, 655 MPI_Aint target_disp, int target_count, 656 MPI_Datatype target_datatype, MPIR_Win * win, 657 MPIDI_av_entry_t * addr, 658 MPIDI_winattr_t winattr) MPL_STATIC_INLINE_SUFFIX; 659 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_start(MPIR_Group * group, int assert, 660 MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 661 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_complete(MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 662 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_post(MPIR_Group * group, int assert, 663 MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 664 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_wait(MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 665 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_test(MPIR_Win * win, 666 int *flag) MPL_STATIC_INLINE_SUFFIX; 667 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_lock(int lock_type, int rank, int assert, 668 MPIR_Win * win, 669 MPIDI_av_entry_t * 670 addr) MPL_STATIC_INLINE_SUFFIX; 671 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_unlock(int rank, MPIR_Win * win, 672 MPIDI_av_entry_t * 673 addr) MPL_STATIC_INLINE_SUFFIX; 674 int MPIDI_NM_mpi_win_get_info(MPIR_Win * win, MPIR_Info ** info_p_p); 675 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_get(void *origin_addr, int origin_count, 676 MPI_Datatype origin_datatype, int target_rank, 677 MPI_Aint target_disp, int target_count, 678 MPI_Datatype target_datatype, MPIR_Win * win, 679 MPIDI_av_entry_t * addr, 680 MPIDI_winattr_t winattr) MPL_STATIC_INLINE_SUFFIX; 681 int MPIDI_NM_mpi_win_free(MPIR_Win ** win_ptr); 682 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_fence(int assert, 683 MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 684 int MPIDI_NM_mpi_win_create(void *base, MPI_Aint length, int disp_unit, MPIR_Info * info, 685 MPIR_Comm * comm_ptr, MPIR_Win ** win_ptr); 686 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_accumulate(const void *origin_addr, int origin_count, 687 MPI_Datatype origin_datatype, int target_rank, 688 MPI_Aint target_disp, int target_count, 689 MPI_Datatype target_datatype, MPI_Op op, 690 MPIR_Win * win, 691 MPIDI_av_entry_t * addr, 692 MPIDI_winattr_t winattr) 693 MPL_STATIC_INLINE_SUFFIX; 694 int MPIDI_NM_mpi_win_attach(MPIR_Win * win, void *base, MPI_Aint size); 695 int MPIDI_NM_mpi_win_allocate_shared(MPI_Aint size, int disp_unit, MPIR_Info * info_ptr, 696 MPIR_Comm * comm_ptr, void **base_ptr, MPIR_Win ** win_ptr); 697 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_rput(const void *origin_addr, int origin_count, 698 MPI_Datatype origin_datatype, int target_rank, 699 MPI_Aint target_disp, int target_count, 700 MPI_Datatype target_datatype, MPIR_Win * win, 701 MPIDI_av_entry_t * addr, 702 MPIDI_winattr_t winattr, 703 MPIR_Request ** request) MPL_STATIC_INLINE_SUFFIX; 704 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_flush_local(int rank, MPIR_Win * win, 705 MPIDI_av_entry_t * 706 addr) MPL_STATIC_INLINE_SUFFIX; 707 int MPIDI_NM_mpi_win_detach(MPIR_Win * win, const void *base); 708 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_compare_and_swap(const void *origin_addr, 709 const void *compare_addr, 710 void *result_addr, MPI_Datatype datatype, 711 int target_rank, MPI_Aint target_disp, 712 MPIR_Win * win, 713 MPIDI_av_entry_t * addr, 714 MPIDI_winattr_t winattr) 715 MPL_STATIC_INLINE_SUFFIX; 716 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_raccumulate(const void *origin_addr, int origin_count, 717 MPI_Datatype origin_datatype, int target_rank, 718 MPI_Aint target_disp, int target_count, 719 MPI_Datatype target_datatype, MPI_Op op, 720 MPIR_Win * win, MPIDI_av_entry_t * addr, 721 MPIDI_winattr_t winattr, 722 MPIR_Request ** 723 request) MPL_STATIC_INLINE_SUFFIX; 724 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_rget_accumulate(const void *origin_addr, int origin_count, 725 MPI_Datatype origin_datatype, 726 void *result_addr, int result_count, 727 MPI_Datatype result_datatype, 728 int target_rank, MPI_Aint target_disp, 729 int target_count, 730 MPI_Datatype target_datatype, MPI_Op op, 731 MPIR_Win * win, MPIDI_av_entry_t * addr, 732 MPIDI_winattr_t winattr, 733 MPIR_Request ** 734 request) MPL_STATIC_INLINE_SUFFIX; 735 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_fetch_and_op(const void *origin_addr, void *result_addr, 736 MPI_Datatype datatype, int target_rank, 737 MPI_Aint target_disp, MPI_Op op, 738 MPIR_Win * win, MPIDI_av_entry_t * addr, 739 MPIDI_winattr_t winattr) 740 MPL_STATIC_INLINE_SUFFIX; 741 int MPIDI_NM_mpi_win_allocate(MPI_Aint size, int disp_unit, MPIR_Info * info, MPIR_Comm * comm, 742 void *baseptr, MPIR_Win ** win); 743 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_flush(int rank, MPIR_Win * win, 744 MPIDI_av_entry_t * 745 addr) MPL_STATIC_INLINE_SUFFIX; 746 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_flush_local_all(MPIR_Win * 747 win) MPL_STATIC_INLINE_SUFFIX; 748 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_unlock_all(MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 749 int MPIDI_NM_mpi_win_create_dynamic(MPIR_Info * info, MPIR_Comm * comm, MPIR_Win ** win); 750 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_rget(void *origin_addr, int origin_count, 751 MPI_Datatype origin_datatype, int target_rank, 752 MPI_Aint target_disp, int target_count, 753 MPI_Datatype target_datatype, MPIR_Win * win, 754 MPIDI_av_entry_t * addr, 755 MPIDI_winattr_t winattr, 756 MPIR_Request ** request) MPL_STATIC_INLINE_SUFFIX; 757 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_sync(MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 758 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_flush_all(MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 759 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_get_accumulate(const void *origin_addr, int origin_count, 760 MPI_Datatype origin_datatype, 761 void *result_addr, int result_count, 762 MPI_Datatype result_datatype, 763 int target_rank, MPI_Aint target_disp, 764 int target_count, 765 MPI_Datatype target_datatype, MPI_Op op, 766 MPIR_Win * win, 767 MPIDI_av_entry_t * addr, 768 MPIDI_winattr_t winattr) 769 MPL_STATIC_INLINE_SUFFIX; 770 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_win_lock_all(int assert, 771 MPIR_Win * win) MPL_STATIC_INLINE_SUFFIX; 772 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_rank_is_local(int target, 773 MPIR_Comm * comm) MPL_STATIC_INLINE_SUFFIX; 774 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_av_is_local(MPIDI_av_entry_t * av) MPL_STATIC_INLINE_SUFFIX; 775 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_barrier(MPIR_Comm * comm, 776 MPIR_Errflag_t * errflag) 777 MPL_STATIC_INLINE_SUFFIX; 778 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_bcast(void *buffer, int count, MPI_Datatype datatype, 779 int root, MPIR_Comm * comm, 780 MPIR_Errflag_t * errflag) MPL_STATIC_INLINE_SUFFIX; 781 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_allreduce(const void *sendbuf, void *recvbuf, int count, 782 MPI_Datatype datatype, MPI_Op op, 783 MPIR_Comm * comm, MPIR_Errflag_t * errflag) 784 MPL_STATIC_INLINE_SUFFIX; 785 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_allgather(const void *sendbuf, int sendcount, 786 MPI_Datatype sendtype, void *recvbuf, 787 int recvcount, MPI_Datatype recvtype, 788 MPIR_Comm * comm, MPIR_Errflag_t * errflag) 789 MPL_STATIC_INLINE_SUFFIX; 790 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_allgatherv(const void *sendbuf, int sendcount, 791 MPI_Datatype sendtype, void *recvbuf, 792 const int *recvcounts, const int *displs, 793 MPI_Datatype recvtype, MPIR_Comm * comm, 794 MPIR_Errflag_t * errflag) 795 MPL_STATIC_INLINE_SUFFIX; 796 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_scatter(const void *sendbuf, int sendcount, 797 MPI_Datatype sendtype, void *recvbuf, 798 int recvcount, MPI_Datatype recvtype, int root, 799 MPIR_Comm * comm, MPIR_Errflag_t * errflag) 800 MPL_STATIC_INLINE_SUFFIX; 801 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_scatterv(const void *sendbuf, const int *sendcounts, 802 const int *displs, MPI_Datatype sendtype, 803 void *recvbuf, int recvcount, 804 MPI_Datatype recvtype, int root, 805 MPIR_Comm * comm_ptr, 806 MPIR_Errflag_t * errflag) 807 MPL_STATIC_INLINE_SUFFIX; 808 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_gather(const void *sendbuf, int sendcount, 809 MPI_Datatype sendtype, void *recvbuf, 810 int recvcount, MPI_Datatype recvtype, int root, 811 MPIR_Comm * comm, MPIR_Errflag_t * errflag) 812 MPL_STATIC_INLINE_SUFFIX; 813 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_gatherv(const void *sendbuf, int sendcount, 814 MPI_Datatype sendtype, void *recvbuf, 815 const int *recvcounts, const int *displs, 816 MPI_Datatype recvtype, int root, MPIR_Comm * comm, 817 MPIR_Errflag_t * errflag) 818 MPL_STATIC_INLINE_SUFFIX; 819 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_alltoall(const void *sendbuf, int sendcount, 820 MPI_Datatype sendtype, void *recvbuf, 821 int recvcount, MPI_Datatype recvtype, 822 MPIR_Comm * comm, MPIR_Errflag_t * errflag) 823 MPL_STATIC_INLINE_SUFFIX; 824 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_alltoallv(const void *sendbuf, const int *sendcounts, 825 const int *sdispls, MPI_Datatype sendtype, 826 void *recvbuf, const int *recvcounts, 827 const int *rdispls, MPI_Datatype recvtype, 828 MPIR_Comm * comm, MPIR_Errflag_t * errflag) 829 MPL_STATIC_INLINE_SUFFIX; 830 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_alltoallw(const void *sendbuf, const int *sendcounts, 831 const int *sdispls, 832 const MPI_Datatype sendtypes[], void *recvbuf, 833 const int *recvcounts, const int *rdispls, 834 const MPI_Datatype recvtypes[], 835 MPIR_Comm * comm, MPIR_Errflag_t * errflag) 836 MPL_STATIC_INLINE_SUFFIX; 837 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_reduce(const void *sendbuf, void *recvbuf, int count, 838 MPI_Datatype datatype, MPI_Op op, int root, 839 MPIR_Comm * comm_ptr, MPIR_Errflag_t * errflag) 840 MPL_STATIC_INLINE_SUFFIX; 841 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_reduce_scatter(const void *sendbuf, void *recvbuf, 842 const int *recvcounts, 843 MPI_Datatype datatype, MPI_Op op, 844 MPIR_Comm * comm_ptr, 845 MPIR_Errflag_t * errflag) 846 MPL_STATIC_INLINE_SUFFIX; 847 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_reduce_scatter_block(const void *sendbuf, void *recvbuf, 848 int recvcount, MPI_Datatype datatype, 849 MPI_Op op, 850 MPIR_Comm * comm_ptr, 851 MPIR_Errflag_t * errflag) 852 MPL_STATIC_INLINE_SUFFIX; 853 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_scan(const void *sendbuf, void *recvbuf, int count, 854 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 855 MPIR_Errflag_t * errflag) MPL_STATIC_INLINE_SUFFIX; 856 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_exscan(const void *sendbuf, void *recvbuf, int count, 857 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 858 MPIR_Errflag_t * errflag) MPL_STATIC_INLINE_SUFFIX; 859 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_neighbor_allgather(const void *sendbuf, int sendcount, 860 MPI_Datatype sendtype, void *recvbuf, 861 int recvcount, MPI_Datatype recvtype, 862 MPIR_Comm * 863 comm) MPL_STATIC_INLINE_SUFFIX; 864 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_neighbor_allgatherv(const void *sendbuf, int sendcount, 865 MPI_Datatype sendtype, void *recvbuf, 866 const int *recvcounts, 867 const int *displs, 868 MPI_Datatype recvtype, 869 MPIR_Comm * 870 comm) MPL_STATIC_INLINE_SUFFIX; 871 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_neighbor_alltoallv(const void *sendbuf, 872 const int *sendcounts, 873 const int *sdispls, 874 MPI_Datatype sendtype, void *recvbuf, 875 const int *recvcounts, 876 const int *rdispls, 877 MPI_Datatype recvtype, 878 MPIR_Comm * 879 comm) MPL_STATIC_INLINE_SUFFIX; 880 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_neighbor_alltoallw(const void *sendbuf, 881 const int *sendcounts, 882 const MPI_Aint * sdispls, 883 const MPI_Datatype * sendtypes, 884 void *recvbuf, const int *recvcounts, 885 const MPI_Aint * rdispls, 886 const MPI_Datatype * recvtypes, 887 MPIR_Comm * 888 comm) MPL_STATIC_INLINE_SUFFIX; 889 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_neighbor_alltoall(const void *sendbuf, int sendcount, 890 MPI_Datatype sendtype, void *recvbuf, 891 int recvcount, MPI_Datatype recvtype, 892 MPIR_Comm * 893 comm) MPL_STATIC_INLINE_SUFFIX; 894 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ineighbor_allgather(const void *sendbuf, int sendcount, 895 MPI_Datatype sendtype, void *recvbuf, 896 int recvcount, MPI_Datatype recvtype, 897 MPIR_Comm * comm, 898 MPIR_Request ** 899 req) MPL_STATIC_INLINE_SUFFIX; 900 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ineighbor_allgatherv(const void *sendbuf, int sendcount, 901 MPI_Datatype sendtype, void *recvbuf, 902 const int *recvcounts, 903 const int *displs, 904 MPI_Datatype recvtype, 905 MPIR_Comm * comm, 906 MPIR_Request ** 907 req) MPL_STATIC_INLINE_SUFFIX; 908 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ineighbor_alltoall(const void *sendbuf, int sendcount, 909 MPI_Datatype sendtype, void *recvbuf, 910 int recvcount, MPI_Datatype recvtype, 911 MPIR_Comm * comm, 912 MPIR_Request ** 913 req) MPL_STATIC_INLINE_SUFFIX; 914 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ineighbor_alltoallv(const void *sendbuf, 915 const int *sendcounts, 916 const int *sdispls, 917 MPI_Datatype sendtype, void *recvbuf, 918 const int *recvcounts, 919 const int *rdispls, 920 MPI_Datatype recvtype, 921 MPIR_Comm * comm, 922 MPIR_Request ** 923 req) MPL_STATIC_INLINE_SUFFIX; 924 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ineighbor_alltoallw(const void *sendbuf, 925 const int *sendcounts, 926 const MPI_Aint * sdispls, 927 const MPI_Datatype * sendtypes, 928 void *recvbuf, const int *recvcounts, 929 const MPI_Aint * rdispls, 930 const MPI_Datatype * recvtypes, 931 MPIR_Comm * comm, 932 MPIR_Request ** 933 req) MPL_STATIC_INLINE_SUFFIX; 934 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ibarrier(MPIR_Comm * comm, 935 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 936 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ibcast(void *buffer, int count, MPI_Datatype datatype, 937 int root, MPIR_Comm * comm, 938 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 939 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_iallgather(const void *sendbuf, int sendcount, 940 MPI_Datatype sendtype, void *recvbuf, 941 int recvcount, MPI_Datatype recvtype, 942 MPIR_Comm * comm, 943 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 944 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_iallgatherv(const void *sendbuf, int sendcount, 945 MPI_Datatype sendtype, void *recvbuf, 946 const int *recvcounts, const int *displs, 947 MPI_Datatype recvtype, MPIR_Comm * comm, 948 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 949 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_iallreduce(const void *sendbuf, void *recvbuf, int count, 950 MPI_Datatype datatype, MPI_Op op, 951 MPIR_Comm * comm, 952 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 953 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ialltoall(const void *sendbuf, int sendcount, 954 MPI_Datatype sendtype, void *recvbuf, 955 int recvcount, MPI_Datatype recvtype, 956 MPIR_Comm * comm, 957 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 958 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ialltoallv(const void *sendbuf, const int *sendcounts, 959 const int *sdispls, MPI_Datatype sendtype, 960 void *recvbuf, const int *recvcounts, 961 const int *rdispls, MPI_Datatype recvtype, 962 MPIR_Comm * comm, 963 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 964 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ialltoallw(const void *sendbuf, const int *sendcounts, 965 const int *sdispls, 966 const MPI_Datatype sendtypes[], void *recvbuf, 967 const int *recvcounts, const int *rdispls, 968 const MPI_Datatype recvtypes[], 969 MPIR_Comm * comm, 970 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 971 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_iexscan(const void *sendbuf, void *recvbuf, int count, 972 MPI_Datatype datatype, MPI_Op op, 973 MPIR_Comm * comm, 974 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 975 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_igather(const void *sendbuf, int sendcount, 976 MPI_Datatype sendtype, void *recvbuf, 977 int recvcount, MPI_Datatype recvtype, int root, 978 MPIR_Comm * comm, 979 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 980 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_igatherv(const void *sendbuf, int sendcount, 981 MPI_Datatype sendtype, void *recvbuf, 982 const int *recvcounts, const int *displs, 983 MPI_Datatype recvtype, int root, 984 MPIR_Comm * comm, 985 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 986 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ireduce_scatter_block(const void *sendbuf, void *recvbuf, 987 int recvcount, 988 MPI_Datatype datatype, MPI_Op op, 989 MPIR_Comm * comm, 990 MPIR_Request ** 991 req) MPL_STATIC_INLINE_SUFFIX; 992 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ireduce_scatter(const void *sendbuf, void *recvbuf, 993 const int *recvcounts, 994 MPI_Datatype datatype, MPI_Op op, 995 MPIR_Comm * comm, 996 MPIR_Request ** 997 req) MPL_STATIC_INLINE_SUFFIX; 998 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_ireduce(const void *sendbuf, void *recvbuf, int count, 999 MPI_Datatype datatype, MPI_Op op, int root, 1000 MPIR_Comm * comm_ptr, 1001 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 1002 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_iscan(const void *sendbuf, void *recvbuf, int count, 1003 MPI_Datatype datatype, MPI_Op op, MPIR_Comm * comm, 1004 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 1005 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_iscatter(const void *sendbuf, int sendcount, 1006 MPI_Datatype sendtype, void *recvbuf, 1007 int recvcount, MPI_Datatype recvtype, int root, 1008 MPIR_Comm * comm, 1009 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 1010 MPL_STATIC_INLINE_PREFIX int MPIDI_NM_mpi_iscatterv(const void *sendbuf, const int *sendcounts, 1011 const int *displs, MPI_Datatype sendtype, 1012 void *recvbuf, int recvcount, 1013 MPI_Datatype recvtype, int root, 1014 MPIR_Comm * comm_ptr, 1015 MPIR_Request ** req) MPL_STATIC_INLINE_SUFFIX; 1016 int MPIDI_NM_mpi_type_commit_hook(MPIR_Datatype * datatype_p); 1017 int MPIDI_NM_mpi_type_free_hook(MPIR_Datatype * datatype_p); 1018 int MPIDI_NM_mpi_op_commit_hook(MPIR_Op * op_p); 1019 int MPIDI_NM_mpi_op_free_hook(MPIR_Op * op_p); 1020 1021 #endif /* NETMOD_H_INCLUDED */ 1022