Mohammad Ali Farazdaghi
ELEC873
Ignacio Laguna, Ryan Marshall, Kathryn Mohror, Martin Ruefenacht, Anthony Skjellum, Nawrin Sultana
mpiusage.py on each project
$ ./mpiusage.py /path/to/project/src/
{"MPI_COMM_SIZE": 3, "MPI_REDUCE": 3, "MPI_WAITALL": 2,
"MPI_WAIT": 116, "MPI_COMM_RANK": 15, "MPI_ALLREDUCE": 3,
"MPI_INIT": 3, "MPI_FINALIZE": 3, "MPI_ABORT": 12, "MPI_WTIME":
3, "MPI_IRECV": 26, "MPI_ISEND": 52, "MPI_BARRIER": 3,
"OPENMP": 0, "OPENACC": 0, "CUDA": 168, "OPENCL": 0,
"C_LINES": 0, "CPP_LINES": 297, "C_CPP_H_LINES": 365,
"FORTRAN_LINES": 0, "LINES_OF_CODE": 14574}
Static Source Code Analysis!
A Large Sample Size (100+)
mpiusage.py?
void Foam::reduce(..., ...., ...., ...., ....) {
#ifdef MPIX_COMM_TYPE_SHARED
MPIX_Ireduce(...);
#else
reduce(..., ...., ...., ....); // -> allReduce(...)
#endif
}
void Foam::allReduce(...) {
if (small_enough()) {
// use p2p: MPI_Recv, MPI_Send
} else {
MPI_Allreduce(...); }
}
if (almost_always_returns_false()) {
MPI_Rare_API(...);
}
for (size_t i = 0; i < very_large_runtime_val; i++) {
MPI_Rare_API(...);
}
#ifdef USE_EXOTIC_HW_FEATURE_X
MPI_Rare_API(...);
#endif
mpiusage.py anywhereCannot reproduce results
Not sure how they parsed C++