The complexity and resource requirements of computer software appear to increase every day, and much of this software performs many high-precision calculations. In order to save computational resources and power, it is possible to reduce the precision of these calculations, but special care must be taken in order to ensure the results are sufficiently correct for each given use-case. Reducing precision in computer software is a task mostly performed manually, but being a hard and tedious task for the programmer, often this is not done. However, by performing this transformation in an automatic way through a specifically-designed compiler, it is possible to reduce programmer effort and therefore increase the adoption of this kind of technique. While this is a promising approach, current precision tuning solutions are not ready for widespread adoption in the industry, due to several limitations that only make them effective in a narrow range of situations. In this work we attempt to improve the current state-of-the-art in precision tuning by introducing novel approaches to tackle several of the problems that are the most impactful with respect to the adoption of this technique at large. We describe an improved data type allocation algorithm that allows for faster compilation times with respect to other state-of-the-art approaches, while properly taking into account user requirements with respect to the speedup and output precision. Then, we propose a methodology to handle low-precision mathematical routines while avoiding combinatorial explosion in library code size. We also discuss how to extend precision tuning tools to support multiprocessor architectures and GPGPU-type accelerators. Finally, we show the potential impact of precision tuning on real-world applications such as fall detection devices and motor controllers. One more application where precision tuning is of surprising interest is the world of real-time computing. We show that by applying precision tuning one can automatically optimize software in order to ensure an execution time constraint is satisfied. All of these contributions are implemented within the TAFFO precision tuning framework, and are validated through an extensive set of experiments performed on embedded systems and HPC-like systems alike.
La complessità del software per calcolatori e i suoi requisiti in risorse aumentano costantemente, e inoltre una grande quantità di questo software effettua calcoli di elevata precisione. Un modo per risparmiare risorse di calcolo e potenza elettrica è ridurre la precisione di questi calcoli, ma è anche necessario assicurarsi che la qualità dei risultati finali sia sufficiente per il loro utilizzo. Di conseguenza, ridurre la precisione di un software è un compito che viene effettuato per lo più manualmente, ma spesso viene trascurato per via della sua estrema difficoltà per il programmatore. Se questa trasformazione venisse fatta in modo completamente automatico, utilizzando un compilatore specificatamente progettato, sarebbe possibile ridurre gli sforzi del programmatore e quindi rendere più utilizzata questo tipo di tecnica. Nonostante la ricerca su questo approccio automatico sia promettente, al momento le soluzioni adottate per il cosiddetto precision tuning non sono pronte per l'adozione in larga scala da parte dell'industria, per via di varie limitazioni che le rendono efficaci solo in un ristretto campo di applicabilità. In questa tesi tentiamo di migliorare lo stato dell'arte nel precision tuning introducendo nuovi approcci per risolvere i problemi che secondo il nostro giudizio sono i più impattanti riguardo l'adozione di questa tecnica. In particolare, descriviamo un algoritmo migliorato di allocazione dei tipi di dato che permette di ottenere tempi di compilazione più rapidi rispetto allo stato dell'arte, tenendo in conto appropriatamente i requisiti dell'utente. Poi, proponiamo una metodologia per generare sottoprogrammi che calcolano importanti funzioni matematiche esattamente nella precisione richiesta, evitando l'esplosione combinatoria che deriverebbe dal considerarle funzioni di libreria. Discutiamo anche di come estendere gli strumenti per effettuare precision tuning in modo da supportare architetture multiprocessore e acceleratori GPGPU. Infine, dimostriamo l'impatto potenziale del precision tuning su delle applicazioni reali, come dei rilevatori di cadute e controllori per motori elettrici. Un'ultima applicazione dove c'è un sorprendente interesse nel precision tuning è l'ambito del calcolo in tempo reale. Tramite il precision tuning è possibile ottimizzare automaticamente un software in modo da garantire un certo vincolo sul tempo di esecuzione. Tutti questi contributi sono implementati nell'ambito di TAFFO, un framework per il precision tuning, e sono stati verificati tramite un set di esperimenti effettuati sia su sistemi embedded, sia su piattaforme simili a quelle usate per il calcolo ad alte prestazioni.
Technology and applications of compiler-based precision tuning
CATTANEO, DANIELE
2023/2024
Abstract
The complexity and resource requirements of computer software appear to increase every day, and much of this software performs many high-precision calculations. In order to save computational resources and power, it is possible to reduce the precision of these calculations, but special care must be taken in order to ensure the results are sufficiently correct for each given use-case. Reducing precision in computer software is a task mostly performed manually, but being a hard and tedious task for the programmer, often this is not done. However, by performing this transformation in an automatic way through a specifically-designed compiler, it is possible to reduce programmer effort and therefore increase the adoption of this kind of technique. While this is a promising approach, current precision tuning solutions are not ready for widespread adoption in the industry, due to several limitations that only make them effective in a narrow range of situations. In this work we attempt to improve the current state-of-the-art in precision tuning by introducing novel approaches to tackle several of the problems that are the most impactful with respect to the adoption of this technique at large. We describe an improved data type allocation algorithm that allows for faster compilation times with respect to other state-of-the-art approaches, while properly taking into account user requirements with respect to the speedup and output precision. Then, we propose a methodology to handle low-precision mathematical routines while avoiding combinatorial explosion in library code size. We also discuss how to extend precision tuning tools to support multiprocessor architectures and GPGPU-type accelerators. Finally, we show the potential impact of precision tuning on real-world applications such as fall detection devices and motor controllers. One more application where precision tuning is of surprising interest is the world of real-time computing. We show that by applying precision tuning one can automatically optimize software in order to ensure an execution time constraint is satisfied. All of these contributions are implemented within the TAFFO precision tuning framework, and are validated through an extensive set of experiments performed on embedded systems and HPC-like systems alike.File | Dimensione | Formato | |
---|---|---|---|
2024_05_Cattaneo.pdf
accessibile in internet per tutti
Descrizione: Thesis
Dimensione
6.02 MB
Formato
Adobe PDF
|
6.02 MB | 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/220832