ETD

Archivio digitale delle tesi discusse presso l'Università di Pisa

Tesi etd-04152008-170820


Tipo di tesi
Tesi di laurea specialistica
Autore
MACCHI, DAMIANO
Indirizzo email
damiano.macchi@gmail.com
URN
etd-04152008-170820
Titolo
Ottimizzazione delle performance di un'applicazione per calcoli elettromagnetici
Dipartimento
INGEGNERIA
Corso di studi
INGEGNERIA INFORMATICA
Relatori
Relatore Prof. Foglia, Pierfrancesco
Relatore Ing. Bardine, Alessandro
Relatore Prof. Prete, Cosimo Antonio
Parole chiave
  • Compaq Visual Fortran
  • Intel Visual Fortran
  • Fortran
  • Ottimizzazione delle performance
  • tuning
Data inizio appello
07/05/2008
Consultabilità
Non consultabile
Data di rilascio
07/05/2048
Riassunto
Il problema generale da risolvere è stato quello di effettuare il "tuning" di un'applicazione.
Poichè il procedimento di ottimizzazione si articola su più livelli, l'approccio utilizzato
è stato quello "top-down", individuando vari livelli di ottimizzazione: ottimizzazione algoritmica, ottimizzazioni del codice di alto livello, ottimizzazioni del codice di basso livello e ottimizzazioni interprocedurali avanzate.
Per prima cosa è stato affrontato il tema dell'ottimizzazione algoritmica, analizzando l'algoritmo, le strutture dati coinvolte e quelle prodotte. Questo perchè ottimizzazioni dell'algoritmo possono avere notevoli ripercussioni sulle performance dell'applicazione, indipendentemente dall'architettura di riferimento. Inoltre molto spesso i vantaggi che si possono trarre dal tuning a livello algoritmico, in termini di riduzione dei tempi d'esecuzione, sono più elevati rispetto a ottimizzazioni che vanno ad agire a più basso livello.
Secondariamente sono state esamenate in modo più dettagliato le routine che assorbivano gran parte del tempo d'esecuzione totale dell'applicazione, evidenziando i punti di criticità presenti e cercando di eliminare, dove possibile, alcuni colli di bottiglia. In particolare questo
livello di analisi può portare ad evidenziare alcune considerazioni generali che possono
essere prese come linee guida da tener presente durante la programmazione di una nuova
applicazione o nell'effettuare il tuning di un'applicazione differente da quella in esame.
Il successivo step di ottimizzazione ha riguardato ottimizzazioni di livello più basso. Si è cercato di individuare eventuali problemi a livello microarchitetturale, strettamente legati alle caratteristiche specifiche delle due architetture analizzate.
L'analisi è stata volta a evidenziare il comportamento delle memorie Cache di primo e
secondo livello e di come veniva gestita l'attività floating point che caratterizza l'applicazione esaminata. L'obiettivo finale era quello di cercare di garantire che le caratteristiche avanzate delle architetture prese in esame venissero sfruttate a fondo: questo lavoro ha comportato un'analisi profonda di alcune routine appartenenti all'applicazione e anche un'analisi del codice Assembly generato dal compilatore, al fine di capire in modo più
preciso dove poter intervenire.
Infine sono stati individuati possibili step futuri riguardanti l'uso di ottimizzazioni
interprocedurali messe a disposizione dalle nuove generazioni di compilatori e che ottimizzano il
flusso d'esecuzione del programma osservandone il codice in maniera statica e il
comportamento dinamico durante l'esecuzione.
In particolare è stata ottimizzata un'applicazione Fortran sviluppata in ambito in-
dustriale per il calcolo delle riflessioni elettromagnetiche, prendendo come architetture di
riferimento Intel Pentium 4 e Intel Core 2 Duo.
File