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

Nuovo Corso in arrivo !

30/1/2015

0 Comments

 

Il Nuovo corso di HPC sta per iniziare.
Tanti nuovi argomenti e soprattutto tanta pratica !
Inizieremo con approfondendo il moderno C++ (11/14) e continueremo con  OpenMP(4.0) MPI ed altro.

0 Comments

Lezioni di Aprile Maggio 2012

15/5/2012

0 Comments

 
Abbiamo trattato la comunicazione fra molto processi in MPI e abbiamo esaminato il caso di studio del TSP affrontato con un algoritmo genetico sia con comunicazione sincrona che asincrona. Da notare la differenza di prestazioni che risultano essere migliori nel caso asincrono.
L'immagine si riferisce a due bravi run sui 30 nodi del cluster delle due istanze del programma quello con comunicazione asincrona (a sinistra) e quello con comunicazione sincrona(a destra). Notate come la CPU sia meglio utilizzata nel primo caso. Il processo era diviso in più thread su ciascun nodo tramite OpenMP.
Immagine
0 Comments

Lezioni fine marzo-Inizio Aprile 2012

17/4/2012

0 Comments

 
Sono stati trattate le chiamate MPI_Test eMPI_Probe ( vedi lezioni dello scorso anno )
Sono state presentate le librerie BOOST_MPI
Sono state trattate le operazioni RMA con le chiamate:
MPI_Comm_split(MPI_COMM_WORLD,my_id<=1,my_id,&com);
MPI_Win_create(&receiveb,sizeof(int),sizeof(int),MPI_INFO_NULL,com,&pwin);
MPI_Put(&sendb,1,MPI_INT,dest,0,1,MPI_INT,pwin);
MPI_Get(&getb,1,MPI_INT,dest,0,1,MPI_INT,pwin);
MPI_Win_fence(0,pwin);
MPI_Win_free(&pwin);

0 Comments

Lezioni fine marzo-Inizio Aprile 2012

17/4/2012

0 Comments

 
0 Comments

Lezioni fine marzo-Inizio Aprile 2012

17/4/2012

0 Comments

 
Sono stati trattati gli argomenti:
BOOST_MPI, Mpi_probe e Mpi_test ( vedi lezioni dello scorso anno ).
E le operazioni RMA (Il codice completo lo trovate in fondo al post )

MPI_Win_create(&receiveb,sizeof(int),sizeof(int),MPI_INFO_NULL,com,&pwin);
MPI_Get(&getb,1,MPI_INT,dest,0,1,MPI_INT,pwin);
MPI_Put(&sendb,1,MPI_INT,dest,0,1,MPI_INT,pwin);
MPI_Win_fence(0,pwin);
MPI_Win_free(&pwin);




0 Comments

Lezioni del 12 e 13 Marzo 2012

13/3/2012

0 Comments

 
In queste lezioni abbiamo visto come usare bene la cache sia importante anche in ambito parallelo e abbiamo introdotto lo standard OpenMP.  Nella immagine che segue vedete il flag di compilazione da impostare in Visual Studio per permettere l'uso di OpenMP.
Picture
Il programma mostrato durante Martedì 13 mostrava un pessimo load balancing. Il grafico che segue mostra l'occupazione del processore durante l'esecuzione.
Picture
Aggiungendo uno uno schedule dynamic al ciclo for del programma di esempio si ottiene un grafico di carico molto più equilibrato. Da notare anche la minor durata del processo. 18.8sec contro 24.8 nelle prove fatte in aula.
Picture
Il file con il programma dimostrativo si trova qui:
omp_intro.cpp
File Size: 1 kb
File Type: cpp
Download File

0 Comments

Prima Lezione pratica con esempio

6/3/2012

0 Comments

 
Abbiamo illustrato l'uso delle BOOST THREAD e delle Espressioni Lambda . 
Il codice illustra anche il problema del FALSE SHARING.
Si veda ( tra i molti ) per esempio questo articolo:http://www.codeproject.com/Articles/51553/Concurrency-Hazards-False-Sharing 
boost_thread.cpp
File Size: 3 kb
File Type: cpp
Download File

0 Comments

Inizio Nuovo Corso.

5/3/2012

0 Comments

 
E' iniziato il nuovo corso e alcuni argomenti sono stati introdotti.
Da guardare subito .... le librerie BOOST THREAD .
0 Comments

Draft sulle lezioni tenute ad aprile....

5/5/2011

0 Comments

 
Attendendo una sistemazione migliore abbiamo parlato di comunicazioni collettive in MPI.
Inoltre è stato presentato ai primi di maggio un piccolo programma che implementa un algoritmo genetico. 
Ve lo lascio come esercizio da parallelizzare . Chiaramente è solo un piccolo esempio diadttico.
E inoltre..... cominciate a pensare su come potrebbe essere possibile parallelizzare il
Crivello di Eratostene per trovare i numeri primi:
#define MAX_PRIME 100
int main(int argc, char* argv[])
{
 int prime[MAX_PRIME];
for(int i=0; i<MAX_PRIME; i++) prime[i]=0; // inizializzazione
for (int i=2; i<MAX_PRIME; i++)
for (int j=i*i; j<MAX_PRIME; j+=i) prime[j]=1;  
for(int i=1; i<MAX_PRIME; i++) if (prime[i]==0) cout << i << endl;  // STAMPA
}

0 Comments

Lezioni del 4 e 5 Aprile 2011 [DRAFT]

5/4/2011

0 Comments

 
Presentazione  di alcuni concetti di I/O parallelo. In particolare abbiamo scritto e letto un file in modo non contiguo usando un datatype appositamente creato.
#define BUFSIZ 12
#define INTS_PER_BLK 3 
int main(int argc, char* argv[])
{
int my_id, numprocs,length;
int sendb[BUFSIZ],receiveb[BUFSIZ];
MPI_Status status;
MPI_File ilfile;
MPI_Datatype filetype;
[...];
MPI_File_open(com,"Test",MPI_MODE_CREATE|MPI_MODE_RDWR,MPI_INFO_NULL, &ilfile);
// Quante righe 4, di quanti interi 3 , di quanto spaziate 3*numprocs
MPI_Type_vector(BUFSIZ/INTS_PER_BLK,INTS_PER_BLK,INTS_PER_BLK*numprocs,MPI_INT,&filetype);

for (int i=0;i<BUFSIZ;i++) sendb[i]=i+1000*my_id;
MPI_File_set_view(ilfile,INTS_PER_BLK*my_id*sizeof(int),MPI_INT,filetype,"native",MPI_INFO_NULL);
MPI_File_write_all(ilfile,sendb,BUFSIZ,MPI_INT,&status);
MPI_Barrier(com);
Notare come settando una view diversa il file venga letto in modo sequenziale.

MPI_File_set_view(ilfile,BUFSIZ*my_id*sizeof(int),MPI_INT,MPI_INT,"native",MPI_INFO_NULL);
MPI_File_read_all(ilfile,receiveb,BUFSIZ,MPI_INT,&status);I file con i programmi presentati sono scaricabili:Programma 1.
Programma 2.
0 Comments
<<Previous

    Author

    Giuseppe Levi
    Blog delle lezioni del corso di PPSD 2012.

    Archives

    January 2015
    May 2012
    April 2012
    March 2012
    May 2011
    April 2011
    March 2011

    Categories

    All
    Cluster
    Mpi
    Openmp

    RSS Feed

Powered by Create your own unique website with customizable templates.