Programación en Entornos Paralelos: MPI

Documentos relacionados
Paradigma de paso de mensajes

MPI es un estándar de programación en paralelo mediante paso de mensajes que permite crear programas portables y eficientes.

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 19 de junio de 2007

Computacion de Alto Performance

Curso-Taller Programación Paralela con lenguaje C bajo Linux. MCC. Salazar Martínez Hilario

Implementación de un Cluster de Computadoras con software libre para Computación Científica en Jicamarca

Programación en Paralelo con MPI en Clusters Linux

Brevísimo tutorial de MPI (Message Passing Interface) Miguel Vargas

Introducción a MPI (Message Passing Interface)

Sistemas de ficheros paralelos

Cómputo en paralelo con MPI

Programación Híbrida e Introducción a la Programación de GPUs

Computación Matricial y Paralela

Programación de aplicaciones paralelas con MPI (Message Passing Interface)

Qué es y qué no es un sistema distribuido? M.C. Juan Carlos Olivares Rojas

utilizar libros ni un ejemplo tráfico

JUAN CARLOS TORRES JOSE ALBEIRO CUESTA MENA GERMAN VARGAS FUNDACION UNIVERSITARIA KONRAD LORENZ

MINUTA: Taller en UAEMEX, Toluca. Construcción de Tecnología HPC

Taller Computación Altas Prestaciones. Pedro Antonio Varo Herrero

Primeros pasos con CUDA. Clase 1

Instalación de un Super-Servidor de procesamiento paralelo basado en MPI

Lusitania. Pensando en Paralelo. César Gómez Martín

Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela

Heterogénea y Jerárquica

Manuel Martín Salvador

Nociones básicas de computación paralela

Consideraciones en el diseño de redes Topología de redes Mecanismos de rutado

FLAG/C. Una API para computación matricial sobre GPUs. M. Jesús Zafont Alberto Martín Francisco Igual Enrique S. Quintana-Ortí

Cuando el lenguaje si importa

Los valores obtenidos de speedup tienden a incrementarse hasta los ocho procesadores. al usar diez procesadores éste se mantiene igual o decrece. Esto

Resolución de problemas en paralelo

Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU. Clase 0 Lanzamiento del Curso. Motivación

Intel lanza su procesador Caballero Medieval habilitado para Inteligencia Artificial

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

4. Clusters. Arquitectura de Clusters. Arquitectura de un cluster. Tipos de clusters. Redes para clusters. Ejemplo de Cluster: Google

Adaptación de la arquitectura linux lib de MaRTE OS a multiprocesadores

Índice. Índice. Máquinas de memoria distribuida. Arquitectura de un cluster. Arquitectura

Tema 2 Introducción a la Programación en C.

CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

FUNDAMENTOS DE INFORMÁTICA

Computación de Alta Performance Curso PVM Avanzado

IMPLEMENTACIÓN DE COMPUTACIÓN DE ALTO RENDIMIENTO Y PROGRAMACIÓN PARALELA EN CÓDIGOS COMPUTACIONALES CARLOS ANDRÉS ACOSTA BERLINGHIERI

Programación Paralela y Distribuida

Introducción a las Arquitecturas Paralelas. Arquitectura de Computadoras II Fac. Cs. Exactas UNCPBA Prof. Marcelo Tosini 2015

Balanceo de Carga en. Aplicaciones Paralelas. Usando Sobresuscripción de. CPUs en un Clúster Multicore

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

Preliminares. Tipos de variables y Expresiones

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

ARQUITECTURAS PARA PROCESAMIENTO PARALELO

Multiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas

Arquitectura de Computadores. Tema 15. Buses

Operaciones de comunicación

LICENCIADO EN SISTEMAS COMPUTACIONALES. Este programa educativo se ofrece en las siguientes sedes académicas de la UABC:

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

CLUSTER FING: ARQUITECTURA Y APLICACIONES

Nombre de la asignatura: Algoritmos y Lenguajes de programación.

Andres Felipe Rojas / Nancy Gelvez. UNESCO UNIR ICT & Education Latam Congress 2016

Computación Híbrida, Heterogénea y Jerárquica

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

4. Programación Paralela

Técnicas de Computación Científica

Nociones Básicas de un Sistema Computador. Clase 2 Introducción a la Programación

Herramientas Informáticas I Software: Sistemas Operativos

Plataformas paralelas

Diseño arquitectónico 1ª edición (2002)

Sistemas Escalables. Club de Investigación Tecnológica San José, Costa Rica. Theodore Hope

Fundamentos de programación JAVA

Usando el Sistema Operativo

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013

Unidad II Arquitectura de Computadoras

Algoritmos y Programas

Sistemas Operativos Practica 1: procesos y concurrencia.

CONSTRUCCIÓN Y DISEÑO DE UN CLÚSTER TIPO HPC VIRTUALIZADO

Ingeniero en Informática

6. PROCESADORES SUPERESCALARES Y VLIW

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA

Procesadores de lenguaje Tema 6 La tabla de símbolos

F1131 Fundamentos de sistemas operativos 1/12

Plataforma Cloud Computing. Marcelo Venegas Gormaz Jefe de Servicio Técnico

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

Tema 13: Apuntadores en C

Optimización de Rutinas Multinivel de Álgebra Lineal en Sistemas Multicore

Computación Matricial y Paralela

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

EVOLUCIÓN DE LOS PROCESADORES

Lenguaje de Programación

ANEXO XVII DE LA RESOLUCION N

Módulo: Modelos de programación para Big Data

Tema 1 Introducción. David Vallejo Fernández. Curso 2007/2008. Escuela Superior de Informática

CNCA. Colaboratorio Nacional de Computación Avanzada Centro Nacional de Alta Tecnología. Proyectos de uso de la e-infraestructura en RedCLARA

Computación Paralela Móvil

Cómputo en paralelo con OpenMP 1

Area Académica: Sistemas Computacionales. Tema: Elementos de diseño de memoria caché

Laboratorio de Paralelismo Prácticas MPI

El lenguaje de Programación C. Fernando J. Pereda

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Elementos de un programa en C

Transcripción:

1-11 Marzo de 2017 FACET -UNT Programación en Entornos Paralelos: MPI Graciela Molina mgracielamolina@gmailcom

TRADICIONALMENTE Procesamiento secuencial 2

TRADICIONALMENTE Procesamiento secuencial Si ya utilicé técnicas de optimización y aún necesito mejorar la performance de mi código? Y si agrego un core Cuanto mejora? 3

ACTUALMENTE Cuento con hardware multi-core Mi problema se puede subdividir en problemas independientes o es necesario ejecutar un gran número de veces una misma simulación 4

ACTUALMENTE Cuento con hardware multi-core Mi problema se puede subdividir en problemas independientes o es necesario ejecutar un gran número de veces una misma simulación Procesamiento paralelo 5

Surge la Computación de Alto Rendimiento No hay una sola definición sino que depende de la perspectiva HPC es cuando me importa que tan rápido quiero una respuesta (Computación para Altas Prestaciones o Alta Productividad) Por lo tanto, HPC puede ocurrir para: Una estación de trabajo (desktop, laptop) Smartphone! Una supercomputadora Un Cluster Linux En una Grid, o Cloud computing, etc 6

Programación de aplicaciones paralelas Programas que sean capaces de utilizar la arquitectura disponible CPU CPU CPU CPU BUS MEM Sincronización CPU CPU CPU CPU MEM MEM MEM MEM BUS Comunicación Utilizar eficientemente todos los recursos disponibles Problemas complicados Modelos complejos Grandes volúmenes de datos Capacidad de respuesta en tiempo limitado (sistemas de tiempo real) 7

Rendimiento de Aplicaciones Paralelas De que depende el tiempo de ejecución de un programa paralelo? Procesamiento Comunicación Oscioso Tiempo que transcurre desde el inicio de la ejecución del primer proceso hasta el fin de ejecución del ultimo proceso 8

Rendimiento de Aplicaciones Paralelas T PROC T COM Depende de la complejidad y dimensión del problema, del número de tareas utilizadas y de las características de los elementos de procesamiento (hardware, heterogeneidad, no dedicación) Depende de la localidad de procesos y datos (comunicación inter e intra-procesador, canal de comunicación) T IDLE Es consecuencia del no determinismo en la ejecución, minimizarlo es un objetivo de diseño Motivos: ausencia de recursos de computo disponible o ausencia de datos sobre los cuales operar Solución: técnicas de balance de carga o rediseñar el programa para distribuir los datos adecuadamente 9

Rendimiento de Aplicaciones Paralelas SPEED UP Medida de la mejora de rendimiento de una aplicación al aumentar la cantidad de procesadores (comparando con el rendimiento de utilizar un solo procesador) SPEED UP ABSOLUTO T 0 tiempo del MEJOR ALGORITMO SECUENCIAL T N tiempo del algoritmo paralelo ( N procesadores) SPEED UP ALGORITMICO T 1 tiempo en un procesador serial T N tiempo en paralelo 10

Rendimiento de Aplicaciones Paralelas Como analizo el speed up? Lo ideal es tener un speedup lineal Si uso p procesadores tengo una mejora de factor p En general: Speed-up sublineal En algunos casos se puede llegar a un speed-up superlineal (casos especiales del problema o del hardware disponibles) 11

Rendimiento de Aplicaciones Paralelas EFICIENCIA COMPUTACIONAL Valor normalizado del speed-up (entre 0 y 1), respecto a la cantidad de procesadores utilizados Lo ideal es que se encuentre cerca a 1 12

Rendimiento de Aplicaciones Paralelas LEY DE AMDAHL (1967): La parte serial de un programa determina una cota inferior para el tiempo de ejecución, aún cuando se utilicen al máximo técnicas de paralelismo 13

Rendimiento de Aplicaciones Paralelas Conclusión de la ley de AMDAHL La razón para utilizar un número mayor de procesadores debe ser resolver problemas más grandes o más complejos, y no para resolver más rápido un problema de tamaño fijo 14

Rendimiento de Aplicaciones Paralelas Objetivo de Diseño Grado de paralelismo obtenido vs Overhead x sincronización y Comunicación 15

MPI (Message Passing Interface) Objetivo: desarrollar un estándar portable y eficiente, para programación paralela Plataforma objetivo: memoria distribuida Paralelismo explícito (definido y controlado en su totalidad por el programador) Modelo de programas: SPMD (single program, multiple data o un programa, múltiples datos) Número de tareas fijado en tiempo preejecución 16

MPI (Message Passing Interface) Se basa en ejecutar un mismo código en múltiples procesadores, para ello es necesario gestionar la coordinación/comunicación entre los nodos 17

MPI (Message Passing Interface) Include MPI declaraciones, prototipos, etc INICIO DEL PROGRAMA Código serial Forma general de un programa que utiliza MPI Inicializa MPI Inicia código paralelo Realiza tareas en paralelo mediante pasaje de mensajes Finaliza MPI Código serial FIN DEL PROGRAMA Fin código paralelo 18

MPI (Message Passing Interface) Include MPI declaraciones, prototipos, etc INICIO DEL PROGRAMA Código serial Inicializa MPI Inicia código paralelo Realiza tareas en paralelo mediante pasaje de mensajes Finaliza MPI Código serial FIN DEL PROGRAMA Fin código paralelo C: #include <mpih> Fortran: include mpifh 19

MPI (Message Passing Interface) Include MPI declaraciones, prototipos, etc INICIO DEL PROGRAMA Código serial Inicializa MPI Inicia código paralelo Formato de funciones en MPI C: error = MPI_Xxxxx(parameter, ); MPI_Xxxxx(parameter, ); Fortran: CALL MPI_XXXXX(parameter,, IERROR) Realiza tareas en paralelo mediante pasaje de mensajes Finaliza MPI Código serial FIN DEL PROGRAMA Fin código paralelo MPI posee estructuras de datos propias pero: El programador puede acceder a estas mediante handles C defined typedefs Fortran Enteros 20

MPI (Message Passing Interface) Include MPI declaraciones, prototipos, etc INICIO DEL PROGRAMA Código serial C: int MPI_Init(int *argc, char ***argv) Inicializa MPI Inicia código paralelo Fortran: MPI_INIT(IERROR) INTEGER IERROR Realiza tareas en paralelo mediante pasaje de mensajes Finaliza MPI Código serial FIN DEL PROGRAMA Fin código paralelo 21

MPI (Message Passing Interface) Include MPI declaraciones, prototipos, etc INICIO DEL PROGRAMA Código serial Cómo trabajan los mensajes? COMUNICADORES Inicializa MPI Inicia código paralelo Realiza tareas en paralelo mediante pasaje de mensajes Finaliza MPI Código serial FIN DEL PROGRAMA Fin código paralelo Permite especificar el conjunto de procesos que participan en una operación colectiva 22

MPI (Message Passing Interface) Include MPI declaraciones, prototipos, etc INICIO DEL PROGRAMA Código serial Cómo identifico a un proceso dentro de un comunicador? C: ierr =MPI_Comm_rank(MPI_Comm comm, int *rank) Inicializa MPI Inicia código paralelo Fortran: MPI_COMM_RANK(COMM, RANK, IERROR) INTEGER COMM, RANK, IERROR Realiza tareas en paralelo mediante pasaje de mensajes Finaliza MPI Código serial FIN DEL PROGRAMA Fin código paralelo rank (rango) es el identificador de un proceso dentro de un comunicador 23

MPI (Message Passing Interface) Include MPI declaraciones, prototipos, etc INICIO DEL PROGRAMA Código serial Cuantos procesos hay en el comunicador? C: ierr=mpi_comm_size(mpi_comm comm, int *size) Inicializa MPI Inicia código paralelo Fortran: MPI_COMM_SIZE(COMM, SIZE, IERROR) INTEGER COMM, SIZE, IERROR Realiza tareas en paralelo mediante pasaje de mensajes Finaliza MPI Código serial FIN DEL PROGRAMA Fin código paralelo 24

MPI (Message Passing Interface) Include MPI declaraciones, prototipos, etc INICIO DEL PROGRAMA Código serial Inicializa MPI Inicia código paralelo Realiza tareas en paralelo mediante pasaje de mensajes Finaliza MPI Código serial FIN DEL PROGRAMA Fin código paralelo C: int MPI_Finalize() Fortran: MPI_FINALIZE(IERROR) INTEGER IERROR 25

Hello World! #include <stdioh> #include <mpih> int main (argc, argv) int argc; char *argv[]; { int rank, size; double inicio,fin; MPI_Init (&argc, &argv); MPI_Comm_rank (MPI_COMM_WORLD, &rank); MPI_Comm_size (MPI_COMM_WORLD, &size); printf( "Hello world : procesador %d de %d\n", rank, size ); MPI_Finalize(); return 0;} 26

Hello World! 27

Hello World! 28

Hello World! 29

Hello World! Ver los recursos de procesamiento y memoria del equipo cat /proc/cpuinfo cat /proc/cpuinfo grep processor wc -l # de unidades de procesamiento cat /proc/cpuinfo grep 'core id' nproc free -m Uso de memo en Mb 30

MPI (Message Passing Interface) Pero Cómo se comunican los procesos? MENSAJES! 31

Comunicación Punto a Punto P0 P1 SEND RECIEVE Comunicador Comunicación se realiza entre dos procesos El proceso fuente envía un mensaje al proceso destino La comunicación ocurre dentro de un comunicados El proceso destino está identificado por su rank (o rango) dentro del comunicador 32

MPI (Message Passing Interface) MENSAJES MPI datatypes: básicos y derivados (diferentes para C y Fortran) 33

Comunicación Punto a Punto ENVIAR C: int MPI_Send(void *buf, int count,mpi_datatype datatype,int dest, int tag,mpi_comm comm) Fortran: MPI_SEND(BUF, COUNT, DATATYPE, DEST,TAG,COMM, IERROR) <type> BUF(*) INTEGER COUNT, DATATYPE, DEST, TAG INTEGER COMM, IERROR 34

Comunicación Punto a Punto RECIBIR C: int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) Fortran: MPI_RECV(BUF, COUNT, DATATYPE, SOURCE,TAG, COMM, STATUS, IERROR) <type> BUF(*) INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE),IERROR 35

Comunicación Punto a Punto Ejemplo MPI_Comm_size(MPI_COMM_WORLD, &N); int tag=0; MPI_Send(&valor, 1, MPI_INT, N, tag, MPI_COMM_WORLD); MPI_Recv(&valor, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, MPI_STATUS_IGNORE); 36

1-11 Marzo de 2017 FACET -UNT Programación en Entornos Paralelos: MPI Graciela Molina mgracielamolina@gmailcom 37