SimGrid  3.18
Versatile Simulation of Distributed Systems
smpi_intel_mpi_selector.cpp File Reference
#include "colls_private.hpp"

Classes

struct  intel_tuning_table_size_element
 
struct  intel_tuning_table_numproc_element
 
struct  intel_tuning_table_element
 

Namespaces

 simgrid
 Alltoall Bruck.
 
 simgrid::smpi
 

Macros

#define INTEL_MAX_NB_THRESHOLDS   32
 
#define INTEL_MAX_NB_NUMPROCS   12
 
#define INTEL_MAX_NB_PPN   5 /* 1 2 4 8 16 ppn */
 
#define SIZECOMP_reduce_scatter
 
#define SIZECOMP_allreduce   size_t block_dsize =rcount * dtype->size();
 
#define SIZECOMP_alltoall   size_t block_dsize =send_count * send_type->size();
 
#define SIZECOMP_bcast   size_t block_dsize =count * datatype->size();
 
#define SIZECOMP_reduce   size_t block_dsize =count * datatype->size();
 
#define SIZECOMP_barrier   size_t block_dsize = 1;
 
#define SIZECOMP_allgather   size_t block_dsize =recv_count * recv_type->size();
 
#define SIZECOMP_allgatherv
 
#define SIZECOMP_gather
 
#define SIZECOMP_scatter
 
#define SIZECOMP_alltoallv   size_t block_dsize = 1;
 
#define IMPI_COLL_SELECT(cat, ret, args, args2)
 

Functions

static int simgrid::smpi::intel_barrier_gather_scatter (MPI_Comm comm)
 
static int simgrid::smpi::intel_reduce_scatter_reduce_scatterv (void *sbuf, void *rbuf, int *rcounts, MPI_Datatype dtype, MPI_Op op, MPI_Comm comm)
 
static int simgrid::smpi::intel_reduce_scatter_recursivehalving (void *sbuf, void *rbuf, int *rcounts, MPI_Datatype dtype, MPI_Op op, MPI_Comm comm)
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_ALLGATHERV_SIG,(send_buff, send_count, send_type, recv_buff, recv_count, recv_disps, recv_type, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_ALLREDUCE_SIG,(sbuf, rbuf, rcount, dtype, op, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_GATHER_SIG,(send_buff, send_count, send_type, recv_buff, recv_count, recv_type, root, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_ALLGATHER_SIG,(send_buff, send_count, send_type, recv_buff, recv_count, recv_type, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_ALLTOALL_SIG,(send_buff, send_count, send_type, recv_buff, recv_count, recv_type, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_ALLTOALLV_SIG,(send_buff, send_counts, send_disps, send_type, recv_buff, recv_counts, recv_disps, recv_type, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_BCAST_SIG,(buf, count, datatype, root, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_REDUCE_SIG,(buf, rbuf, count, datatype, op, root, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_REDUCE_SCATTER_SIG,(sbuf, rbuf, rcounts, dtype, op, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_SCATTER_SIG,(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm))
 
 simgrid::smpi::COLL_APPLY (IMPI_COLL_SELECT, COLL_BARRIER_SIG,(comm))
 

Variables

int(* simgrid::smpi::intel_allreduce_functions_table [])(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_allreduce_table []
 
intel_tuning_table_element simgrid::smpi::intel_alltoall_table []
 
int(* simgrid::smpi::intel_alltoall_functions_table [])(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, MPI_Comm comm)
 
int(* simgrid::smpi::intel_barrier_functions_table [])(MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_barrier_table []
 
int(* simgrid::smpi::intel_bcast_functions_table [])(void *buff, int count, MPI_Datatype datatype, int root, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_bcast_table []
 
int(* simgrid::smpi::intel_reduce_functions_table [])(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_reduce_table []
 
int(* simgrid::smpi::intel_reduce_scatter_functions_table [])(void *sbuf, void *rbuf, int *rcounts, MPI_Datatype dtype, MPI_Op op, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_reduce_scatter_table []
 
int(* simgrid::smpi::intel_allgather_functions_table [])(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_allgather_table []
 
int(* simgrid::smpi::intel_allgatherv_functions_table [])(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int *rcounts, int *rdispls, MPI_Datatype rdtype, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_allgatherv_table []
 
int(* simgrid::smpi::intel_gather_functions_table [])(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, int root, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_gather_table []
 
int(* simgrid::smpi::intel_scatter_functions_table [])(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, int root, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_scatter_table []
 
int(* simgrid::smpi::intel_alltoallv_functions_table [])(void *sbuf, int *scounts, int *sdisps, MPI_Datatype sdtype, void *rbuf, int *rcounts, int *rdisps, MPI_Datatype rdtype, MPI_Comm comm)
 
intel_tuning_table_element simgrid::smpi::intel_alltoallv_table []
 

Macro Definition Documentation

◆ INTEL_MAX_NB_THRESHOLDS

#define INTEL_MAX_NB_THRESHOLDS   32

◆ INTEL_MAX_NB_NUMPROCS

#define INTEL_MAX_NB_NUMPROCS   12

◆ INTEL_MAX_NB_PPN

#define INTEL_MAX_NB_PPN   5 /* 1 2 4 8 16 ppn */

◆ SIZECOMP_reduce_scatter

#define SIZECOMP_reduce_scatter
Value:
int total_message_size = 0;\
for (i = 0; i < comm_size; i++) { \
total_message_size += rcounts[i];\
}\
size_t block_dsize = total_message_size*dtype->size();\

◆ SIZECOMP_allreduce

#define SIZECOMP_allreduce   size_t block_dsize =rcount * dtype->size();

◆ SIZECOMP_alltoall

#define SIZECOMP_alltoall   size_t block_dsize =send_count * send_type->size();

◆ SIZECOMP_bcast

#define SIZECOMP_bcast   size_t block_dsize =count * datatype->size();

◆ SIZECOMP_reduce

#define SIZECOMP_reduce   size_t block_dsize =count * datatype->size();

◆ SIZECOMP_barrier

#define SIZECOMP_barrier   size_t block_dsize = 1;

◆ SIZECOMP_allgather

#define SIZECOMP_allgather   size_t block_dsize =recv_count * recv_type->size();

◆ SIZECOMP_allgatherv

#define SIZECOMP_allgatherv
Value:
int total_message_size = 0;\
for (i = 0; i < comm_size; i++) { \
total_message_size += recv_count[i];\
}\
size_t block_dsize = total_message_size*recv_type->size();

◆ SIZECOMP_gather

#define SIZECOMP_gather
Value:
int rank = comm->rank();\
size_t block_dsize = (send_buff == MPI_IN_PLACE || rank ==root) ?\
recv_count * recv_type->size() :\
send_count * send_type->size();
#define MPI_IN_PLACE
Definition: smpi.h:51
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Aint MPI_Info void baseptr void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Comm int keyval MPI_Comm int void attr_value void int MPI_Datatype int root
Definition: smpi_mpi.cpp:50
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype MPI_Comm comm
Definition: smpi_mpi.cpp:40
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Aint MPI_Info void baseptr void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Comm int keyval MPI_Comm int void attr_value void int MPI_Datatype int MPI_Comm comm MPI_Comm int int int int MPI_Comm comm_cart MPI_Comm int int int int coords MPI_Comm int int int int dest MPI_Comm MPI_Comm int result MPI_Comm MPI_Group MPI_Comm newcomm MPI_Comm comm int keyval MPI_Comm int void int flag MPI_Comm MPI_Group group MPI_Comm int void attribute_val MPI_Comm int int MPI_Comm comm_out void void void MPI_Datatype int MPI_Aint MPI_Win win int int errorclass int flag void baseptr void int MPI_Datatype void int int MPI_Datatype int MPI_Comm comm MPI_Status MPI_Datatype int count char int resultlen void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Win win void void MPI_Datatype int MPI_Aint MPI_Op MPI_Win win MPI_Group MPI_Group MPI_Group newgroup MPI_Group group MPI_Group MPI_Group MPI_Group newgroup MPI_Group int int MPI_Group newgroup MPI_Group int size MPI_Group MPI_Group MPI_Group newgroup MPI_Info char key MPI_Info info MPI_Info int nkeys MPI_Info char int int flag int flag int char int int provided void int MPI_Datatype int int MPI_Comm MPI_Request request void int MPI_Datatype int int MPI_Comm MPI_Request request MPI_Copy_function MPI_Delete_function int void extra_state MPI_User_function int MPI_Op op MPI_Op int commute void int MPI_Datatype void int int MPI_Comm comm void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Win win void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win MPI_Request request void int MPI_Datatype int int MPI_Comm MPI_Status status void void int MPI_Datatype MPI_Op MPI_Comm comm void void int MPI_Datatype MPI_Op int MPI_Comm comm void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Win MPI_Request request void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Win MPI_Request request void int MPI_Datatype void int MPI_Datatype int MPI_Comm comm void int MPI_Datatype int int MPI_Comm MPI_Request request void int MPI_Datatype int int void int MPI_Datatype int int MPI_Comm MPI_Status status void int MPI_Datatype int int MPI_Comm MPI_Request request int MPI_Request requests int MPI_Request int MPI_Status statuses MPI_Request int MPI_Status status MPI_Datatype datatype int int MPI_Aint MPI_Datatype MPI_Datatype newtype int int MPI_Aint MPI_Datatype MPI_Datatype new_type int int int MPI_Datatype MPI_Datatype newtype MPI_Datatype MPI_Aint MPI_Aint MPI_Datatype newtype MPI_Datatype int type_keyval MPI_Datatype MPI_Aint extent MPI_Datatype datatype MPI_Datatype MPI_Aint MPI_Aint extent MPI_Datatype MPI_Aint MPI_Aint extent int int MPI_Aint MPI_Datatype MPI_Datatype newtype MPI_Datatype MPI_Aint disp MPI_Datatype char name MPI_Datatype MPI_Count size MPI_Datatype MPI_Aint disp void int int void int MPI_Datatype MPI_Comm comm int MPI_Request int MPI_Status status int MPI_Request int int MPI_Status status void MPI_Aint int MPI_Info MPI_Comm MPI_Win win MPI_Win void MPI_Aint size MPI_Info MPI_Comm MPI_Win win MPI_Win win MPI_Win char int len MPI_Group int MPI_Win win MPI_Win MPI_Info info MPI_Win win int rank
Definition: smpi_mpi.cpp:209

◆ SIZECOMP_scatter

#define SIZECOMP_scatter
Value:
int rank = comm->rank();\
size_t block_dsize = (sendbuf == MPI_IN_PLACE || rank !=root ) ?\
recvcount * recvtype->size() :\
sendcount * sendtype->size();
#define MPI_IN_PLACE
Definition: smpi.h:51
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Aint MPI_Info void baseptr void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Comm int keyval MPI_Comm int void attr_value void int MPI_Datatype int root
Definition: smpi_mpi.cpp:50
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int recvcount
Definition: smpi_mpi.cpp:40
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype sendtype
Definition: smpi_mpi.cpp:40
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void * sendbuf
Definition: smpi_mpi.cpp:40
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype recvtype
Definition: smpi_mpi.cpp:40
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype MPI_Comm comm
Definition: smpi_mpi.cpp:40
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Aint MPI_Info void baseptr void int MPI_Datatype void int MPI_Datatype MPI_Comm comm MPI_Comm int keyval MPI_Comm int void attr_value void int MPI_Datatype int MPI_Comm comm MPI_Comm int int int int MPI_Comm comm_cart MPI_Comm int int int int coords MPI_Comm int int int int dest MPI_Comm MPI_Comm int result MPI_Comm MPI_Group MPI_Comm newcomm MPI_Comm comm int keyval MPI_Comm int void int flag MPI_Comm MPI_Group group MPI_Comm int void attribute_val MPI_Comm int int MPI_Comm comm_out void void void MPI_Datatype int MPI_Aint MPI_Win win int int errorclass int flag void baseptr void int MPI_Datatype void int int MPI_Datatype int MPI_Comm comm MPI_Status MPI_Datatype int count char int resultlen void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Win win void void MPI_Datatype int MPI_Aint MPI_Op MPI_Win win MPI_Group MPI_Group MPI_Group newgroup MPI_Group group MPI_Group MPI_Group MPI_Group newgroup MPI_Group int int MPI_Group newgroup MPI_Group int size MPI_Group MPI_Group MPI_Group newgroup MPI_Info char key MPI_Info info MPI_Info int nkeys MPI_Info char int int flag int flag int char int int provided void int MPI_Datatype int int MPI_Comm MPI_Request request void int MPI_Datatype int int MPI_Comm MPI_Request request MPI_Copy_function MPI_Delete_function int void extra_state MPI_User_function int MPI_Op op MPI_Op int commute void int MPI_Datatype void int int MPI_Comm comm void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Win win void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win MPI_Request request void int MPI_Datatype int int MPI_Comm MPI_Status status void void int MPI_Datatype MPI_Op MPI_Comm comm void void int MPI_Datatype MPI_Op int MPI_Comm comm void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Win MPI_Request request void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Win MPI_Request request void int MPI_Datatype void int MPI_Datatype int MPI_Comm comm void int MPI_Datatype int int MPI_Comm MPI_Request request void int MPI_Datatype int int void int MPI_Datatype int int MPI_Comm MPI_Status status void int MPI_Datatype int int MPI_Comm MPI_Request request int MPI_Request requests int MPI_Request int MPI_Status statuses MPI_Request int MPI_Status status MPI_Datatype datatype int int MPI_Aint MPI_Datatype MPI_Datatype newtype int int MPI_Aint MPI_Datatype MPI_Datatype new_type int int int MPI_Datatype MPI_Datatype newtype MPI_Datatype MPI_Aint MPI_Aint MPI_Datatype newtype MPI_Datatype int type_keyval MPI_Datatype MPI_Aint extent MPI_Datatype datatype MPI_Datatype MPI_Aint MPI_Aint extent MPI_Datatype MPI_Aint MPI_Aint extent int int MPI_Aint MPI_Datatype MPI_Datatype newtype MPI_Datatype MPI_Aint disp MPI_Datatype char name MPI_Datatype MPI_Count size MPI_Datatype MPI_Aint disp void int int void int MPI_Datatype MPI_Comm comm int MPI_Request int MPI_Status status int MPI_Request int int MPI_Status status void MPI_Aint int MPI_Info MPI_Comm MPI_Win win MPI_Win void MPI_Aint size MPI_Info MPI_Comm MPI_Win win MPI_Win win MPI_Win char int len MPI_Group int MPI_Win win MPI_Win MPI_Info info MPI_Win win int rank
Definition: smpi_mpi.cpp:209

◆ SIZECOMP_alltoallv

#define SIZECOMP_alltoallv   size_t block_dsize = 1;

◆ IMPI_COLL_SELECT

#define IMPI_COLL_SELECT (   cat,
  ret,
  args,
  args2 
)
Value:
ret Coll_ ## cat ## _impi:: cat (COLL_UNPAREN args)\
{\
int comm_size = comm->size();\
int i =0;\
SIZECOMP_ ## cat\
i=0;\
int j =0, k=0;\
if(comm->get_leaders_comm()==MPI_COMM_NULL){\
comm->init_smp();\
}\
int local_size=1;\
if (comm->is_uniform()) {\
local_size = comm->get_intra_comm()->size();\
}\
while(i < INTEL_MAX_NB_PPN &&\
local_size!=intel_ ## cat ## _table[i].ppn)\
i++;\
if(i==INTEL_MAX_NB_PPN) i=0;\
while(comm_size>intel_ ## cat ## _table[i].elems[j].max_num_proc\
j++;\
while(block_dsize >=intel_ ## cat ## _table[i].elems[j].elems[k].max_size\
&& k< intel_ ## cat ## _table[i].elems[j].num_elems)\
k++;\
return (intel_ ## cat ## _functions_table[intel_ ## cat ## _table[i].elems[j].elems[k].algo-1]\
args2);\
}
#define INTEL_MAX_NB_PPN
Definition: smpi_intel_mpi_selector.cpp:15
#define MPI_COMM_NULL
Definition: smpi.h:343
void int MPI_Datatype int MPI_Aint int MPI_Datatype MPI_Op MPI_Win win void int MPI_Datatype void int MPI_Datatype MPI_Comm comm
Definition: smpi_mpi.cpp:40
#define COLL_UNPAREN(...)
Definition: smpi_coll.hpp:36
#define INTEL_MAX_NB_THRESHOLDS
Definition: smpi_intel_mpi_selector.cpp:13