CPM: A software tool for Communication Performance Modelling

The heterogeneous PLogP model

Classes

struct  PLogP_model

Functions

PLogP_modelPLogP_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:

  • $ L $ - latency,
  • $ o_s(M) $ and $ o_r(M) $ - sender and receiver overheads,
  • $ g(M) $ - gap per message (delay between consecutive communications),
  • $ P $ - 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: $ \{L_{ij}, {o_s}_{ij}(M), {o_r}_{ij}(M), g_{ij}(M)\}_{i \ne j = 0}^{n-1} $.

The parameters of the LogP and LogGP (another extension of the LogP model proposed in , which considers message size and includes an extra parameter, $ G $, gap per byte) models can be expressed via the PLogP parameters:

  • $ L = L^p + g^p(1) - o_s^p(1) - o_r^p(1) $
  • $ 2 * o = o_s^p(1) + o_r^p(1) $
  • $ g = g^p(1) $
  • $ G = g^p(M_{max}) / M_{max} $

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 $ L + g(M)$

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 $ L + 2 * o + G (M - 1) $

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: $ L + (n - 1) g(M)$

double LogGP_hpredict_sg_linear ( void *  _this,
int  M 
)

Homogeneous LogGP prediction of linear scatter/gather: $ L + 2 o + (n - 1) (M - 1) G + (n - 2) g $