Descargar

Principios de diseño de algoritmos paralelos

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Introducción Algoritmos secuenciales: secuencia de pasos. El orden de la ejecución se puede conocer de antemano (a menos que haya aleatoriedad en el algoritmo) Algoritmos paralelos: hay el detalle extra de la concurrencia (que pasos se pueden hacer en paralelo) y el no determinismo del orden de ejecución.

    edu.red

    Un algoritmo paralelo no trivial necesita: Definir que porciones del algoritmo se pueden hacer en paralelo Mapear esas porciones en los CPUs correspondientes Distribuir la data (input, output y variables intermedias) entre CPUs y/o memorias. Administrar el acceso a la data compartida entre varios CPUs. Sincronizar los procesos cuando convenga.

    edu.red

    Qué se puede y qué no se puede paralelizar? La suma de dos matrices es fácilmente paralelizable

    Pero se puede paralelizar esto? A=B+C D=A+E + A=B+C D=A+E A=B+C D=A+E

    edu.red

    Dependencia de data y de flujo Relación de bloqueo: write after read F=G+D G=H+I Si i>j, el output de la oper.j es el input de la oper.i Se puede solucionar usando variables auxiliares: AUX=G F=AUX+D G=H+I Dependencia de flujo: if A>B then C=D+E. Primero hay que hacer la comparación antes de tocar C. Si antes alguna operación modificaba A ó B, debe ser antes tocar C. SI NO hay ninguna de estas dependencias, se puede paralelizar “a lo bestia” y funcionará bien. Por que entonces no hay carreras por la data ?localidad

    edu.red

    Descomposición de y=Ab

    edu.red

    Ejemplo: descomponer un query MODEL="Civic" AND YEAR="2001" AND (COLOR="Green" OR COLOR="White")

    edu.red

    Grafo de Dependencia 1

    edu.red

    Grafo de dependencia 2

    Partes: 1, 2
    Página siguiente