From trace collection to the prediction of the behaviour of parallel applications
De la collecte de trace à la prédiction du comportement d'applications parallèles
Résumé
Runtime systems are commonly used by parallel applications in order to efficiently exploit the underlying hardware resources. A runtime system hides the complexity of the management of the hardware and exposes a high-level interface to application developers. To this end, it makes decisions by relying on heuristics that estimate the future behavior of the application. We propose Pythia, a library that serves as an oracle capable of predicting the future behavior of an application, so that the runtime system can make more informed decisions. Pythia builds on the deterministic nature of many HPC applications: by recording an execution trace, Pythia captures the application main behavior. The trace can be provided for future executions of the application, and a runtime system can ask for predictions of future program behavior. We evaluate Pythia on 13 MPI applications and show that Pythia can accurately predict the future of most of these applications, even when varying the problem size. We demonstrate how Pythia predictions can guide a runtime system optimization by implementing an adaptive thread parallelism strategy in GNU OpenMP runtime system. The evaluation shows that, thanks to Pythia prediction, the adaptive strategy reduces the execution time of an application by up to 38%.
Les supports d'exécution sont couramment utilisés par les applications parallèles afin d'exploiter efficacement les ressources matérielles sous-jacentes. Un support d'exécution dissimule la complexité de la gestion du matériel et expose aux développeurs d'applications une interface de haut niveau. À cette fin, il prend des décisions en s'appuyant sur des heuristiques qui estiment le comportement futur de l'application. Nous proposons Pythia, une bibliothèque utilisable comme oracle capable de prédire le comportement futur d'une application afin que les supports d'exécutions puissent prendre des décisions plus éclairées. Pythia s'appuie sur la nature déterministe de nombreuses applications HPC : en enregistrant une trace d'exécution, Pythia capture le comportement général de l'application. Cette trace est ensuite utilisée lors des exécutions suivantes de l'application et le support d'exécution peut demander des prédictions sur le comportement futur du programme. Nous évaluons Pythia sur 13 applications MPI et nous montrons que Pythia peut prédire précisément le futur de la plupart de ces applications, même en variant la taille des données. Nous montrons comment les prédictions de Pythia peuvent guider l'optimisation d'un support d'exécution en implémentant une stratégie de parallélisme adaptatif dans le support d'exécution GNU OpenMP. L'évaluation montre que, grâce aux prédictions de Pythia cette stratégie adaptative peut réduire le temps d'exécution d'une application jusqu'à 38%.
Origine | Version validée par le jury (STAR) |
---|