Descargar

Modelado y Rendimiento de un Sistema Paralelo

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Modelos de paralelismo ? Tipos de paralelismo (1) (a) Paralelismo de datos (Gp:) do i = 1, 1000 do i = 1001, 2000 do i = 2001, 3000 A(i) = func(i) A(i) = func(i) A(i) = func(i) enddo enddo enddo (Gp:) P0 (Gp:) P1 (Gp:) P2

    do i = 1, 3000 A(i) = func(i) enddo

    edu.red

    Modelos de paralelismo ? Tipos de paralelismo (1) (b) Paralelismo de función (Gp:) P0 (Gp:) P1

    (Gp:) F1 (Gp:) F2 (Gp:) F3 (Gp:) F4

    edu.red

    Modelos de paralelismo ? Tipos de paralelismo (2) ? grano fino (fine grain) tareas “pequeñas” / mucha comunicación

    ? grano medio

    ? grano grueso (coarse grain) tareas “grandes” / poca comunicación ? ? grado de paralelismo

    edu.red

    Modelos de paralelismo ? Maestro-esclavo Un thread master genera P threads para ser ejecutados en paralelo, que “mueren” al terminar su tarea.

    ? SPMD (Single-Program-Multiple-Data) Se ejecutan P copias iguales independientes. Las tareas se diferencian mediante el pid del proceso.

    ? MPMD (Multiple-…) Se ejecutan P programas diferentes. ? Dos modelos

    edu.red

    ? Las tareas que se ejecutan en paralelo, bien sean iteraciones de un bucle o funciones, deben ser independientes, ya que se va a perder control global sobre la ejecución de las instrucciones. Análisis de dependencias Ejemplo:

    do i = 0, N-1 A(i) = A(i) + 1 enddo (Gp:) P0: L0 +0 S0 P1: L1 +1 S1 P2: L2 +2 S2 … … (Gp:) En paralelo

    (Gp:) L0 +0 S0 L1 +1 S1 L2 +2 S2 …

    edu.red

    Análisis de dependencias ? ¿Dependencias entre tareas? Sincronización

    – global (barreras) – punto a punto (eventos) (Gp:) P0 (Gp:) P1 (Gp:) F1 (Gp:) F2 (Gp:) F3 (Gp:) F4

    edu.red

    Análisis de dependencias ? Salvo casos muy obvios, la paralelización del código (análisis de dependencias, reparto de tareas, etc.) sigue siendo responsabilidad del programador.

    El análisis debe ser eficiente, ya que se necesita que una fracción importante del código sea ejecutada en paralelo.

    edu.red

    Análisis de dependencias (Gp:) ? dependencia RAW

    i: A = … j: = A

    (Gp:) ? antidependencia WAR

    i: = A … j: A =

    (Gp:) ? dependen. de salida WAW

    i: A = … j: A =

    (Gp:) i j (Gp:) i j (Gp:) i j

    dependencias verdaderas dependencias de nombre

    edu.red

    Grafos de dependencias Bucles + Grafo de dependencias + Distancia de la dependencia do i = 2, N-2 1 A(i) = B(i) + 2 2 C(i) = A(i-2) + A(i+1) enddo A(2) = B(2) + 2 C(2) = A(0) + A(3)

    A(3) = B(3) + 2 C(3) = A(1) + A(4)

    A(4) = B(4) + 2 C(4) = A(2) + A(5)

    A(5) = B(5) + 2 C(5) = A(3) + A(6) (Gp:) 1 (Gp:) 2

    (Gp:) A, 2

    (Gp:) A, 1

    edu.red

    Grafos de dependencias do i = 2, N-31 1 A(i) = B(i) + 2 2 C(i) = A(i-2) 3 D(i+1) = C(i) + C(i+1) 4 B(i+1) = B(i) + 1 5 D(i+30) = A(i) enddo (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 5

    (Gp:) A, 0

    (Gp:) A, 2

    (Gp:) C, 0

    (Gp:) C, 1

    (Gp:) D, 29

    (Gp:) B, 1

    (Gp:) B, 1

    Partes: 1, 2
    Página siguiente