MPI Advisor launches the execution of the application to
collect application-specific statistical performance data. Data
regarding MPI functions are collected using mpiP; pertinent
MPI environment characteristics are collected via MPI_T;
and the mapping of MPI tasks to the cores of a node, as
well as information about the location of communication
devices, are detected through the use of hwloc.
This application-specific MPI performance data, which is
collected during just a single execution of the input application,
and the architecture-specific data provided by the
collective evaluation script are used in the analysis phase.
This phase: 1) compares the collected data to a set of predefined
heuristics that are based on expert knowledge and
2) provides information to the recommendations phase that
enables MPI Advisor to recommend the appropriate eager
threshold, collective algorithm(s), tasks-to-cores mapping,
and Infiniband transport protocol that should be employed
by the application. Note, however, that if the employed
library does not follow the MPI 3.0 standard, MPI Advisor
only collects information that is pertinent to the tasksto-cores
mapping and transport protocol tuning strategies,
both of which are agnostic of the employed MPI library and
are supported by the MPI 2.0 standard.
If the employed library follows the MPI 3.0 standard, MPI
Advisor provides recommendations that are specific to that
library. Recommendations for the eager threshold and collective
algorithms require the use of MPI_T. Two sets of
reports are generated by the recommendations phase: 1)
one generated by mpiP, which contains an execution pro-
file of the application, and 2) one generated by MPI Advisor,
which explains how the application performed in terms
of each supported tuning strategy, suggestions on how the
application’s MPI performance could be improved, and examples
of how to implement the recommendations. If the
employed MPI library does not follow the MPI 3.0 standard,
MPI Advisor recommends that the user to consult the documentation
associated with the employed library for information
regarding the MPI variables that need to be modified
to implement the recommendations.
Since MPI Advisor was built upon mpiP, it acts as a linktime
library and, thus, is simple to use. It provides the
user with application-specific MPI-performance data, which
is collected with a single execution of the input application,
analyses that detect targeted MPI-performance bottlenecks,