Dynamic software updating (DSU) is a promising technique that allows editing running software with the lowest theoretical downtime. While DSU has been explored for different applications, its use for providing compile-time optimizations at runtime remains limited, despite its potential. Providing performance optimizations at runtime is especially relevant for High-Performance Computing (HPC) applications, where long, repetitive computations on different-sized data set increase the efficacy of dynamic compile-time optimizations. In this work, we revamped libVersioningCompiler, an easy-to-use C++ library designed for High-Performance Computing (HPC) applications that allow the optimization of code kernels by applying compile-time optimizations during execution. We demonstrate the efficacy of our approach through a scalable and distributed application that leverages libVersioningCompiler to offload code kernel optimizations on an overlay network. Our experiments show that our approach can significantly improve the performance of HPC applications, with a speedup of up to 20% on a counting sort benchmark while reducing the overhead time compared to the previous version. Overall, our work showcases the potential of DSU for providing state-of-the-art runtime performance optimizations in HPC applications while providing a useful tool for software engineers and researchers in the field.
L'aggiornamento dinamico del software (DSU) è una tecnica promettente che permette di modificare programmi durante l'esecuzione nel minor tempo teoricamente possibile. Mentre questa tecnica è stata esplorata per svariate applicazioni in diversi ambiti, il suo uso per fornire dinamicamente ottimizzazioni solo classicamente possibili a tempo di compilazione rimane limitato, nonostante le potenzialità che possiede. Fornire ottimizzazioni per le prestazioni dei software durante l'esecuzione è particolarmente rilevante per le applicazioni sviluppate per sistemi ad alta performance (HPC), dove lunghe e ripetitive computazioni su dati di dimensione variabile aumentano l'efficacia delle ottimizzazioni a tempo di compilazione. In questo lavoro di tesi, abbiamo rinnovato libVersioningCompiler, una libreria C++ facile da usare designata per applicazioni per sistemi ad alta performance, la quale permette di ottimizzare sezioni di codice con tecniche normalmente possibili solo a tempo di compilazione. Dimostriamo l'efficacia del nostro approccio tramite una applicazione scalabile e distribuita che sfrutta libVersioningCompiler per delegare le ottimizzazioni su una rete di calcolatori decentralizzata. I nostri esperimenti dimostrano che il nostro approccio migliora significativamente le prestazioni delle applicazioni HPC, con un guadagno di prestazioni fino al 20% su un benchmark di ordinamento, riducendo il tempo di compilazione rispetto alla versione precedente. Complessivamente, il nostro lavoro espone le potenzialità dell'aggiornamento dinamico di un software fornendo ottimizzazioni di qualità in applicazioni per sistemi informatici ad alte prestazioni, mediante uno strumento utile per ingegneri informatici e ricercatori.
Improving HPC applications with libVersioningCompiler
Giussani, Moreno
2021/2022
Abstract
Dynamic software updating (DSU) is a promising technique that allows editing running software with the lowest theoretical downtime. While DSU has been explored for different applications, its use for providing compile-time optimizations at runtime remains limited, despite its potential. Providing performance optimizations at runtime is especially relevant for High-Performance Computing (HPC) applications, where long, repetitive computations on different-sized data set increase the efficacy of dynamic compile-time optimizations. In this work, we revamped libVersioningCompiler, an easy-to-use C++ library designed for High-Performance Computing (HPC) applications that allow the optimization of code kernels by applying compile-time optimizations during execution. We demonstrate the efficacy of our approach through a scalable and distributed application that leverages libVersioningCompiler to offload code kernel optimizations on an overlay network. Our experiments show that our approach can significantly improve the performance of HPC applications, with a speedup of up to 20% on a counting sort benchmark while reducing the overhead time compared to the previous version. Overall, our work showcases the potential of DSU for providing state-of-the-art runtime performance optimizations in HPC applications while providing a useful tool for software engineers and researchers in the field.File | Dimensione | Formato | |
---|---|---|---|
Thesis.pdf
solo utenti autorizzati dal 20/03/2024
Descrizione: Prima revisione
Dimensione
874.54 kB
Formato
Adobe PDF
|
874.54 kB | Adobe PDF | Visualizza/Apri |
I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/10589/201974