Using Simulation to Evaluate and Tune the Performance of Dynamic Load Balancing of an Over-decomposed Geophysics Application
Abstract
Finite difference methods are, in general, well suited to execution on parallel machines and are thus commonplace in High Performance Computing. Yet, despite their apparent regularity, they often exhibit load imbalance that damages their efficiency. In this article, we first characterize the spatial and temporal load imbalance of Ondes3D, a seismic wave propagation simulator used to conduct regional scale risk assessment. Our analysis reveals that this imbalance originates from the structure of the input data and from low-level CPU optimizations. Such dynamic imbalance should, therefore, be quite common and can not be solved by any static approach or classical code reorganization. An effective solution for such scenarios, incurring minimal code modification, is to use AMPI/CHARM++. By over-decomposing the application, the CHARM++ runtime can dynamically rebalance the load by migrating data and computation at the granularity of an MPI rank. We show that this approach is effective to balance the spatial/temporal dynamic load of the application, thus drastically reducing its execution time. However, this approach requires a careful selection of the load balancing algorithm, its activation frequency, and of the over-decomposition level. These choices are, unfortunately, quite dependent on application structure and platform characteristics. Therefore, we propose a methodology that leverages the capabilities of the SimGrid simulation framework and allows to conduct such study at low experimental cost. Our approach relies on a combination of emulation, simulation, and application modeling that requires minimal code modification and yet manages to capture both spatial and temporal load imbalance and to faithfully predict the performance of dynamic load balancing. We evaluate the quality of our simulation by systematically comparing simulation results with the outcome of real executions and demonstrate how this approach can be used to quickly find the optimal load balancing configuration for a given application/hardware configuration.
Les méthodes aux différences finies sont en général bien
adaptées au machines parallèles et donc assez courantes dans le
domaine du calcul à haute performance. Pourtant, en dépit de leurs
apparentes régularités, il n'est pas rare qu'elles souffrent d'un
déséquilibre de charge dommageable. Dans cet article, nous
commençons par caractériser le déséquilibre de charge spatial et
temporel d'Ondes3D, une application de simulation de propagation
d'ondes sismiques utilisée pour faire de l'évaluation de risque
sismique à l'échelle régionale. Notre analyse révèle que ce
déséquilibre provient de la nature même des données d'entrées et
d'optimisations bas niveau du CPU. Ce type de déséquilibre dynamique
est donc a priori relativement courant et ne peut être résolu par
des approches statiques ou par des réorganisations de code
classiques. Une approche pragmatique et ne nécessitant que des
modifications mineures du code consiste à utiliser AMPI/CHARM++. En
sur-décomposant l'application, le runtime CHARM++ peut rééquilibrer
dynamiquement la charge en migrant les données et les calculs à la
granularité du processus MPI. Nous montrons que cette approche
permet effectivement de résoudre le problème de déséquilibre spatial
et temporel de charge et ainsi de réduire drastiquement le temps
d'exécution total. Cependant, cette approche nécessite a priori une
sélection minutieuse de l'algorithme d'équilibrage de charge, de la
fréquence d'activation ou du niveau de sur-décomposition. Ces choix
sont hélas en général assez dépendants de la structure de
l'application et des caractéristiques de la plate-forme (\ie le
nombre de processeurs et leur vitesse, la topologie et la vitesse du
réseau). Nous proposons donc une méthodologie se basant sur
l'environnement de simulation SimGrid et permettant de réaliser ce
type d'étude à faible coût. Notre approche repose sur une
combinaison d'émulation, de simulation et de modélisation
d'application qui ne nécessite que des modifications minimes du code
d'origine et permet à la fois de capturer le déséquilibre spatial et
temporel et de prédire de façon fiable les performances de
l'équilibrage de charge. Nous évaluons la qualité de notre
proposition en comparant de façon systématique les résultats de
notre simulation avec ceux d'expériences réelles. Nous montrons
ensuite comment cette approche peut être utilisée pour déterminer
rapidement les paramètres optimaux d'équilibrage de charge pour une
configuration applicative/matérielle donnée.
Origin | Files produced by the author(s) |
---|
Loading...