CPM: A software tool for Communication Performance Modelling
Classes | |
struct | PLogP_model |
Functions | |
PLogP_model * | PLogP_alloc (int n) |
void | PLogP_free (PLogP_model *model) |
void | PLogP_read (FILE *stream, PLogP_model **model) |
void | PLogP_write (FILE *stream, const PLogP_model *model) |
void | PLogP_estimate (MPI_Comm comm, MPIB_precision precision, MPIB_msgset msgset, int parallel, PLogP_model **model) |
double | PLogP_predict_p2p (void *_this, int i, int j, int M) |
double | LogGP_predict_p2p (void *_this, int i, int j, int M) |
double | PLogP_hpredict_sg_linear (void *_this, int M) |
double | LogGP_hpredict_sg_linear (void *_this, int M) |
Detailed Description
This module provides building of the heterogeneous extension of the parameterised LogP model and PLogP/LogGP predictions of the execution time of point-to-point and collective communication operations.
The PLogP model is an extension of the LogP model . The PLogP model is defined in terms of the following parameters:
- - latency,
- and - sender and receiver overheads,
- - gap per message (delay between consecutive communications),
- - number of processors.
Some of these parameters are functions, which makes this model "parameterised". They are represented by piecewise linear functions. The PLogP parameters are estimated with help of the logp_mpi library . The heterogeneous extension is a set of the PLogP models built for each pair of processors: .
The parameters of the LogP and LogGP (another extension of the LogP model proposed in , which considers message size and includes an extra parameter, , gap per byte) models can be expressed via the PLogP parameters:
The heterogeneous extension of the LogGP model can be obtained by applying the above equations to the PLogP parameters of each pair of processors. Therefore, this module provides both the PLogP and LogGP predictions of the execution time of collective communication operations.
Function Documentation
PLogP_model* PLogP_alloc | ( | int | n | ) |
Allocates memory for PLogP model
void PLogP_free | ( | PLogP_model * | model | ) |
Frees the PLogP model.
void PLogP_read | ( | FILE * | stream, | |
PLogP_model ** | model | |||
) |
Reads the PLogP model.
- Note:
- Creates a temporary file.
void PLogP_write | ( | FILE * | stream, | |
const PLogP_model * | model | |||
) |
Writes the PLogP model.
- Note:
- Creates a temporary file.
void PLogP_estimate | ( | MPI_Comm | comm, | |
MPIB_precision | precision, | |||
MPIB_msgset | msgset, | |||
int | parallel, | |||
PLogP_model ** | model | |||
) |
Estimates the PLogP model. Calls the logp_mpi library.
- Parameters:
-
comm communicator precision measurement precision msgset message set parallel several non-overlapped point-to-point communications at the same time if non-zero model PLogP model
double PLogP_predict_p2p | ( | void * | _this, | |
int | i, | |||
int | j, | |||
int | M | |||
) |
Predicts the execution time of a point-to-point communication as
double LogGP_predict_p2p | ( | void * | _this, | |
int | i, | |||
int | j, | |||
int | M | |||
) |
Predicts the execution time of a point-to-point communication according to LogGP model as
- Parameters:
-
_this PLogP model i index of the process j index of the process M message size
double PLogP_hpredict_sg_linear | ( | void * | _this, | |
int | M | |||
) |
Homogeneous PLogP prediction of linear scatter/gather:
double LogGP_hpredict_sg_linear | ( | void * | _this, | |
int | M | |||
) |
Homogeneous LogGP prediction of linear scatter/gather: