2. BACKGROUND
MPI is one of the most popular programming models for
writing parallel applications for HPC clusters. The MPI
standard defines a large set of primitives that programmers
can employ to implement communication and coordination
among processes. This set of primitives includes point-topoint,
collective, and one-sided communication, which employ
standard and user-defined data types; logical management
of communication peers using task groupings, communicators,
and topology; and dynamic process creation
and management. MPI also provides interfaces for inserting
tools for profiling the execution behavior of programs that
use MPI. The standard defines only the functionality and behavior
of communication, not the implementation. Libraries
based on the MPI standard may vary considerably in their
implementations of the functions defined by the standard.
Implementations of MPI libraries are closely tied to the
underlying network architectures and characteristics of the
target HPC systems. MPI library developers and the system
administrators for the clusters on which such libraries
are installed try to provide applications with the best communication
performance on a given interconnection network,
mostly through selection of default MPI parameters. Given
the diversity of application communication patterns and the
complexity of modern HPC system architectures, it is impossible
for default parameters to be optimum for all circumstances.
And, many users lack the knowledge to choose
the best parameters for their applications.
To optimize the MPI performance of an application, MPI
libraries provide different ways to profile its execution, the
most common being the PMPI interface. This interface encapsulates
each MPI routine and provides hooks for tools to
execute any task before and after the execution of the routine.
For example, it enables tools to identify the arguments
passed by the application to any MPI routine. In addition,
the MPI_T interface provides query functions to detect variables
and their values inside the MPI library. These variables
are split into two classes: control variables and performance
variables. MPI_T control variables are used to report
the current settings of the employed MPI library. Similar to
hardware performance counters in modern processors, MPI_T
performance variables are incremented each time an event
occurs during the execution of an MPI program. For example,
they count the number of times buffer memory allocation,
message sent, and message received occur. The MPI_T
variables are not defined by the MPI standard; each library
provides its own set of variables. Tables 1 and 2 present
examples of the variables available in MVAPICH2.
To facilitate the understanding of complex HPC system
Name Value
MPIR_CVAR_MEMDUMP 1
MPIR_CVAR_ASYNC_PROGRESS 0
MPIR_CVAR_DEFAULT_THREAD_LEVEL “z”
MPIR_CVAR_DEBUG_HOLD 0
MPIR_CVAR_SUPPRESS_ABORT_MESSAGE 0
MPIR_CVAR_PROCTABLE_SIZE 64
MPIR_CVAR_SCATTER_INTER_SHORT_MSG_SIZE 2048
Table 1: Example of MVAPICH2 control variables.
2. BACKGROUNDMPI is one of the most popular programming models forwriting parallel applications for HPC clusters. The MPIstandard defines a large set of primitives that programmerscan employ to implement communication and coordinationamong processes. This set of primitives includes point-topoint,collective, and one-sided communication, which employstandard and user-defined data types; logical managementof communication peers using task groupings, communicators,and topology; and dynamic process creationand management. MPI also provides interfaces for insertingtools for profiling the execution behavior of programs thatuse MPI. The standard defines only the functionality and behaviorof communication, not the implementation. Librariesbased on the MPI standard may vary considerably in theirimplementations of the functions defined by the standard.Implementations of MPI libraries are closely tied to theunderlying network architectures and characteristics of thetarget HPC systems. MPI library developers and the systemadministrators for the clusters on which such librariesare installed try to provide applications with the best communicationperformance on a given interconnection network,mostly through selection of default MPI parameters. Giventhe diversity of application communication patterns and thecomplexity of modern HPC system architectures, it is impossiblefor default parameters to be optimum for all circumstances.And, many users lack the knowledge to choosethe best parameters for their applications.To optimize the MPI performance of an application, MPIlibraries provide different ways to profile its execution, themost common being the PMPI interface. This interface encapsulateseach MPI routine and provides hooks for tools toexecute any task before and after the execution of the routine.For example, it enables tools to identify the argumentspassed by the application to any MPI routine. In addition,the MPI_T interface provides query functions to detect variablesand their values inside the MPI library. These variablesare split into two classes: control variables and performancevariables. MPI_T control variables are used to reportthe current settings of the employed MPI library. Similar tohardware performance counters in modern processors, MPI_Tperformance variables are incremented each time an eventoccurs during the execution of an MPI program. For example,they count the number of times buffer memory allocation,message sent, and message received occur. The MPI_Tvariables are not defined by the MPI standard; each libraryprovides its own set of variables. Tables 1 and 2 presentexamples of the variables available in MVAPICH2.To facilitate the understanding of complex HPC systemName ValueMPIR_CVAR_MEMDUMP 1MPIR_CVAR_ASYNC_PROGRESS 0MPIR_CVAR_DEFAULT_THREAD_LEVEL “z”MPIR_CVAR_DEBUG_HOLD 0MPIR_CVAR_SUPPRESS_ABORT_MESSAGE 0MPIR_CVAR_PROCTABLE_SIZE 64MPIR_CVAR_SCATTER_INTER_SHORT_MSG_SIZE 2048ตารางที่ 1: ตัวอย่างตัวแปรควบคุม MVAPICH2
การแปล กรุณารอสักครู่..
