Docstoc

c5

Document Sample
c5 Powered By Docstoc
					      Capitolul 4

Proiectarea algoritmilor
        paraleli
Descrierea unui algoritm paralel
• Identificarea partilor problemei care se pot
  executa in paralel
• Maparea partilor pe mai multe procesoare
• Impartirea datelor (de intrare, iesire si
  intermediare)
• Gestiunea accesului la datele comune mai
  multor procesoare
• Sincronizarea intre procese
 Proiectarea algoritmilor paraleli
• Notiuni de baza
   – Dependenta de date, granularitate , concurenta, interactiuni,
     procese,procesoare
• Tehnici de descompunere
   – Recursiva, de date, exploratorie, speculativa, hibrida
• Taskuri paralele
   – Generare, interactiuni
• Tehnici de mapare a taskurilor pe procesoare
   – Statica, dinamica
• Metode de limitare a overhead
• Modele de algoritmi paraleli
   – Data-paralel, task-graph, work pool, master-slave, pipeline,
     producer-consumer
Proiectarea algoritmilor
        paraleli

   Notiuni de baza
          Descompunerea
• Descompunerea: impartirea unei probleme
  in parti care pot fi executate in paralel
• Task: parte a problemei, definita de
  programator
 Exemplu: inmultire matrice*vector
A[n, n]  b[n]  y[n]
         n
y[i ]   A[i, j ]  b[ j ]
        j 1

elementul i al rezultatului y[i] se calculeaza
ca produsuldintre linia i a matricii si vectorulb
Task i  calculul lui y[i]
n taskuri
taskurile pot fi executatein paralel sau in orice ordine
Din: [Grama,Gupta,Kumar&Karypis]
   Dependenta de date. Graful de
          dependenta
• Dependenta de date: Un task poate utiliza
  rezultate intermediare calculate de alte taskuri
  => trebuie sa astepte terminarea acestora
• Graful de dependenta: graf orientat aciclic, cu :
  – nodi : taski
  – arc orientat de la taski la taskj : taskj depinde de taski
  – Taskul corespunzator unui nod j poate fi executat
    numai cand toate taskurile din nodurile i, pentru care
    exista arc i->j s-au terminat
 Exemplul. inmultire matrice-vector
• graful de dependenta are doar noduri, nu si arce =>
  taskurile pot fi executate in orice ordine



              1

                      2              n


                  3
Exemplu. Interogare baza de date




                Din: [Grama,Gupta,Kumar&Karypis]
         Exemplu interogare
• Interogare:
MODEL=“Civic” AND YEAR=“2001” AND
  (COLOR=“Green” OR COLOR=“White”)

• Procesarea interogarii: prin crearea de
  tabele intermediare
• Pot exista diferite modalitati de calcul
Din: [Grama,Gupta,Kumar&Karypis]
Din: [Grama,Gupta,Kumar&Karypis]
Din: [Grama,Gupta,Kumar&Karypis]
                Granularitate
• Granularitate: numarul si dimensiunea taskurilor
  – Granularitate fina (fine-grained): multe taskuri de
    dimensiune mica
  – Granularitate mare (coarse-grained): numar mic de
    taskuri de dimensiune mare
• Exemplu: inmultirea matrice*vector:
  – Granularitate fina: n taskuri - un task calculeaza un
    element al rezultatului
  – Granularitate mare: p <n taskuri - un task calculeaza
    mai multe elemente ale rezultatului
Din: [Grama,Gupta,Kumar&Karypis]
               Concurenta
• Gradul maxim de concurenta: numarul
  maxim de taskuri care pot fi executate simultan
  la un moment dat
• Gradul mediu de concurenta: numarul mediu
  de taskuri care ruleaza concurent pe intreaga
  durata a executiei programului
• Drumul critic: cel mai lung drum intre un nod
  de start si un nod de iesire din graful de
  dependenta
• Lungimea drumului critic: tine cont de
  ponderile nodurilor (ponderea unui nod este
  proportionala cu complexitatea taskului
  corespunzator)
Exemplu: grad concurenta, drum critic




Grad maxim concurenta: 4      Grad maxim concurenta: 4
Grad mediu concurenta: 2,33   Grad mediu concurenta: 1,88
Lungime drum critic: 27       Lungime drum critic: 34
Timp total secvential: 63     Timp total secvential: 64
    Interactiuni intre taskuri. Graful
              interactiunilor
• Graful dependentelor de date: apar legaturi daca datele
  de intrare pentru un task sunt date de iesire pentru alt
  task.
• Este posibil sa apara interactiuni (comunicari,
  sincronizari) intre taskuri care nu sunt de tip dependenta
  de date
• Exemplu: inmultire matrice*vector:
   – Graful dependentelor de date nu are arce (nu exista dependente
     de date intre taskuri – taskurile pot fi executate logic in orice
     ordine)
   – Apar interactiuni intre taskuri datorita comunicarii elementelor
     vectorului b care trebuie sa ajunga la toate taskurile. Aceste
     interactiuni depind de locul unde se afla distribuite elementele
     vectorului b
           Graful interactiunilor
• Graful interactiunilor: graf neorientat, cu :
   – nodi : taski
   – arc intre taski si taskj: taskj comunica cu taski
• Se pot asocia ponderi:
   – ponderea unui nod ≈ cantitatea de calcule executate
     de task
   – ponderea unui arc ≈ cantitatea de comunicatii intre
     cele 2 taskuri
• Relatia cu graful dependentelor de date:
   – multimea arcelor din graful interactiunilor este un
     supraset al multimii arcelor din graful dependentelor
• Exemplu: interogare baza de date:
   – Graful interactiunilor = graful dependentelor
Exemplu: inmultire matrice rara * vector
 A[n, n]  b[n]  y[n], A  matrice rara
          n
 y[i ]   A[i, j ]  b[ j ]
         j 1



 Task i  calculul lui y[i]
 Datorita faptului ca A este matrice rara, nu se vor
 calcula produsele A[i, j] * b[j] pentru valorile j unde A[i, j]  0


 Se presupuneca datele sunt distribuit e astfel: fiecare Task i
 detine linia i a matricii A si elementul i al vectorului b


 Fiecare task i va comunica cu toate taskurile j pentru care A[i,j]  0
Din: [Grama,Gupta,Kumar&Karypis]
             Maparea proceselor
• Descompunerea problemei => multimea de taskuri,
  graful de dependente si graful de interactiuni intre taskuri
• Maparea taskurilor pe procese:
  – Maximizarea concurentei: taskurile independente mapate pe
     procese diferite
  – Minimizarea timpului paralel de executie: asigurarea de
     procese disponibile de-a lungul drumului critic
  – Minimizarea interactiunii intre procese: taskuri cu multe
     interactiuni mapate pe acelasi proces
• Performanta unui algoritm paralel este
  influentata de:
  – Descompunerea: determina gradul de concurenta
  – Maparea: determina eficienta cu care este utilizat
    potentialul de concurenta rezultat din descompunere
 Taskuri, procese si procesoare
• Task: rezulta din descompunerea
  problemei
• Proces: unitate logica, agent de calcul
  care executa taskuri
• Procesor: unitate hardware
• Mapari:
  – taskuri <-> procese
  – procese <-> procesoare : de obicei 1:1
Din: [Grama,Gupta,Kumar&Karypis]
                   Exercitiu
Pentru grafurile de dependenta din figura, sa se
   determine:
1. Gradul maxim de concurenta
2. Lungimea drumului critic
3. Accelerarea S maxima care se poate obtine,
   presupunand ca exista un numar nelimitat de
   procesoare
4. Care este numarul minim de procesoare
   necesare atingerii valorii accelerarii de la pct 3
5. Accelerarea S maxima, daca numarul de
   procesoare este limitat la: 2, 4, 8
Din: [Grama,Gupta,Kumar&Karypis]
Tehnici de partitionare
      Partitionarea recursiva
      Partitionarea dupa date
     Partitionarea exploratorie
     Partitionarea speculativa
       Partitionarea hibrida
        Partitionarea recursiva
•  Divide and conquer: problema se imparte in
   subprobleme care pot fi tratate independent
• Pasi:
  1. Partitionarea problemei in subprobleme de
      dimensiuni aproximativ egale
  2. Rezolvarea concurenta a setului de
      subprobleme prin rezolvarea recursiva a
      fiecarei subprobleme
  3. Combinarea solutiilor subproblemelor
• Daca problema secventiala nu se rezolva de
   obicei in maniera recursiva, poate fi reformulata
   in acest fel in scopul paralelizarii. Exemplu:
   determinarea minimului dintre n numere
Din: [Grama,Gupta,Kumar&Karypis]
         Partitionarea de date
• Aplicabila problemelor care opereaza cu volum
  mare de date
• Partitionarea datelor => partitionarea calculelor
• De obicei asupra tuturor subseturilor de date se
  fac aceleasi operatii
• Partitionarea datelor:
  – De iesire (rezultatelor)
  – De intrare
  – Intermediare
    Partitionarea dupa datele de iesire
•    Metoda se poate aplica in cazul problemelor in
     care rezultatul problemei este o multime de
     valori care se pot calcula independent unele de
     altele
•    Partitionarea datelor de iesire => Partitionarea
     problemei in taskuri
•    Exemple:
     1. Inmultirea matrice*vector: fiecare element al
        vectorului rezultat este calculat independent
     2. Inmultirea matrice*matrice
     3. Frecventa de aparitie a unor subseturi intr-o baza de
        date
 Partitionarea dupa datele de iesire.
Exemplu – inmultirea matrice*matrice




                    Din: [Grama,Gupta,Kumar&Karypis]
Din: [Grama,Gupta,Kumar&Karypis]
Exemplu problema: frecventa de aparitie
  a unor subseturi intr-o baza de date




                     Din: [Grama,Gupta,Kumar&Karypis]
Partitionarea dupa datele de iesire.
 Exemplu – frecventa de aparitie




                   Din: [Grama,Gupta,Kumar&Karypis]
   Partitionarea datelor de intrare
• Metoda se aplica atunci cand nu se pot
  partitiona datele de iesire – probleme care
  calculeaza un unic “rezultat”:
• De regula este necesara o operatie de
  “combinare” a rezultatelor partiale
• Cazuri tipice de aplicare: calculul sumei a n
  numere, calculul minimului/maximului a n
  numere
• Exemplu: calculul sumei a n numere utilizand p
  procesoare, p<n
Partitionarea dupa datele de intrare.
 Exemplu – frecventa de aparitie




                    Din: [Grama,Gupta,Kumar&Karypis]
 Partitionarea datelor de intrare si
             de iesire
• Daca este posibila partitionarea datelor de
  iesire, poate fi avantajos sa se partitioneze
  si datele de intrare
Partitionarea dupa datele de intrare si de iesire.
         Exemplu – frecventa de aparitie
 Partitionarea datelor intermediare
• Metoda aplicabila algoritmilor care contin
  mai multe etape intermediare de calcule
• Datele de iesire de la etapa i => date de
  intrare pentru etapa i+1
• Exemplu: operatii cu matrici
  Partitionarea datelor intermediare.
Exemplu – inmultirea matrice * matrice
                              Dk,i j = Ai,k * Bk,j
     Regula Owner Computes
• Regula Owner Computes: procesul care detine
  anumite date este responsabil de toate calculele
  asupra acestor date
• In cazul descompunerii dupa datele de intrare:
  regula implica faptul ca toate calculele care
  utilizeaza datele de intrare sunt executate in
  procesele care detin respectivele date
• In cazul descompunerii dupa datele de iesire:
  fiecare rezultat este calculat de procesul caruia ii
  sunt repartizate datele
    Partitionarea exploratorie
• Metoda aplicabila pentru probleme cu
  cautare exhaustiva in spatiul solutiilor
• Spatiul solutiilor se partitioneaza in
  subspatii in care se face cautarea in
  paralel
• Cautarea continua pana cand solutia este
  gasita in unul din subspatii
Exemplu - puzzle




         Din: [Grama,Gupta,Kumar&Karypis]
Din: [Grama,Gupta,Kumar&Karypis]
Din: [Grama,Gupta,Kumar&Karypis]
       Partitionarea speculativa
• Metoda aplicabila pentru problemele care contin selectarea
  unei alternative de calcul in functie de rezultatul unei etape
  primare de calcul
      switch (rezultat etapa 1)
       case caz1: calcule1
       case caz2: calcule2
       …
       case cazn: calcule n


• Se presupune ca aflarea lui rezultat etapa 1 dureaza mult
  timp
• Se calculeaza in paralel variantele calcul1, calcul2, …,
  calculn inainte de a termina evaluarea lui rezultat etapa 1
      Partitionarea speculativa.
Exemplu –simulator bazat pe evenimente




                    Din: [Grama,Gupta,Kumar&Karypis]
         Partitionarea hibrida
• Aplicarea a diferite politici de partitionare
  pe etape diferite ale problemei
• Exemplu:
  – Determinarea minimului dintre n numere
  – Descompunerea pur recursiva: pentru n mare
    => numar foarte mare de taskuri
  – Descompunere hibrida:
     • Intai descompunere de date – p subprobleme
     • Apoi descompunere recursiva pentru cele p
       rezultate partiale
      Partitionarea hibrida.
Exemplu – minumul dintre n numere




                  Din: [Grama,Gupta,Kumar&Karypis]

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:3
posted:11/3/2012
language:Romanian
pages:53