MPI y sus aplicaciones en infraestructuras Grid

Documentos relacionados
Message Passing Interface (MPI)

Interfaz de Paso de Mensajes MPI. Christian Chinchilla Brizuela

Paradigma de paso de mensajes

Procesamiento Paralelo

Elementos básicos de cómputo paralelo

Esquemas de comunicación

Computacion de Alto Performance

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

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

Paralelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 9 Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla

Procesamiento Paralelo

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

INSTITUTO DE BIOCOMPUTACIÓN Y FÍSICA DE SISTEMAS COMPLEJOS CURSO CLUSTERS & GRID COMPUTING EN ENTORNOS DE SOFTWARE LIBRE.

8 abril 2014 IFEMA Madrid spain.ni.com/nidays. spain.ni.com

Modelo de paso de mensajes

Sistemas distribuidos Message Passing Interface

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

Clústeres y procesamiento en paralelo XE1GNZ J O R G E F BARBOSA J ACOBO F E B R E R O DE 20 17

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

Introducción a la Interfaz de paso de mensajes (MPI)

utilizar libros ni un ejemplo tráfico

Cómputo en paralelo con MPI

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

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

Procesamiento Paralelo

Taller de Programación Paralela

Introducción a MPI / MPI2

Requisitos Técnicos de actualización de Cluster Heterogéneo

Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso Presentación e introducción

El Procesamiento Distribuido y su aplicación al Tratamiento de Imágenes. Miguel Hernández Vázquez. Carlos Platero Dueñas

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

MPP. MIMD Computador Masivamente Paralelo

2. Fundamentos de Tecnologías de Información. 2.5 Telecomunicaciones y Redes

Consiste en un conjunto de circuitos impresos y conectores integrados en una única placa donde se alojan todos los componentes internos del ordenador

Taller Computación Altas Prestaciones. Pedro Antonio Varo Herrero

Computación de Altas Prestaciones Sin miedo, es más fácil de lo que parece. Alex Ramírez Arquitecturas Heterogeneas Barcelona Supercomputing Centrer

TEMA 1: Concepto de ordenador

Anexo Técnico Partida 2

:Arquitecturas Paralela basada en clusters.

Modelos de computadores paralelos

Intel lanza su procesador Caballero Medieval habilitado para Inteligencia Artificial

CAR. Responsable : María del Carmen Heras Sánchez. Asesores Técnicos : Daniel Mendoza Camacho Yessica Vidal Quintanar.

Introducción al Cómputo en Paralelo en el Laboratorio Nacional de Supercómputo del Sureste de México: Uso de MPI

Computación Matricial y Paralela

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

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

ÍNDICE. 1. Requisitos de Hardware Arranque del front-end Arranque de los nodos Utilización de lam, OpenMPI y Ganglia...

TIPOS DE REDES Y TOPOLOGIAS

Arquitectura de Computadores. Tema 15. Buses

FUNCIONAMIENTO DEL ORDENADOR

Hoja de respuestas. Examen tipo A

Relevancia y Aplicaciones de las TIC en Biomedicina y Biotecnología

2. CARACTERÍSTICAS MÍNIMAS DEL EQUIPO OBJETO DE LA ADQUISICIÓN

Granularidad y latencia

REQUISITOS DEL SISTEMA

Taller de Programación Paralela

Programación Paralela y Distribuida

Proyecto de Investigación I y II

Arquitectura de placas

Experimentación distribuida basada en el sistema Condor

Introduccion a Sistemas Operativos. Ej: Linux

PROCESADORES. Existen 3 tipos de procesadores: DE GALLETA, DE PINES Y DE CONTACTO. DE GALLETA: se utilizaban en las board en los años 80 y 90.

PLACA BASE. Diferentes tipos de placas base de los fabricantes habituales.

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

Cuerpo de Profesores Técnicos de Formación Profesional

Computación 1. Roles en la interconexión

Conceptos y definiciones básicos en computación

Introducción a los Sistemas Operativos y Redes. Clase 2: Topologías de Redes

PLIEGO DE PRESCRIPCIONES TECNICAS PARA LA CONTRATACION DEL SUMINISTRO DE PLATAFORMA DE SISTEMAS DE ENTORNO DE CONSOLIDACIÓN Y FORMACIÓN PARA LA

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

Sistemas operativos en red. Conrado Perea

Programación en Paralelo con MPI en Clusters Linux

Sistemas de ficheros paralelos

Mejorando el desempeño de una red Gigabit Ethernet en un cluster Linux

Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez.

ordenador A o Datos analógicos: o Velocidad de un coche o La temperatura en Valencia, etc. o Datos digitales:

Procesamiento Paralelo

CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 0. Entorno de programación: atcgrid y gestor TORQUE

Redes de Computadores

INTRODUCCION. Ing. Camilo Zapata Universidad de Antioquia

Introducción a Souliss

Computación Matricial y Paralela

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

Las redes de ordenadores. Tipos. Comunicación en la Red Modelo OSI. Arquitectura TCP/IP. Luis Villalta Márquez

Una Red es un conjunto de ordenadores interconectados entre si mediante cable o por otros medios inalámbricos. Montse Eleno Silvo

UNIVERSIDAD DE BURGOS Área de Tecnología Electrónica. Introducción a la programación en MPI.

Tutorías con Grupos Reducidos (TGR) Parte 1: Evaluación de prestaciones

Ingeniero en Informática

BSC MARENOSTRUM. Javier Bartolomé Rodriguez Systems Group

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES

Computación Cluster y Grid. Computación Cluster y Grid. Cluster Computing

Introducción a MPI (Message Passing Interface)

Arquitectura de Computadoras. Clase 9 Procesamiento paralelo

ARQUITECTURA DE COMPUTADORES DESCRIPCIÓN BUS PCI (Tema 1: Conexión Externa de Procesadores. Buses)

Tema 2: Conceptos básicos. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

EL ORDENADOR HARDWARE SOFTWARE

También denominada adaptador de vídeo, es uno de los componentes más básicos e importantes del ordenador, ya que nos va a permitir visualizar toda la

Transcripción:

MPI y sus aplicaciones en infraestructuras Grid Dr. Isabel Campos Plasencia Instituto de Física de Cantabria-IFCA Santander, Spain Grids y e-ciencia 2008, IFIC, Valencia

Esquema Introducción a MPI MPI en el Grid Aplicaciones Ejercicios

Introducción Contexto High throughput computing (HTC) Se utilizan muchos recursos computacionales durante largos periodos de tiempo Acceso a mucho tiempo de cpu promedio durante largos periodos de tiempo (meses) Optimizar el número de trabajos ejecutados por unidad de tiempo. Computación en modo granja, o procesos independientes El Grid se diseñó con la idea de ser una fuente de HTC High performance computing (HPC) Disponer simultaneamente de una gran cantidad de recursos computacionales Lo importante es que la aplicación se ejecute en el menor tiempo posible. Para ello es necesario que los procesadores individuales que participan en el cálculo cooperen Cómo hacer que los procesadores cooperen?

Computación paralela Ejecución simultánea de de una una misma misma tarea tarea Dividida y adaptada al al entorno de de computación Obtener los los resultados de de una una forma forma más más rápida rápida

Introducción Cómo hacer que los procesadores cooperen En principio, dependerá de la arquitectura del sistema y del procesador Cada fabricante de hardware tenía su propia forma Librerías específicas Lenguajes específicos: Apesse, Occam, etc Ventajas Se obtiene el mejor rendimiento posible de cada plataforma Inconvenientes No es portable. Repetir el mismo esfuerzo de programación para cada arquitectura. A veces era necesario un conocimiento profundo del hardware de la máquina

Ejemplo INMOS Máquinas basadas en transputers: Occam WHILE WHILE next next <> <> EOF EOF SEQ SEQ x := := next next PAR PAR in in? next next out out! x * x CHAN CHAN OF OF [36]BYTE message CHAN CHAN OF OF COMPLEX32 imp imp CHAN CHAN OF OF INT::[]BYTE link link message! Hello, World! link link! len::[buffer FROM FROM start]

Ejemplo ALENIA TAO para las máquinas APE APE100 en DESY

Ejemplo ALENIA TAO para las máquinas APE

Introducción Message Passing Interface (MPI) Forum En 1992 se creo el MPI Forum para tratar crear una prescripción independiente del sistema y del procesador Ver información en http://www.mpi-forum.org Participan los más representativos fabricantes de hardware (IBM, Intel, HP, AMD, ) junto con investigadores en ciencia computacional de todo el mundo Objetivos del MPI Forum Definir un interfaz de programación (API) uniforme Enfocado a conseguir una comunicación entre procesos lo más eficiente posible Asumiendo que el interfaz de comunicación hardware es fiable Permita la programación en C y en Fortran de forma cómoda para el usuario

Introducción Evolución del trabajo del MPI Forum 1994 release de MPI 1.0 Release inicial 1995 release of MPI 1.1 1997 Release de MPI 1.2 Release de MPI 2.0 Futuro Hacia el MPI 3.0 MPI - 1 MPI - 2 Comunicaciones Point-to-point Operaciones Collectiva Topologías Manejo de las tipologías de datos Input/Output de ficheros Comunicaciones one-sided Extensión de macros para C++ y F90

Introducción Qué es MPI? Es la especificación de un interfaz de programación (API): Define la forma del Interfaz y su semántica MPI es vendor neutral y (de facto) Standard MPI lo define el MPI-Forum MPI especifica la forma de los interfaces para C, C++ y Fortran 70/90 MPI no está acabado. Hay un progreso continuado hacia nuevas versiones.

Introducción Qué NO es MPI? MPI no es Magia He instalado XXX-MPI in 4 de mis maquinas y mi aplicación no se ejecuta más rápido!?! (pregunta típica) MPI no es una implementación de nada, es sólo un estándar OpenMPI, MPICH, LAMMPI son implementaciones del estándar MPI MPI no es el Santo Grial Hay muchos problemas cuya solución no se adecúa al paradigma de paso de mensajes entre procesos Es muy fácil escribir una aplicación MPI cuyo rendimiento sea peor que su versión secuencial MPI funciona bien en sistemas de memoria compartida pero, tal vez Open MP es mejor solución, dependiendo del problema

Introducción Conceptos básicos Todas las funciones/símbolos MPI functions/symbols contienen el prefijo MPI_ Para usar MPI en los programa en C hay que incluir mpi.h Para usar MPI en Fortran hay que incluir mpif.h La compilación y linkado es dependiente de la implementación Las implementaciones más populares de MPI ofrecen al usuario compiladores preparados mpicc, mpicxx, mpicc, mpif70,... Cargan automaticamente los flags y las librerías necesarias Tipicamente en un Makefile se sustituye el nombre del compilador mpicc en lugar de gcc

Introducción Grupos y procesos En el paradigma MPI la ejecución de un binario (ej. una aplicación) se divide en N partes, denominadas procesos Los procesos a su vez están agrupados en grupos Cada proceso dentro un grupo está identificado por un número, el rango (rank) del proceso Rank = 0,,(N-1)

Introducción Grupos y procesos Notar la diferencia entre Proceso y Procesador Un mismo procesador puede ejecutar varios procesos Ejemplo: Distribución de 8 procesos en 4 procesadores CPU1 CPU2 Cada proceso puede en principio ejecutar un binario diferente MIMD (multiple instruction multiple data) En general es siempre el mismo binario el que ejecuta código diferente basándose en su rango El caso más común es que todos los procesos ejecuten el mismo binario CPU3 CPU4 mpirun np 8 machinefile hostnames.txt./miprog Genera 8 procesos elementales Distribuídos entre 4 CPUs

Introducción Grupos y procesos Notar la diferencia entre Proceso y Procesador Un mismo procesador puede ejecutar varios procesos Cada proceso puede en principio ejecutar un binario diferente MIMD (multiple instruction multiple data) En general es siempre el mismo binario el que ejecuta código diferente basándose en su rango El caso más común es que todos los procesos ejecuten el mismo binario Master Ejemplo: Distribución de 8 procesos en 4 procesadores 0 1 2 3 4 5 6 7

Introducción Comunicadores Un comunicador es el objeto que sirve para comunicar (~ socket) Un grupo Un contexto de comunicación Los contextos son únicos Dividen toda la comunicación MPI en espacios disjuntos

Introducción Comunicadores predefinidos Comunicadores predefinidos MPI_COMM_WORLD Envuelve a todos los procesos de la ejecución MPI MPI_COMM_SELF Envuelve solo a los procesos que están en un determinado contexto MPI_COMM_NULL Ningún proceso El usuario puede crear sus propios comunicadores de acuerdo a las necesidades del programa Funciones importantes MPI_comm_size Devuelve el número de procesos en el grupo MPI_comm_rank Devuelve el rango del proceso que hace la llamada MPI_comm_free Elimina un comunicador

Introducción Hello World

Introducción Hello World Comentarios MPI_Init Inicializa el sistema MPI Es necesario llamarlo al principio del programa, antes de invocar ninguna otra función MPI MPI_Finalize Deshabilita el sistema MPI Tras esta llamada no se puede llamar a MPI Las funciones MPI devuelven siempre un código de error que se puede chequear

Introducción Tipos de comunicación: punto-a-punto Intercambio de datos entre dos procesos Se produce mediante el envío de un mensaje El proceso fuente envía el mensaje El proceso receptor tiene que recibirlo (activamente) int intmpi_send(void *buf, *buf, int intcount, MPI_Datatype datatype, int intdest, int inttag, tag, MPI_Comm comm); int intmpi_recv(void *buf, *buf, int intcount, MPI_Datatype datatype, int intsource, int inttag, tag, MPI_Comm comm, comm, MPI_Status *status *status))

Introducción Tipos de comunicación: punto-a-punto *buf: puntero a los datos a enviar count: número de elementos a enviar datatype: tipo de dato dest: Identificación del proceso destino tag: etiqueta de la comunicación comm: Identificación del comunicador Envío: MPI_Send() *buf: puntero para la recepción de los datos count: número de elementos datatype: tipo de dato source: Identificación del proceso origen tag: etiqueta de la comunicación comm: Identificación del comunicador *status: puntero para acceso a información sobre mensaje Recepción: MPI_Recv()

Introducción Tipos de comunicación: Colectivas MPI_Bcast() Un proceso distribuye un mismo dato al resto de los procesos MPI_Scather() Un proceso distribuye datos al resto de los procesos particionando MPI_Gather() Un proceso recoge datos de varios procesos

Introducción Tipos de comunicación: Colectivas MPI_Reduce Realiza una operación matemática distribuida y se devuelve el resultado al root de la operación El programador puede añadir sus propias operaciones Ejemplos de funciones empleadas en operaciones colectivas: MPI_MAX MPI_MIN MPI_SUM MPI_PROD MPI_LAND logical AND integer logical MPI_BAND bit-wise AND integer, MPI_BYTE integer, MPI_BYTE MPI_LOR logical OR integer logical MPI_BOR bit-wise OR integer

Introducción Ejemplo MPI_Bcast Char Char msg[100]; if(my_rank==source) {{ sprintf(msg,"\n Esto Esto es es un un mensaje del del proceso %d %da todos todos los los demás",source); MPI_Bcast(msg,100,MPI_CHAR,source,MPI_COMM_WORLD); printf("\n Mensaje enviado a todos todos desde desde %d",source); }} else else {{ MPI_Bcast(msg,100,MPI_CHAR,source,MPI_COMM_WORLD); printf("\n Mensaje recibido en en %d %ddesde desde %d",my_rank,source); printf(msg); }}

Introducción Ejemplo MPI_Reduce int intvalue; int intresult; value value = my_rank; MPI_Reduce(&value,&result,1,MPI_INT,MPI_SUM,source,MPI_COMM_WORLD); if(my_rank==source) {{ printf("\n Resultado de de la la suma suma colectiva %d", %d", result); result); }}

Sistemas, Hardware y MPI

Configuración típica de un cluster Nodos secuenciales Nodos Paralelos Switch Switch Red Interna Red exterior

Switch para MPI Parámetros a tener en cuenta Durante el el cálculo necesitan intercambiar datos a través de de la la red red de deprocesadores que que conforma el el cluster Cuánto y con qué Frecuencia necesita el programa comunicar? Cantidad La respuesta fija los parametros de la RED que necesitamos MB/s Frecuencia Ancho de Banda? Latencia

Alternativas hardware para MPI I. Gigabit Ethernet (GE) Latencias del orden de los 100 microseg. Ancho de Banda en el rango 50-100 MB/s Precio: 80 /puerto + Switch ( > 1500 ) II. Myrinet 2000 Latencias entorno a 10 microseg. Ancho de Banda entorno a 300 MB/s Precio: 1200 por tarjeta + Switch (~ 12,000 / 32 puertos) III. Infiniband Latencias entorno a 5 microseg. Ancho de Banda entorno a 1GB/s Precio: ~ 20,000 / 32 puertos

Red Myrinet Componentes de una red Myrinet (Myrinet 2000) Cada nodo tiene una tarjeta PCI-X con una o dos conexiones (490MB/s y 900 MB/s respectivamente) Las tarjetas se conectan con un cable Myrinet (fibra óptica) a un switch multi-puerto (hasta 32 puertos por switch). Para redes mayores: combinaciones de switches (Myrinet Network in a box) Software Myrinet (libre) Detecta la red Myrinet presente de manera automática (no hay que configurar el switch) GM: software de paso de mensajes de bajo nivel sobre el que funcionan aplicaciones de alto nivel como MPI Myrinet Express (MX) Conectado a un slot PCI-Express

Red Myrinet

Red Infiniband Tecnología que trata de dar respuesta a las necesidades de I/O Compartidas en clusters de ordenadores conectados a Storage Area Networks desconectar el I/O al exterior, del resto de procesos de la máquina

Arquitectura de Infiniband

Infiniband System Bus Hub Link Slot PCI-X Pentium 4 System Logic South Bridge HCA Switch IB @ 25Gb/s @ 8Gb/s @ 8Gb/s 4X IB @ 20Gb/s Pentium 4 System Logic PCI @ 20Gb/s Express South Bridge PCI @ 20Gb/s Express HCA Switch IB @ 25Gb/s 4X IB @ 20Gb/s PCI Express Pentium 4 System Logic I/O Bridge Con HCA Switch IB @ 25Gb/s @ 80 Gb/s 12X IB @ 60Gb/s

Integración de Infiniband

Ejemplo de Hardware Infiniband

Hardware Infiniband

Ejercicio: el benchmark de Intel MPI Benchmark

Descripción del Benchmark Medida de de la la eficiencia de de la la intranet de de un un cluster con con respecto a la la ejecución de de procesos MPI MPI Descargar de de http://wwwiscampos.ifca.es/users/iscampos/docs/gridseciencia/imb_3.1.tgz

Ejercicio Descargar e instalar el IMB y compilarlo en el frontend de un cluster con alguna implementación de MPI instalada Compiladores de Intel Usar el IMB para averiguar cual es el cluster con mejor intranet al que se tiene acceso en el Grid

Comparación de latencias entre Infiniband y Gigabit Ethernet

Comparación de Anchura de Banda entre Infiniband y Gigabit Ethernet