Compiler Autotuning using Machine Learning Techniques
Amir Hossein Ashouri · 2016
I recenti sviluppi nella produzione di silicio e la fabbricazione hanno portato alla creazione di unita molto piu veloce di calcolo, come CPU, GPU, FPGA, e chip simili con diversi set di istruzioni architetture (ISA). Software (SW) programmazione paradigmi tra cui OpenMP, MPI, OpenCL, e OpenACC consentono agli sviluppatori di software di sfruttare hardware (HW) parallelismo codici seriali porta legacy su queste piattaforme emergenti per ottenere incrementi nella velocita di applicazione. I compilatori lottano per tenere il passo con il ritmo crescente sviluppo di continua espansione hardware e software paradigmi di programmazione. Inoltre, crescente complessita dei compilatori moderni e la preoccupazione per la sicurezza sono tra i problemi piu gravi che i compilatori dovrebbero rispondere. La legge di Moore afferma che la densita transistor dovrebbe raddoppiare ogni due anni; tuttavia, il tasso di compilatori, che si trovano ad affrontare molti problemi aperti di ricerca, non sono stati in grado di migliorare piu di un paio di punti percentuali ogni anno. La diversita delle architetture di oggi hanno costretto i programmatori a spendere ulteriore ef- forte alla porta e ottimizzare il loro codice di applicazione su diverse piattaforme. I compilatori all'interno di questo processo hanno bisogno di ulteriori operazioni di ottimizzazione, che e un compito difficile in se. compilatori recenti di- fer un vasto numero di ottimizzazioni multistrato, capaci di colpire diversi segmenti di codice di un'applicazione. Scegliendo tra queste ottimizzazioni puo significativamente impatto le prestazioni del codice essere ottimizzato. La scelta del giusto set di ottimizzazioni del compilatore per un particolare segmento di codice e un problema molto difficile, ma trovare, ing il migliore ordinamento di queste ottimizzazioni aggiunge ulteriore complessita. In effetti, trovare il miglior ordinamento e un annoso problema nella ricerca di compilazione chiamato il problema ordine di fase. L'approccio tradizionale di costruire euristiche compilatore per risolvere questo problema semplicemente non possono far fronte con l'enorme complessita di scegliere il giusto ordine delle ottimizzazioni per ogni segmento di codice in un'applicazione. In questa tesi di dottorato, forniamo approcci break-through per affrontare e mitigare i ben noti problemi di ottimizzazione del compilatore utilizzando l'esplorazione dello spazio di progettazione e tecniche di apprendimento macchina. Abbiamo dimostrato che non tutti i passi di ottimizzazione sono utili per essere utilizzato all'interno di una sequenza di ottimizzazione e di fatto molti dei passaggi disponibili sono cancellando l'effetto di uno con l'altro in fase d'ordine delle fasi sono presi in considerazione. I risultati sperimentali mostrano notevole miglioramento metriche di performance in cui i nostri modelli di previsione personalizzati sono in atto contro ottimizzazione fissa standard di pass predefiniti all'interno dello Stato-of-the-art quadri compilatore per esempio GCC, LLVM, ecc perfetta- ottimizzazione specifica applicazione modulo in base alle caratteristiche delle applicazioni oggetto di analisi e si dimostra che questa metodologia e utile per mitigare il problema difficile di selezionare i migliori ottimizzazioni del compilatore e il problema della fase-ordinazione. In ritardo ma non meno importante, ci auguriamo che gli approcci proposti in questa tesi di dottorato saranno utili per una vasta gamma di lettori, tra cui gli architetti informatici, sviluppatori del compilatore, ricercatori e professionisti tecnici.