menu

OpenMp, Calcolo Parallelo, UNIMIB

Posted on 10/07/2021, in Italiano. Reading time: 2 mins
  • OpenMP a.a. 2020-2021. In questa versione ci sono varie nuove immagini e altre correzioni. In totale sono 114 diapositive, ho espanso le transizioni e le immagini in modo che tutta la presentazione sia piu’ leggibile. In alcuni casi anche gli elenchi appaiono come multi-diapositiva. Questo perche’ ho essenzialmente commentato i comandi “\pause” ma alcuni elenchi sono fatti tramite scritture tipo “<1,4>”, “<2,4>” ecc che non sono rimuovibili velocemente.
    Si noti che la presentazione e’ abbastanza auto-contenuta, ma a lezione aggiungevo parti, espandevo le spiegazioni e facevo domande. Chiaramente queste cose non sono incluse nelle diapositive.

  • OpenMP a.a. 2019-2020. Le differenze tra queste diapositive e quelle dell’anno precedente riguardano nuove immagini e la correzione di alcuni errori.

  • OpenMP a.a. 2018-2019, questa presentazione non contiene le soluzioni degli esercizi ed e’ in formato handout, quindi le “animazioni” non sono visibili, ma le diapositive sono piu’ leggibili in quanto non compaiono un pezzo per volta.

  • i file da usare per gli esercizi proposti non contengono le soluzioni ma velocizzano la scrittura del codice (si devono solo apportare le modifiche richieste).

I link qui sopra si riferiscono alle note che ho scritto per la parte di OpenMP del corso di “Sistemi di Calcolo Parallelo” presso il DISCo, all’Universita’ di Milano-Bicocca. Ho utilizzato varie fonti per scriverle e mi sono basato anche esperimenti numerici. Ci possono essere alcuni richiami a MPI (che viene presentato prima di OpenMP durante il corso).

OpenMP: contesto:

grossolanamente parlando, OpenMP si rivolge a chi ha delle CPU multicore. I vari core condividono la memoria (shared memory) e comunicano tramite essa.

OpenMP: perche’? Supponiamo che si abbia un ciclo for (C/C++) o un do loop (Fortran). Con una aggiunta di 3-4 righe al codice, OpenMP puo’ ridistribuire il calcolo del ciclo tra i vari core. Smplice. Pulito. L’ideale per un fisico alle prime armi che debba velocizzare un codice senza dover impazzire a leggere centinaia di pagine di spiegazioni.

OpenMP: attenzione.

Nonostante possa essere usato in modo molto semplice all’inizio, puo’ essere ingannevole. Non e’ difficile cadere in condizioni di race-condition, ovvero quando i core accedono, leggono e (sovra) scrivono lo stesso oggetto. A causa di una race-condition il risultato del calcolo non e’ deterministico: dipende dall’ordine di accesso dei core alla risorsa!


Top