Esempi di codice discussi a lezione.
Per usare le librerie OpenMP coi complilatori GNU compilare con:
g++ -fopenmp
|
latency.cppDimostrazione del ritardo di latenza nella lettura/scrittura da disco.
Legge da un file e scrive su di un'altro carattere per carattere..... esattamente la cosa da NON FARE. Poi fa la stesa cosa a grandi blocchi (l'intero file) Infine usa la chiamata a mmap. NB. questa parte di codice funziona solo su macchine Linux o MacOsX Per l'ambiente Windows si faccia riferimento a http://msdn.microsoft.com/en-us/library/ms810613.aspx . Misura i tempi tramite le librerierie OpenMP matmul_ok.cSemplice programma di moltiplicazione di matrici ove si dimostra che un uso corretto della memoria cache migliora notevolmente le prestazioni. Tempi misurati tramite le librerie OpenMP
omp_parallel.c Semplice programma ove sono illustrati alcuni concetti basilari della parallelizzazione tramite OpenMP. Blocchi paralleli, cicli ordinati e no, barriere. matmul_omp.c
Semplice programma di moltiplicazione di matrici simile al precedente ove i clicli sono stati parallelizzati tramite OpenMP. In una macchina dual core i tempi sono circa dimezzati rispetto alla versione precedente. ATTENZIONE LE DIRETTIVE PER PARALLELIZZARE I CICLI VANNO CORRETTE! Controllate lo standard e vedete cosa manca e dove metterle nel programma. producer_consumer.cpp Un esempio di architettura produttore consumatore in openMP. Come esercizio prendete questo programma ed aumentate il numero dei consumatori. Per chi vuole approfondire veda anche l'esempio scritto per MPI di programma Montecarlo ove un processo genera i numeri random e gli altri li utilizzano. L'esempio e' discusso nella pagina ove si illustra il programma parallelo per ottenere l'insieme di Mandelbrot. TEMPLATE.cpp Un semplicissimo esempio dell'uso delle template in c++. LAB.cpp Un esempio leggermente più complesso dell'uso delle template in c++. Fa uso dei containers STL per creare un vettore di oggetti definito dall'utente. Si mostra come ridefinire gli operatori + = += . (Overloading) Valarray.cpp
Esempio di uso delle valarray e dei numeri complessi così come sono definiti dalle STL. trasform.cpp
Esempio Avanzato di uso delle STL. Viene mostrato l'uso dei "functor". Si mostra l'uso della funzione generate, trasform, for_each, sort, max_element, min_element e del modificatore not2. PolinomioUno scheletro ( miglioratela voi ) di classe polinomio per creare come functor qualunque funzione polinomiale.
2body.zipIl sorgente del programma presentato a lezione dal Dr.Francesco Rossi.
Se volete divertirvi giocate al gioco da lui scritto: ROXDOKU Disponibile anche su Facebook http://apps.facebook.com/roxdoku/ Paralelellabview.zipEsempio discussio a lezione di un semplice VI multithread che usa un ciclo for parallelo, semafori e randez_vous in LabVIEW per aggiornare una shared network variable.
|
Per l'esame ( ci sono anche quelli ) guardatevi e comprendete questi programmi...... poi siete liberi di copiarli, tagliarli, incollarli a vostra scelta.
NON importa che mi portiate un programma di 10K righe. Ne basta uno semplice ma che faccia vedere bene qualche meccanismo delle STL, di OpenMP o di buon uso della memoria (quella del calcolatore ;-) ).
NON importa che mi portiate un programma di 10K righe. Ne basta uno semplice ma che faccia vedere bene qualche meccanismo delle STL, di OpenMP o di buon uso della memoria (quella del calcolatore ;-) ).