Introducción a la Computación Paralela Germán Larrazábal Departamento Computación, FACYT, Universidad de Carabobo, Venezuela
Introducción La Computación Paralela Moda Estrategia de Mercado Complicar el desarrollo de software !!REALIDAD¡¡
Operaciones y Tiempo años años 32 años 40 años 1.5 semanas 30 minutos Tiempo No. Operaciones LINPACK (10 4 x 10 4 )Aerodinámica (viento) Turbulencia (viento) Aerodinámica (avión) Turbulencia (avión) Combustión 1 Mflop 1 Gflop 1 Tflop
Antes de Paralelizar Evaluar la eficiencia del código secuencial Herramientas de Profiling –Perfex –SpeedShop –ssrun ( ejecución ideal ) Compilar con las opciones de optimización (-O3) –Desenrosque de bucles –software pipelining Ayudar al compilador escribiendo un código eficiente –localidad de datos –bucles
Paralelismo Qué es el paralelismo y dónde está? PARALELISMO: Posibilidad de ejecutar varias acciones simúltaneamente A nivel de programas A nivel de subrutinas A nivel de bucles A nivel de sentencias PARALELISMO GRANO GRUESO PARALELISMO GRANO FINO
Paralelismo ¿Qué es el software paralelo? Son programas que usan más de un procesador –Programación en Memoria Compartida: Explota el paralelismo de grano fino –Programación de Paso de Mensajes: Explota el paralelismo grano grueso
Paralelismo ¿Qué tipo de paralelismo? Memoria Compartida –Fácil programación. Paralelismo extraído por el compilador –Poca escalabilidad (O(10) procesadores) –Requiren un hardware más costoso Memoria Distribuida (Paso de Mensajes) –Programación compleja –Usualmente mayor aprovechamiento de la localidad –Alta escalabilidad –Alta portabilidad => Se puede ejecutar el código en plataformas hardware sencillas
Arquitecturas Paralelas P0P1 P n-1 MEMORIA P0 Memoria P1 Memoria Pn-1 Memoria Compartida Memoria Distribuida
Arquitecturas Paralelas Memoria Compartida-Distribuida Memoria P0P1P2P3 Memoria P0P1P2P3 Memoria P0P1P2P3 P0P1Pn-1
Paralelismo ¿Qué estrategia de programación seguir? OpenMP –Fácil programación a nivel de directivas HPF (High Performance Fortran) –Simple programación –Faltan directivas de distribución de datos realmente eficaces MPI (Message Passing Interface) –Algo más complejo de programar –Máxima flexibilidad
Paralelismo Problemas de la Paralelización Balanceo de Carga –Distribución de datos adecuada para TODAS las faces de la simulación Minimización de las comunicaciones –Mínimo número de mensajes –Mínima longitud de los mensajes –Optima distribución de las comunicaciones sobre la topología de la red de interconexión
Diseño de Algoritmos Paralelos Problema Partición Comunicación Agrupación Asignación