== Temi di tesi e stage - Donato D'Ambrosio == === OpenCAL === OpenCAL è una libreria per il calcolo numerico basata sul paradigma computazionale degli Automi Cellulari. OpenCAL è, infatti, l'acronimo di Open Cellular Automata Library ed è un progetto nato e sviluppato presso il Dipartimento di Matematica e Informatica dell'Università della Calabria dal sottoscritto, in collaborazione col Prof. William Spataro e alcuni giovani talenti del Dipartimento stesso. La libreria è scritta in linguaggio C per garantire la massima efficienza e portabilità. Allo stadio di sviluppo attuale, la versione sequenziale della libreria è quasi completa e consente l'implementazione di automi cellulari 2D e 3D. Sono, in fase di sviluppo avanzata anche due versioni parallele per l'esecuzione su CPU, sviluppata in OpenMP, e su GPU, sviluppata in OpenCL. La prima è nota come '''OpenCAL-OMP''', mentre la seconda come '''OpenCAL-CL'''. E' in fase di sviluppo anche un sistema visualizzazione 2D e 3D in OpenGL Legacy e di un'interfaccia grafica minimale in GLUT (freeglut). Con '''OpenCAL-GL''' si identifica la parte visuale della libreria. Possibili temi legati a OpenCAL sono elencati di seguito. Altri temi possono comunque essere definiti in accordo col tesista per soddisfare eventuali propensioni e/o preferenze del tesista stesso. ==== Riduzione delle ridondanze nel codice sorgente di OpenCAL ==== La scelta del linguaggio C per lo sviluppo di OpenCAL ha garantito una considerevole efficienza computazionale ma è anche stata causa di un consistente livello di ridondanza del codice sorgente. Diversi approcci, basati ad esempio sull'uso delle macro del linguaggio C, possono essere analizzati e utilizzati per la riduzione di tale ridondanza. E' inoltre possibile ricondurre l'implementazione della parte 2D della libreria a un caso particolare della versione 3D, dove la terza dimensione è preimpostata a uno. In quest'ultimo caso, è richiesta un'analisi delle prestazioni per valutare un eventuale degrado delle performance computazionali. ==== Miglioramento delle performance computazionali della versione OpenMP di OpenCAL ==== La tesi consiste nella revisione dell'attuale implementazione della versione OpenMP di OpenCAL al fine di migliorare lo speed-up su sistemi di calcolo a memoria condivisa basati su CPU. ==== Miglioramento delle performance computazionali della versione OpenCL di OpenCAL ==== La tesi consiste nella revisione dell'attuale implementazione della versione OpenCL di OpenCAL al fine di migliorare lo speed-up su sistemi di calcolo a memoria condivisa basati su GPU. ==== Porting di OpenCAL-GL in OpenGL 3.0 (o versione successiva) ==== Nel 2008 è stata rilasciata la version 3.0 di OpenGL. A partire da questa versione, molte delle funzioni e delle costanti OpenGL delle versioni precedenti sono state dichiarate deprecate. Le versioni precedenti alla 3.0 sono pertanto dette legacy. La tesi consiste nel porting di OpenCAL-GL da OpenGL legacy a OpenGL versione 3.0 (o successiva). ==== Sviluppo di una versione parallela per cluster di computer in MPI di OpenCAL ==== La tesi consiste nell'implementazione di OpenCAL in MPI (Message Passing Interface), al fine di poter distribuire il carico computazionale su calcolatori interconessi su rete. ==== Binding di OpenCAL per altri linguaggi di programmazione (ad esempio C++, Pyton, Fortran, Java) ==== La tesi consiste nello sviluppo di uno o più binding di OpenCAL per altri linguaggi di programmazione, quali il C++, Pyton, Fortran e Java. ==== Applicazione della libreria OpenCAL per l'implementazione di modelli numerici complessi ==== La tesi consiste nell'implementazione di un modello numerico complesso con OpenCAL. Possibili ambiti applicativi possono riguardare la biomedicina, la geofisica e l'ingegneria ambientale. Questa tesi si svolgerà in collaborazione con esperti dell'ambito applicativo. ==== Compilazione dei sorgenti di OpenCAL con Autotools e pacchettizazione per le maggiori distribuzioni Linux/Unix ==== La tesi consiste nell'applicazione degli strumenti Autotools per la compilazione dei sorgenti di OpenCAL col metoto configure-make-make install e nella pacchettizazione della libreria stessa per le maggiori distribuzioni Linux/Unix, per esempio Debian. === Stage aziendali === In ambito aziendale, possibili stage possono essere volte presso le seguenti società: * [[http://www.omniaenergia.it/|OmniaEnergia]]: Moduli per sistemi di monitoraggio, embedded firmware * [[http://www.tiesi.it/|TI&SI]]: Applicazioni Web-GIS, Moduli per il Sistema CATI * [[http://www.novilink.it/|Novilink]]: Data Mining, Applicazioni JAVA, Applicazioni mobile Android, iOS, etc