Предположим, что система профилирования подсчитывает общий объем данных, посланных функцией MPI_SEND, и полное время выполнения этой функции. В простейшем случае этого можно достичь так:
static int totalBytes;
static double totalTime;
int MPI_SEND(void * buffer, const int count,
MPI_Datatype datatype, int dest, int tag, MPI_comm comm)
{
double tstart = MPI_Wtime(); /* передача на все аргументы */
int extent;
int result = PMPI_Send(buffer,count,datatype,dest,tag,comm);
MPI_Type_size(datatype, &extent); /* расчет размера */
totalBytes += count*extent;
totalTime += MPI_Wtime() - tstart; /* и времени */
return result;
}