Corsi tenuti da Giuseppe Levi
  • Home
  • Informatica per Fisici
    • Lezioni Video
    • Riferimenti Utili
    • Esempi discussi nel corso
    • Blog Lezioni
    • Trasparenze
    • Esami
  • Linguaggi Visuali
    • Blog Lezioni Fisica e LabView
  • CORSO HPC
    • Risorse utili
    • Blog Lezioni
    • Game of Life
    • Insieme Mandelbrot
    • Come lanciare un job sul cluster
  • Servizi Web Utili
  • Contatti
  • Appunti di Matematica Vedica Elementare
C++code

Esempi di codice discussi a lezione.

Per usare le librerie OpenMP coi complilatori GNU compilare con:
g++ -fopenmp
functor.cpp
File Size: 3 kb
File Type: cpp
Download File

lista_sort.cpp
File Size: 1 kb
File Type: cpp
Download File

parallel_sort.cpp
File Size: 3 kb
File Type: cpp
Download File

didattica.cpp
File Size: 1 kb
File Type: cpp
Download File

esercizio.c
File Size: 0 kb
File Type: c
Download File

latency.cpp
File Size: 4 kb
File Type: cpp
Download File

matmul_ok.c
File Size: 2 kb
File Type: c
Download File

omp_parallel.c
File Size: 1 kb
File Type: c
Download File

matmul_omp.c
File Size: 1 kb
File Type: c
Download File

producer_consumer.cpp
File Size: 1 kb
File Type: cpp
Download File

template.cpp
File Size: 0 kb
File Type: cpp
Download File

lab.cpp
File Size: 5 kb
File Type: cpp
Download File

valarray.cpp
File Size: 1 kb
File Type: cpp
Download File

transform.cpp
File Size: 2 kb
File Type: cpp
Download File

matrix_mul_boost_thread.cpp
File Size: 4 kb
File Type: cpp
Download File

matrix_mul_boost_l_thread.cpp
File Size: 5 kb
File Type: cpp
Download File

polinomio.cpp
File Size: 1 kb
File Type: cpp
Download File

2body.zip
File Size: 11 kb
File Type: zip
Download File

paralelllabview.zip
File Size: 323 kb
File Type: zip
Download File

latency.cpp

Dimostrazione 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.c

Semplice 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.

Polinomio

Uno scheletro ( miglioratela voi ) di classe polinomio per creare come functor qualunque funzione polinomiale.

2body.zip

Il 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.zip

Esempio 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 ;-) ).

Powered by Create your own unique website with customizable templates.