Given the current technology, approximating real numbers with finite-precision is unavoidable. Determining which finite-precision representation to exploit for each variable in the program is a difficult task. To face this problem, several precision mix solutions have been proposed so far in the state-of-the-art. However, the best precision mix configuration may vary at runtime along with input data. In this thesis we aim at suggesting two effective approaches to solve the precision tuning problem. The first approach follows the static precision tuning paradigm, i.e. it generates a single mixed precision version from the original code, which is designed to be used in place of the original version. Given the current technology, approximating real numbers with finite-precision is unavoidable. Determining which finite-precision representation to exploit for each variable in the program is a difficult task. To face this problem, several precision mix solutions have been proposed so far in the state-of-the-art. However, the best precision mix configuration may vary at runtime along with input data. In this thesis we aim at suggesting two effective approaches to solve the precision tuning problem. The first approach follows the static precision tuning paradigm, i.e. it generates a single mixed precision version from the original code, which is designed to be used in place of the original version. We later allow the possibility of changing the input conditions that may affect the best precision mix configuration. To solve this problem we propose a novel approach and a new toolchain that automitizes a large portion of this process. We present each component of the toolchain, and we provide guidelines to use them properly. We refer to this second approach as \emph{dynamic precision tuning}. We evaluate the static and the dynamic precision tuning solutions on a set of high performance computing and approximate computing benchmarks. We show how the dynamic precision tuning toolchain can be used -- under certain conditions -- also for static precision tuning. Our second toolchain is capable of achieving good results in terms of performance gain while maintaining acceptable precision loss threshold. In the future we aim at further improving this toolchain to extend its applicability to other use cases. Additionally, we highlight which improvements on the current toolchain may provide greater benefits on the quality of the output.%Our proposed approach to static precision tuning exploits program profiling to understand which is the best precision mix configuration for the given accuracy requirements. We later allow the possibility of changing the input conditions that may affect the best precision mix configuration. To solve this problem we propose a novel approach and a new toolchain that automitizes a large portion of this process. We present each component of the toolchain, and we provide guidelines to use them properly. We refer to this second approach as dynamic precision tuning. We evaluate the static and the dynamic precision tuning solutions on a set of high performance computing and approximate computing benchmarks. We show how the dynamic precision tuning toolchain can be used -- under certain conditions -- also for static precision tuning. Our second toolchain is capable of achieving good results in terms of performance gain while maintaining acceptable precision loss threshold. In the future we aim at further improving this toolchain to extend its applicability to other use cases. Additionally, we highlight which improvements on the current toolchain may provide greater benefits on the quality of the output.

La precisione finita è una approssimazione dei numeri reali inevitabile con la attuale tecnologia. Determinare quale rappresentazione a precisione finita sia meglio sfruttare per ciascuna variabile nel programma è un compito difficile. Per risolvere questo problema, diverse soluzioni per determinare un adeguato mix di precisione sono state proposte finora nello stato dell’arte. Tuttavia, la miglior configurazione di mix di precisione può variare durante l'esecuzione assieme ai dati in ingresso. In questa tesi proponiamo due approcci efficaci per risolvere il problema di determinare miglior il mix di precisione. Il primo approccio riflette il paradigma di determinazione statica della precisione, ossia genera dal codice originale un singolo mix di precisione, il quale dovrà poi essere usato al posto della versione originale. Successivamente ammettiamo la possibilità di avere cambiamenti delle condizioni di ingresso che possano inficiare la miglior configurazione di mix di precisione. Per risolver questo problema proponiamo un approccio innovativo e una nuova toolchain per automatizzare larga parte di questo processo. Noi introduciamo ciascun componente della toolchain, e forniamo linee guida per usarla in modo appropriato. Chiamiamo questo secondo approccio dynamic precision tuning. Valutiamo le soluzioni di static e dynamic precision tuning su un insieme di benchmark per high performance computing e calcolo approssimato. Mostriamo come la toolchain per dynamic precision tuning può essere usata, sotto certe condizioni, anche per static precision tuning. La nostra seconda toolchain è capace di raggiungere buoni risultati in termini di miglioramento delle performance alla stessa soglia di perdita accettabile di precisione. In futuro auspichiamo di migliorare ulteriormente questa toolchain per estenderne la applicabilità ad altri casi d'uso. Inoltre, evidenziamo quali miglioramenti sulla attuale toolchain possono garantire i maggiori benefici sulla qualità del risultato.

Compiler-assisted dynamic precision tuning

CHERUBIN, STEFANO

Abstract

Given the current technology, approximating real numbers with finite-precision is unavoidable. Determining which finite-precision representation to exploit for each variable in the program is a difficult task. To face this problem, several precision mix solutions have been proposed so far in the state-of-the-art. However, the best precision mix configuration may vary at runtime along with input data. In this thesis we aim at suggesting two effective approaches to solve the precision tuning problem. The first approach follows the static precision tuning paradigm, i.e. it generates a single mixed precision version from the original code, which is designed to be used in place of the original version. Given the current technology, approximating real numbers with finite-precision is unavoidable. Determining which finite-precision representation to exploit for each variable in the program is a difficult task. To face this problem, several precision mix solutions have been proposed so far in the state-of-the-art. However, the best precision mix configuration may vary at runtime along with input data. In this thesis we aim at suggesting two effective approaches to solve the precision tuning problem. The first approach follows the static precision tuning paradigm, i.e. it generates a single mixed precision version from the original code, which is designed to be used in place of the original version. We later allow the possibility of changing the input conditions that may affect the best precision mix configuration. To solve this problem we propose a novel approach and a new toolchain that automitizes a large portion of this process. We present each component of the toolchain, and we provide guidelines to use them properly. We refer to this second approach as \emph{dynamic precision tuning}. We evaluate the static and the dynamic precision tuning solutions on a set of high performance computing and approximate computing benchmarks. We show how the dynamic precision tuning toolchain can be used -- under certain conditions -- also for static precision tuning. Our second toolchain is capable of achieving good results in terms of performance gain while maintaining acceptable precision loss threshold. In the future we aim at further improving this toolchain to extend its applicability to other use cases. Additionally, we highlight which improvements on the current toolchain may provide greater benefits on the quality of the output.%Our proposed approach to static precision tuning exploits program profiling to understand which is the best precision mix configuration for the given accuracy requirements. We later allow the possibility of changing the input conditions that may affect the best precision mix configuration. To solve this problem we propose a novel approach and a new toolchain that automitizes a large portion of this process. We present each component of the toolchain, and we provide guidelines to use them properly. We refer to this second approach as dynamic precision tuning. We evaluate the static and the dynamic precision tuning solutions on a set of high performance computing and approximate computing benchmarks. We show how the dynamic precision tuning toolchain can be used -- under certain conditions -- also for static precision tuning. Our second toolchain is capable of achieving good results in terms of performance gain while maintaining acceptable precision loss threshold. In the future we aim at further improving this toolchain to extend its applicability to other use cases. Additionally, we highlight which improvements on the current toolchain may provide greater benefits on the quality of the output.
PERNICI, BARBARA
DANIEL, FLORIAN
19-lug-2019
La precisione finita è una approssimazione dei numeri reali inevitabile con la attuale tecnologia. Determinare quale rappresentazione a precisione finita sia meglio sfruttare per ciascuna variabile nel programma è un compito difficile. Per risolvere questo problema, diverse soluzioni per determinare un adeguato mix di precisione sono state proposte finora nello stato dell’arte. Tuttavia, la miglior configurazione di mix di precisione può variare durante l'esecuzione assieme ai dati in ingresso. In questa tesi proponiamo due approcci efficaci per risolvere il problema di determinare miglior il mix di precisione. Il primo approccio riflette il paradigma di determinazione statica della precisione, ossia genera dal codice originale un singolo mix di precisione, il quale dovrà poi essere usato al posto della versione originale. Successivamente ammettiamo la possibilità di avere cambiamenti delle condizioni di ingresso che possano inficiare la miglior configurazione di mix di precisione. Per risolver questo problema proponiamo un approccio innovativo e una nuova toolchain per automatizzare larga parte di questo processo. Noi introduciamo ciascun componente della toolchain, e forniamo linee guida per usarla in modo appropriato. Chiamiamo questo secondo approccio dynamic precision tuning. Valutiamo le soluzioni di static e dynamic precision tuning su un insieme di benchmark per high performance computing e calcolo approssimato. Mostriamo come la toolchain per dynamic precision tuning può essere usata, sotto certe condizioni, anche per static precision tuning. La nostra seconda toolchain è capace di raggiungere buoni risultati in termini di miglioramento delle performance alla stessa soglia di perdita accettabile di precisione. In futuro auspichiamo di migliorare ulteriormente questa toolchain per estenderne la applicabilità ad altri casi d'uso. Inoltre, evidenziamo quali miglioramenti sulla attuale toolchain possono garantire i maggiori benefici sulla qualità del risultato.
Tesi di dottorato
File allegati
File Dimensione Formato  
Cherubin_PhD_Thesis.pdf

Open Access dal 29/06/2020

Descrizione: PhD Thesis
Dimensione 33.92 MB
Formato Adobe PDF
33.92 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/148417