SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
Principi di parallelismo

                                           Giovanni Erbacci - g.erbacci@cineca.it
                           Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie




                                            1°edizione 7 - 18 luglio 2008 2°edizione 8 – 19 settembre 2008




Principi di parallelismo
  Elaborazione
  Parallela                                 Elaborazione sequenziale




                                              Pipelining




                                            Elaborazione parallela




                                                                       Giovanni Erbacci             1




                                                53
Principi di parallelismo


  Parallel Computing

   Cosa si intende per parallel computing?
        – Parallel computing è una tecnica di programmazione che coinvolge l’utilizzo
          di più processori che operano insieme su un singolo problema
        – Il problema globale è suddiviso in parti, ciascuna delle quali viene eseguita
          da un diverso processore in parallelo.

   Programma Parallelo
      programma composto di tasks (processi) che comunicano tra loro per
      realizzare un obiettivo computazionale complessivo.




                                                                 Giovanni Erbacci         2




Principi di parallelismo

Calcolatori Paralleli




                   P                       M




                                                                 Giovanni Erbacci         3




                                                54
Principi di parallelismo




                M          M                                P             P
                P          P                                       M
                                                            P             P
        P
                    N           P
        M
                                M
                P       P
                M       M




            P       P
                M
            P       P




                                                                  Giovanni Erbacci              4




Principi di parallelismo




   Un modello di programmazione è una collezione di astrazioni di programma che
   fornisce una visione semplificata e trasparente del sistema hardware e software
   nella sua globalità.
   I processori di un calcolatore parallelo comunicano tra loro secondo 2 schemi di
       comunicazione:
         – Shared memory: I processori comunicano accedendo a variabili condivise
         – Message-passing: I processori comunicano scambiandosi messaggi

   Questi schemi identificano altrettanti paradigmi di programmazione parallela:
      - paradigma a memoria condivisa o ad ambiente globale (Shared memoy)
        i processi interagiscono esclusivamente operando su risorse comuni

      - paradigma a memoria locale o ad ambiente locale (Messsage passing)
        non esistono risorse comuni, i processi gestiscono solo informazioni locali e l'unica
        modalità di interazione è costituita dallo scambio di messaggi (message passing)




                                                                  Giovanni Erbacci              5




                                                 55
Principi di parallelismo


Paradigma Message Passing




                           A        B




                                        Giovanni Erbacci   6




Principi di parallelismo


 Paradigma Shared Memory
                      …




                                            …




                                        Giovanni Erbacci   7




                               56
Principi di parallelismo

 Esempio: Sort di n numeri
                         Input:   una sequenza di n numeri <a1, a2, a3, … an>
                         Output: una permutazione <a’1, a’2, a’3, … a’n> degli elementi,
                                 tale che a’1 a’2,  a’3 … a’n
                                                            


          #define SWAP(a,b) { int t; t=a; a=b; b=t; }
          void SORT( int a[], int n )

                {
                int i, j;

                for(i=0;in;i++)
                    {

                     for(j=1;j(n-i);j++)
                        {

                           if( a[j-1]a[j] ) SWAP(a[j-1],a[j]);
                           }
                     }
                 }
                                                                 Giovanni Erbacci          8




Principi di parallelismo


Sort di n numeri / 1
       Idea:   - si potrebbe dividere il vettore da ordinare in due vettori di n/2
                 elementi ciascuno,
               - ordiare i due vettori separatamente
               - richiamare una procedura di merge per ricomporre i due
                 vettori ordinati precedentemente



                SORT(a[0 : n/2-1])
                SORT(a[n/2 : n-1])
                MERGE(a[0 : n/2-1], a[n/2 : n-1])




                                                                 Giovanni Erbacci          9




                                                 57
Principi di parallelismo

    Complessità
             L’ algoritmo di sort richiede n-1 passi:
                       ogni passo pone un elemento nella sua corretta posizione
                       il passo imo fa n-I confronti e scambi.




                                                          Complessità:           O(n2) .


         L’ algoritmo di merge opera la fusione facendo n confronti:

                                                          Complessità:           O(n) .




                                                                              Giovanni Erbacci           10




Principi di parallelismo


Complessità / 1
 10000                                            (n **2 )/ 2
 9000                                             (n **2 )/ 4 + n
 8000                                             (n **2 )/ 8 + n
                                                  n **2
 7000
 6000
 5000
 4000
 3000
 2000
 1000
    0
         0         10      20      30      40       50              60          70         80      90         100


    La procedura di sort nella versione modificata viene richiamata 2 volte e
    ogni volta ordina n/2 elementi mentre la procedura merge è richiamata
    una sola volta ed esegue n confronti.
                                                                         2
                                                   n
                                                   2                                 n2
    Nella versione modificata vengono eseguiti 2                            +n=        + n confronti.
                                                   2                                 4

                                                                              Giovanni Erbacci           11




                                                 58
Principi di parallelismo


 Sort su k Processori
                     P0    P1   P2        ……..       Pk-1




                                                     Giovanni Erbacci   12




Principi di parallelismo

 Problema
                 Lettura dati da ordinare
                     SORT(a[0 : n/2-1])
                     SORT(a[n/2 : n-1])
                     MERGE(a[0 : n/2-1], a[n/2 : n-1])
                 Scrittura del vettore ordinato




                                                     Giovanni Erbacci   13




                                           59
Principi di parallelismo


Indirizzamento Locale o Globale




                           s ∑ ∑m



                                       Giovanni Erbacci   14




Principi di parallelismo

 Indirizzamento Globale

                                  P0


                                  P1


                                  P2


                                  P3




                                       Giovanni Erbacci   15




                             60
Principi di parallelismo


Indirizzamento Locale

                                                   P0



                                                   P1



                                                   P2



                                                   P3




          ??

                                                               Giovanni Erbacci         16




Principi di parallelismo

   Filosofia Master Slave e SPMD




  main (int argc, char **argv)
  {
     if (process is to become a controller process)
     {
        Controller (/* Arguments /*);
     }
     else
     {                                   PROGRAM
        Worker (/* Arguments /*);        IF (process is to become a controller process)
     }                                   THEN
  }                                                 CALL Controller (/* Arguments /*)
                                           ELSE
                                                        CALL Worker (/* Arguments /*)
                                           ENDIF
                                           END


                                                               Giovanni Erbacci         17




                                            61
Principi di parallelismo

Paradigmi di Programmazione
Paralela




   Linguaggi Procedurali sequenziali (Fortran 90,C,C++)

                                - Parallelism is not visible to the programmer
                                - Compiler responsible for parallelism
                                - Easy to do
                                - Small improvements in performance



                                    Esplicito
                               –   Parallelism is visible to the programmer
                               –   Difficult to do (right)
                               –   Large improvements in performance




                                                                              Giovanni Erbacci   18




Principi di parallelismo

 Modelli di Parallelismo
     Parallelismo sui Dati




                                                                              Giovanni Erbacci   19




                                                   62
Principi di parallelismo

Modelli di Parallelismo




                                  Giovanni Erbacci   20




Principi di parallelismo

Gestione del contorno
     Parallelismo sui Dati




                                  Giovanni Erbacci   21




                             63
Principi di parallelismo


Bilanciamento del carico




                           t




                           t
                                    Giovanni Erbacci   22




Principi di parallelismo




                                    Giovanni Erbacci   23




                               64
Principi di parallelismo




     Functional or Data Parallelism?

     Partition by task (functional parallelism)
     o each process performs a different function
     o identify functions, then data requirements
     o commonly programmed with message-passing

     Partition by data (data parallelism)
     o each process does the same work on a unique piece of data
     o    data placement is critical
     o more scalable than functional parallelism




                                                               Giovanni Erbacci           24




Principi di parallelismo


Concetto di Processo

  Algoritmo
     procedimento logico che occorre seguire per risolvere un determinato
     problema

  Programma
     descrizione dell'algoritmo, mediante un opportuno formalismo (il
     linguaggio di programmazione) in modo da poterlo eseguire su di un
     particolare elaboratore

  Processo sequenziale
     sequenza di eventi (esecuzione di operazioni) cui dà luogo l'elaboratore
     quando opera sotto il controllo di un particolare programma
     entità astratta che identifica l'attività dell'elaboratore relativa all'esecuzione
     del programma



                                                               Giovanni Erbacci           25




                                               65
Principi di parallelismo



Grafo di Precedenza
                                                                     INIZIO




                                                                    2*4=8




                                                                    3+6=9




                                                                    4-2=2




                                                                    9*2 = 18




                                                                    8+18=26




                                                                      FINE




                                   Giovanni Erbacci                            26




Principi di parallelismo


Processi concorrenti
                                                INIZIO




                                2 * 4 =8       3+6=9                4-2=2




                                                         9*2 = 18




                                           8+18=26




                                            FINE




                                   Giovanni Erbacci                            27




                           66
Principi di parallelismo

   Processi indipendenti


                                                P1              Pi         Pj                Pn
                                                e 11            e i1       e j1              e n1


                                                e 12            e i2       e j2              e n2



                                                e 13            e   i3     e j3              e n3


                                                 .                  .       .                 .
                                                 .     .. . .       .       .      . . . .    .
                                                 .                  .       .                 .

                                                e 1m            e im       e jm              e nm




                                                                Giovanni Erbacci                  28




Principi di parallelismo

   Processi interagenti
       Se i processi sono indipendenti non esiste alcuna relazione tra un
       generico evento eik del processo Pi ed un evento ejl del processo Pj
       (Algoritmi imbarazzantemente paralleli)

       Le attivit rappresentate dai processi comunque non sono sempre tra
       loro completamente indipendenti, ma si influenzano a vicenda

       Spesso i processi durante la loro evoluzione cooperano e interagiscono
       scambiandosi informazioni

       Fra eventi di processi diversi esistono quindi dei vincoli di precedenza
       che occorre rispettare

       Nel grafo un vincolo di precedenza viene rappresentato attraverso un
       arco che collega un nodo di un processo con un nodo di un processo
       diverso



                                                                Giovanni Erbacci                  29




                                           67
Principi di parallelismo

   Processi Interagenti

                                           P1                             Pi           Pj                 Pn
     Un arco dal nodo eij al nodo ekl
    significa che il task eij deve         e 11                           e i1         e j1               e n1
    esses completato prima che
    inizi il task ekl. Si dice che il task
                                           e 12                           e i2         e j2               e n2
    ekl dipende dal task eij

    I vincoli di precedenza sono      e 13                                e   i3
                                                                                       e j3               e n3
    detti vincoli di sincronizzazione
    poich indicano che i processi,     .                                      .         .                  .
    quando arrivano ad un punto di .                      . . . .             .         .       . . . .    .
                                       .                                      .         .                  .
    interazione devono
    sincronizzarsi cio ordinare i
    loro eventi come specificato dal e 1m                                 e im         e jm               e nm
    grafo di precedenza e quindi
    dalla logica dell'algoritmo




                                                                                   Giovanni Erbacci            30




Principi di parallelismo




  L’accesso concorrente in lettura a una stessa
  locazione di memoria non causa problemi.
  Tale operazione è ben definita:                                         P1                              P2
  concettualmente ogni processore fa una copia
  del contenuto della locazione di memoria e la
  memorizza in un proprio registro.

  I problemi si possono manifestare quando si
  verifica un accesso concorrente in scrittura                                       X := X + 1
  cioè quando più processi scrivono
  simultaneamente sulla stessa locazione di
  memoria.
                                                  Qual'è il valore
                                                   finale di x ?




                                                                                   Giovanni Erbacci            31




                                                                     68
Principi di parallelismo




      Il non-determinismo è causato dalle race conditions.
      Una race condition avviene quando due istruzioni in tasks concorrenti
          accedono la stessa locazione di memoria, almeno una delle quali in
          scrittura. Non c’è un un ordine di esecuzione garantito tra gli accessi.

      Il problema del non determinismo può essere risolto sincronizzando
          l’utilizzo dei dati condivisi.
          – Infatti se x=x+1 e x=x+2 sono mutuamente esclusivi allora il valore finale
            della variabile x sarà sempre 3.
      Le porzini di un programma paralello che richiedono sincronizzazione per
         evitare il non determinismo sono chiamate sezioni critiche.




                                                                 Giovanni Erbacci        32




Principi di parallelismo




              Nella programmazione a memoria condivisa occorrono
              costrutti per accedere in modo mutualmente esclusivo a
              sezioni critiche.

      Processor 1:                                Processor 2:
             LOCK (X)                                    LOCK (X)
                   X=X+1                                       X=X+2
             UNLOCK (X)                                  UNLOCK (X)




                                                                 Giovanni Erbacci        33




                                               69
Principi di parallelismo


 Deadlock
    Situazione in cui uno o pi processi rimangono indefinitamente bloccati
        perch non possono verificarsi le condizioni necessarie per il loro
        proseguimento
        Un gruppo di processi entra in deadlock quando tutti i processi del
        gruppo attendono un evento (acquisizione o rilascio di risorse) che può
        essere causato solo da un altro dei processi in attesa

               Processo P0                         Processo P1

                      receive (x1, P1 )              receive (x2, P0)

                      …….                            …….

                      send (x2, P1)                  send(x1,P0)




                                                                    Giovanni Erbacci   34




Principi di parallelismo




      Costrutti per dichiarare entità parallele: moduli di programma che
      devono essere eseguiti come processi sequenziali distinti
      più processi possono svolgere lo stesso modulo di programma,
      operando su dati differenti
      Costrutti per esprimere la concorrenza
      strumenti per specificare l'attivazione di un processo (quando deve
      iniziare l'esecuzione del modulo di programma che corrisponde a quel
      processo)
      strumenti per specificare la terminazione di un processo
      Costrutti per specificere le interazioni dinamiche fra processi
          - costrutti linguistici per specificare la sincronizzazione e la
             comunicazione fra i processi che devono cooperare
          - costrutti linguistici per garantire la mutua esclusione fra
             processi che competono (per il modello a memoria          condivisa)




                                                                    Giovanni Erbacci   35




                                              70
Principi di parallelismo




        Obiettivi (ideali) Assicurare lo speed-up e la Scalabilità:
        •     Assegnare a ciascun processo una quantità unica di lavoro
        •        Assegnare a ogni processo i dati necessari per il lavoro da
            svolgere
        •     Minimizzare la replica dei dati e della computazione
        •     Minimizzare la comunicazione tra i processi
        •     Bilanciare il work load

        Tenere ben in mente che:
               - Per un problema esistono diverse soluzioni parallele
               - La miglior soluzione parallela non sempre deriva dalla miglior
                 soluzione scalare




                                                           Giovanni Erbacci       36




                                            71
72

Contenu connexe

Plus de Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

Plus de Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

Principi Di Parallelismo

  • 1. Principi di parallelismo Giovanni Erbacci - g.erbacci@cineca.it Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie 1°edizione 7 - 18 luglio 2008 2°edizione 8 – 19 settembre 2008 Principi di parallelismo Elaborazione Parallela Elaborazione sequenziale Pipelining Elaborazione parallela Giovanni Erbacci 1 53
  • 2. Principi di parallelismo Parallel Computing Cosa si intende per parallel computing? – Parallel computing è una tecnica di programmazione che coinvolge l’utilizzo di più processori che operano insieme su un singolo problema – Il problema globale è suddiviso in parti, ciascuna delle quali viene eseguita da un diverso processore in parallelo. Programma Parallelo programma composto di tasks (processi) che comunicano tra loro per realizzare un obiettivo computazionale complessivo. Giovanni Erbacci 2 Principi di parallelismo Calcolatori Paralleli P M Giovanni Erbacci 3 54
  • 3. Principi di parallelismo M M P P P P M P P P N P M M P P M M P P M P P Giovanni Erbacci 4 Principi di parallelismo Un modello di programmazione è una collezione di astrazioni di programma che fornisce una visione semplificata e trasparente del sistema hardware e software nella sua globalità. I processori di un calcolatore parallelo comunicano tra loro secondo 2 schemi di comunicazione: – Shared memory: I processori comunicano accedendo a variabili condivise – Message-passing: I processori comunicano scambiandosi messaggi Questi schemi identificano altrettanti paradigmi di programmazione parallela: - paradigma a memoria condivisa o ad ambiente globale (Shared memoy) i processi interagiscono esclusivamente operando su risorse comuni - paradigma a memoria locale o ad ambiente locale (Messsage passing) non esistono risorse comuni, i processi gestiscono solo informazioni locali e l'unica modalità di interazione è costituita dallo scambio di messaggi (message passing) Giovanni Erbacci 5 55
  • 4. Principi di parallelismo Paradigma Message Passing A B Giovanni Erbacci 6 Principi di parallelismo Paradigma Shared Memory … … Giovanni Erbacci 7 56
  • 5. Principi di parallelismo Esempio: Sort di n numeri Input: una sequenza di n numeri <a1, a2, a3, … an> Output: una permutazione <a’1, a’2, a’3, … a’n> degli elementi, tale che a’1 a’2, a’3 … a’n #define SWAP(a,b) { int t; t=a; a=b; b=t; } void SORT( int a[], int n ) { int i, j; for(i=0;in;i++) { for(j=1;j(n-i);j++) { if( a[j-1]a[j] ) SWAP(a[j-1],a[j]); } } } Giovanni Erbacci 8 Principi di parallelismo Sort di n numeri / 1 Idea: - si potrebbe dividere il vettore da ordinare in due vettori di n/2 elementi ciascuno, - ordiare i due vettori separatamente - richiamare una procedura di merge per ricomporre i due vettori ordinati precedentemente SORT(a[0 : n/2-1]) SORT(a[n/2 : n-1]) MERGE(a[0 : n/2-1], a[n/2 : n-1]) Giovanni Erbacci 9 57
  • 6. Principi di parallelismo Complessità L’ algoritmo di sort richiede n-1 passi: ogni passo pone un elemento nella sua corretta posizione il passo imo fa n-I confronti e scambi. Complessità: O(n2) . L’ algoritmo di merge opera la fusione facendo n confronti: Complessità: O(n) . Giovanni Erbacci 10 Principi di parallelismo Complessità / 1 10000 (n **2 )/ 2 9000 (n **2 )/ 4 + n 8000 (n **2 )/ 8 + n n **2 7000 6000 5000 4000 3000 2000 1000 0 0 10 20 30 40 50 60 70 80 90 100 La procedura di sort nella versione modificata viene richiamata 2 volte e ogni volta ordina n/2 elementi mentre la procedura merge è richiamata una sola volta ed esegue n confronti. 2 n 2 n2 Nella versione modificata vengono eseguiti 2 +n= + n confronti. 2 4 Giovanni Erbacci 11 58
  • 7. Principi di parallelismo Sort su k Processori P0 P1 P2 …….. Pk-1 Giovanni Erbacci 12 Principi di parallelismo Problema Lettura dati da ordinare SORT(a[0 : n/2-1]) SORT(a[n/2 : n-1]) MERGE(a[0 : n/2-1], a[n/2 : n-1]) Scrittura del vettore ordinato Giovanni Erbacci 13 59
  • 8. Principi di parallelismo Indirizzamento Locale o Globale s ∑ ∑m Giovanni Erbacci 14 Principi di parallelismo Indirizzamento Globale P0 P1 P2 P3 Giovanni Erbacci 15 60
  • 9. Principi di parallelismo Indirizzamento Locale P0 P1 P2 P3 ?? Giovanni Erbacci 16 Principi di parallelismo Filosofia Master Slave e SPMD main (int argc, char **argv) { if (process is to become a controller process) { Controller (/* Arguments /*); } else { PROGRAM Worker (/* Arguments /*); IF (process is to become a controller process) } THEN } CALL Controller (/* Arguments /*) ELSE CALL Worker (/* Arguments /*) ENDIF END Giovanni Erbacci 17 61
  • 10. Principi di parallelismo Paradigmi di Programmazione Paralela Linguaggi Procedurali sequenziali (Fortran 90,C,C++) - Parallelism is not visible to the programmer - Compiler responsible for parallelism - Easy to do - Small improvements in performance Esplicito – Parallelism is visible to the programmer – Difficult to do (right) – Large improvements in performance Giovanni Erbacci 18 Principi di parallelismo Modelli di Parallelismo Parallelismo sui Dati Giovanni Erbacci 19 62
  • 11. Principi di parallelismo Modelli di Parallelismo Giovanni Erbacci 20 Principi di parallelismo Gestione del contorno Parallelismo sui Dati Giovanni Erbacci 21 63
  • 12. Principi di parallelismo Bilanciamento del carico t t Giovanni Erbacci 22 Principi di parallelismo Giovanni Erbacci 23 64
  • 13. Principi di parallelismo Functional or Data Parallelism? Partition by task (functional parallelism) o each process performs a different function o identify functions, then data requirements o commonly programmed with message-passing Partition by data (data parallelism) o each process does the same work on a unique piece of data o data placement is critical o more scalable than functional parallelism Giovanni Erbacci 24 Principi di parallelismo Concetto di Processo Algoritmo procedimento logico che occorre seguire per risolvere un determinato problema Programma descrizione dell'algoritmo, mediante un opportuno formalismo (il linguaggio di programmazione) in modo da poterlo eseguire su di un particolare elaboratore Processo sequenziale sequenza di eventi (esecuzione di operazioni) cui dà luogo l'elaboratore quando opera sotto il controllo di un particolare programma entità astratta che identifica l'attività dell'elaboratore relativa all'esecuzione del programma Giovanni Erbacci 25 65
  • 14. Principi di parallelismo Grafo di Precedenza INIZIO 2*4=8 3+6=9 4-2=2 9*2 = 18 8+18=26 FINE Giovanni Erbacci 26 Principi di parallelismo Processi concorrenti INIZIO 2 * 4 =8 3+6=9 4-2=2 9*2 = 18 8+18=26 FINE Giovanni Erbacci 27 66
  • 15. Principi di parallelismo Processi indipendenti P1 Pi Pj Pn e 11 e i1 e j1 e n1 e 12 e i2 e j2 e n2 e 13 e i3 e j3 e n3 . . . . . .. . . . . . . . . . . . . . e 1m e im e jm e nm Giovanni Erbacci 28 Principi di parallelismo Processi interagenti Se i processi sono indipendenti non esiste alcuna relazione tra un generico evento eik del processo Pi ed un evento ejl del processo Pj (Algoritmi imbarazzantemente paralleli) Le attivit rappresentate dai processi comunque non sono sempre tra loro completamente indipendenti, ma si influenzano a vicenda Spesso i processi durante la loro evoluzione cooperano e interagiscono scambiandosi informazioni Fra eventi di processi diversi esistono quindi dei vincoli di precedenza che occorre rispettare Nel grafo un vincolo di precedenza viene rappresentato attraverso un arco che collega un nodo di un processo con un nodo di un processo diverso Giovanni Erbacci 29 67
  • 16. Principi di parallelismo Processi Interagenti P1 Pi Pj Pn Un arco dal nodo eij al nodo ekl significa che il task eij deve e 11 e i1 e j1 e n1 esses completato prima che inizi il task ekl. Si dice che il task e 12 e i2 e j2 e n2 ekl dipende dal task eij I vincoli di precedenza sono e 13 e i3 e j3 e n3 detti vincoli di sincronizzazione poich indicano che i processi, . . . . quando arrivano ad un punto di . . . . . . . . . . . . . . . . interazione devono sincronizzarsi cio ordinare i loro eventi come specificato dal e 1m e im e jm e nm grafo di precedenza e quindi dalla logica dell'algoritmo Giovanni Erbacci 30 Principi di parallelismo L’accesso concorrente in lettura a una stessa locazione di memoria non causa problemi. Tale operazione è ben definita: P1 P2 concettualmente ogni processore fa una copia del contenuto della locazione di memoria e la memorizza in un proprio registro. I problemi si possono manifestare quando si verifica un accesso concorrente in scrittura X := X + 1 cioè quando più processi scrivono simultaneamente sulla stessa locazione di memoria. Qual'è il valore finale di x ? Giovanni Erbacci 31 68
  • 17. Principi di parallelismo Il non-determinismo è causato dalle race conditions. Una race condition avviene quando due istruzioni in tasks concorrenti accedono la stessa locazione di memoria, almeno una delle quali in scrittura. Non c’è un un ordine di esecuzione garantito tra gli accessi. Il problema del non determinismo può essere risolto sincronizzando l’utilizzo dei dati condivisi. – Infatti se x=x+1 e x=x+2 sono mutuamente esclusivi allora il valore finale della variabile x sarà sempre 3. Le porzini di un programma paralello che richiedono sincronizzazione per evitare il non determinismo sono chiamate sezioni critiche. Giovanni Erbacci 32 Principi di parallelismo Nella programmazione a memoria condivisa occorrono costrutti per accedere in modo mutualmente esclusivo a sezioni critiche. Processor 1: Processor 2: LOCK (X) LOCK (X) X=X+1 X=X+2 UNLOCK (X) UNLOCK (X) Giovanni Erbacci 33 69
  • 18. Principi di parallelismo Deadlock Situazione in cui uno o pi processi rimangono indefinitamente bloccati perch non possono verificarsi le condizioni necessarie per il loro proseguimento Un gruppo di processi entra in deadlock quando tutti i processi del gruppo attendono un evento (acquisizione o rilascio di risorse) che può essere causato solo da un altro dei processi in attesa Processo P0 Processo P1 receive (x1, P1 ) receive (x2, P0) ……. ……. send (x2, P1) send(x1,P0) Giovanni Erbacci 34 Principi di parallelismo Costrutti per dichiarare entità parallele: moduli di programma che devono essere eseguiti come processi sequenziali distinti più processi possono svolgere lo stesso modulo di programma, operando su dati differenti Costrutti per esprimere la concorrenza strumenti per specificare l'attivazione di un processo (quando deve iniziare l'esecuzione del modulo di programma che corrisponde a quel processo) strumenti per specificare la terminazione di un processo Costrutti per specificere le interazioni dinamiche fra processi - costrutti linguistici per specificare la sincronizzazione e la comunicazione fra i processi che devono cooperare - costrutti linguistici per garantire la mutua esclusione fra processi che competono (per il modello a memoria condivisa) Giovanni Erbacci 35 70
  • 19. Principi di parallelismo Obiettivi (ideali) Assicurare lo speed-up e la Scalabilità: • Assegnare a ciascun processo una quantità unica di lavoro • Assegnare a ogni processo i dati necessari per il lavoro da svolgere • Minimizzare la replica dei dati e della computazione • Minimizzare la comunicazione tra i processi • Bilanciare il work load Tenere ben in mente che: - Per un problema esistono diverse soluzioni parallele - La miglior soluzione parallela non sempre deriva dalla miglior soluzione scalare Giovanni Erbacci 36 71
  • 20. 72