Computacion de Alto Performance Abraham Zamudio Abraham Zamudio Computacion de Alto Performance 1/47
Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH 2 MPI Init MPI Finalize MPI Comm size MPI Comm rank MPI Send MPI recv 5 Ejemplos Abraham Zamudio Computacion de Alto Performance 2/47
Definicion Técnicas, investigación e infraestructura entorno a problemas con alta demanda de recursos computacionales. Comprende: High Performance Computing (HPC) Hardware: almacenamiento, procesamiento, redes... Software: sistemas de archivos, programación paralela... Aplicaciones : cálculos complejos, simulación, minería... Abraham Zamudio Computacion de Alto Performance 3/47
Definicion Supercomputación: Máquinas de gran escala, muchos CPUs y mucha memoria Abraham Zamudio Computacion de Alto Performance 4/47
Definicion Computación cluster: Múltiples máquinas en red funcionando como una sola Abraham Zamudio Computacion de Alto Performance 5/47
Definicion Rendimiento se mide en operaciones de punto flotante por segundo (FLOPS) La supercomputadora más rápida del planeta a junio de 2013 es Tianhe-2, una computadora desarrollada por la Universidad Nacional de Tecnología de Defensa de China (NUDT) y ubicada en el Centro Nacional de Supercomputación en Guangzho, República Popular China, tiene un rendimiento de 33,86 petaflops (33.860.000.000.000.000 cálculos de coma flotante por segundo) superando en casi el doble al supercomputador Cray Titan, del Oak Ridge National Laboratory de Estados Unidos, que desde noviembre de 2012 mantenía la corona. Abraham Zamudio Computacion de Alto Performance 6/47
Definicion En la actualidad las máquinas más grandes operan en el orden de petaflops (www.top500.org) Abraham Zamudio Computacion de Alto Performance 7/47
Definicion : Estadisticas Top500.org Procesadores Abraham Zamudio Computacion de Alto Performance 8/47
Definicion : Estadisticas Top500.org Paises Abraham Zamudio Computacion de Alto Performance 9/47
Definicion : Estadisticas Top500.org Vendedores Abraham Zamudio Computacion de Alto Performance 10/47
Definicion : Estadisticas Top500.org Areas Abraham Zamudio Computacion de Alto Performance 11/47
Definicion : Estadisticas Top500.org Sistema Operativo Abraham Zamudio Computacion de Alto Performance 12/47
Definicion : Estadisticas Top500.org Conectividad Abraham Zamudio Computacion de Alto Performance 13/47
Definicion : Estadisticas Top500.org Conectividad Abraham Zamudio Computacion de Alto Performance 14/47
Definicion : Tipos de Computadoras Taxonomía de Flynn La taxonomía de Flynn es una clasificación de arquitecturas de computadores propuesta por Michael J. Flynn a en 1972. Es la clasificación más extendida del paralelismo: a http://arith.stanford.edu/ flynn/ Distingue entre instrucciones y datos Estos pueden ser simples o múltiples Abraham Zamudio Computacion de Alto Performance 15/47
Definicion : Tipos de Computadoras Taxonomía de Flynn - SISD Una instrucción por unidad de tiempo Trabaja sobre una sola variable (datos) Podría utilizar pipelining Ejemplo:Computador con CPU de un núcleo Abraham Zamudio Computacion de Alto Performance 16/47
Definicion : Tipos de Computadoras Taxonomía de Flynn - SIMD Todos los procesadores ejecutan la misma instrucción Ejemplo:GPUs, IBM Cell (PS3) Podrían utilizar datos o variables diferentes Requieren distribución y sincronización Abraham Zamudio Computacion de Alto Performance 17/47
Definicion : Tipos de Computadoras Taxonomía de Flynn - MISD Maquina poco común Múltiples procesadores trabajan sobre los mismos datos Algunos usos posibles: Sistemas tolerantes a fallas y Criptografía Abraham Zamudio Computacion de Alto Performance 18/47
Definicion : Tipos de Computadoras Taxonomía de Flynn - MIMD Cada procesador ejecuta diferentes instrucciones sobre diferentes datos Se pueden construir a partir de componentes SIMD Computadores con múltiples procesadores y cada procesador con múltiples núcleos Abraham Zamudio Computacion de Alto Performance 19/47
Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH 2 MPI Init MPI Finalize MPI Comm size MPI Comm rank MPI Send MPI recv 5 Ejemplos Abraham Zamudio Computacion de Alto Performance 20/47
Que es el Paralelismo Computacional Considera tu aplicacion computacional favorita UN procesador se puede demorar N horas!!!! Abraham Zamudio Computacion de Alto Performance 21/47
Que es el Paralelismo Computacional Porque no usar N procesadores? El concepto es simple : Paralelismo = Usar muchos procesadores para resolver un problema Abraham Zamudio Computacion de Alto Performance 22/47
Porque usar Computo Paralelo? Limites de una CPU Memoria disponible Performance La computacion paralela permite Resolver problemas que no se podria con una CPU Resolver problemas que no se pueden resolver en un tiempo razonable Abraham Zamudio Computacion de Alto Performance 23/47
Porque usar Computo Paralelo? Se pueden ejecutar : Problemas Grandes. Menores Tiempos de procesamiento. Correr simulaciones con resoluciones muy pequeñas. Analizar muchos casos. Modelar modelos fisicos con un realismo sorprendente. Abraham Zamudio Computacion de Alto Performance 24/47
Ejemplo : Pronostico del Tiempo Abraham Zamudio Computacion de Alto Performance 25/47
Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH 2 MPI Init MPI Finalize MPI Comm size MPI Comm rank MPI Send MPI recv 5 Ejemplos Abraham Zamudio Computacion de Alto Performance 26/47
Nodos Abraham Zamudio Computacion de Alto Performance 27/47
Resource Manager - Torque TORQUE es un administrador de recursos Open Source que provee control sobre los trabajos y nodos pertenecientes a un cluster. Torque esta basado en OpenPBS (Version 2.3.12) e incorpora escalabilidad, tolerancia a fallos y parches con caracteristicas extendidas facilitadas por NCSA, OSC, El Departamento de Energia de los Estados Unidos, Sandia, PNNL, University of Buffalo, TeraGrid, y muchas otras organizaciones orientadas a la Computacion de Alto Rendimiento, ademas de asignar recursos en base a peticiones como pueden ser: Arquitectura del procesador, memoria RAM, cantidad de procesadores, tiempo total de ejecucion en los procesadores y de toda la tarea (walltime),etc. Esta version puede ser libremente modificada y redistribuida sujeto a las restricciones de la licencia incluida. Abraham Zamudio Computacion de Alto Performance 28/47
Resource Manager - Torque Troque provee mejoras sobre el estandar de OpenPBS en las siguientes areas : Tolerancia a Fallos Se han agregado chequeos y manejos de condiciones de fallo Reparacion de muchos errores Script de soporte para chequear el estado o salud de los nodos Interfaz de planificacion Interfaz de consultas extendidas proveendo al planificador con informacion mas confiable y exacta Interfaz de control extendidad permitiendo al planificador mayor control sobre el comportamiento del trabajo y sus atributos Permite la recoleccion de estadisticas sobre los trabajos terminados Abraham Zamudio Computacion de Alto Performance 29/47
Resource Manager - Torque Troque provee mejoras sobre el estandar de OpenPBS en las siguientes areas : Escalabilidad Servidor significamentemente mejorado para el modelo de comunicacion MOM Habilidad para manipular grandes clusters Habilidad para manejar trabajos grandes (sobre 2000 procesadores) Habilidad para soportar grandes servidores de mensajes Usabilidad Extensiones de manejo de bitacoras Bitacoras mas entendibles Abraham Zamudio Computacion de Alto Performance 30/47
Scheduler - MAUI MAUI CLUSTER SCHEDULER es un planificador de trabajos Open Source usado en clusters y supercomputadoras. En él se pueden definir politicas de asignacion de recursos, como atributos de las colas, logrando una gestion mas efectiva con caracteristicas tales como: qué proceso corre, cúando y dónde, logrando así una mejor utilización de todos los recursos. Abraham Zamudio Computacion de Alto Performance 31/47
Message Passing Interface - MPI Las bibliotecas de paso de mensajes son herramientas que posibilitan el desarrollo de aplicaciones paralelas en maquinas con memoria distribuida. La funcion de una biblioteca de paso de mensajes es permitir que procesos en maquinas diferentes puedan cambiar informacion a travez de una red de interconexion. Abraham Zamudio Computacion de Alto Performance 32/47
Message Passing Interface - MPI MPI es un estandar adoptado para el desarrolo de una biblioteca de comunicacion a travez de paso de mensajes, siendo este estandar largamente utilizado para la exploracion del paralelismo en arquitecturas caracterizadas por poseer una memoria distribuida. Una de las implementaciones del estandar es MPICH2. Abraham Zamudio Computacion de Alto Performance 33/47
Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH 2 MPI Init MPI Finalize MPI Comm size MPI Comm rank MPI Send MPI recv 5 Ejemplos Abraham Zamudio Computacion de Alto Performance 34/47
Message Passing Interface CHameleon MPICH2 fue diseñado para ser una implementación ampliamente portátil de alto rendimiento del estandar Message Passing Interface (MPI) (MPI-1 y MPI-2). MPICH2 esta pensado para proporcionar una implementación de MPI eficientemente, compatible con diferentes plataformas de computación y comunicación incluyendo clústers de computadores, redes de alta velocidad (Myrinet de 10 Gigabit Ethernet, InfiniBand, Quadrics) y sistemas de computación patentados (Blue Gene, Cray, SiCortex). Abraham Zamudio Computacion de Alto Performance 35/47
Estructura generica de un programa MPI Incluir ficheros de cabecera MPI Definiciones y prototipos de funciones especificas de MPI Definir variables Inicializar el entorno MPI Cada procesador llama a una rutina MPI de inicializacion int main(int argc, char *argv[]) Funciones generales, llamadas a funciones MPI Cerrar comunicaciones MPI Cada procesador llama a una rutina MPI de finalizacion MPI Finalize(); Abraham Zamudio Computacion de Alto Performance 36/47
MPI Init Inicializa la biblioteca de MPI y debe ser llamada antes de cualquier otra rutina MPI. En C MPI Init ( &argc, &argv ); En Fortran call MPI INIT(integer error) Abraham Zamudio Computacion de Alto Performance 37/47
MPI Finalize Termina el ambiente de ejecución de MPI. Cualquier llamada a otra rutina de MPI posterior a esta fallará. En C MPI Finalize(); En Fortran CALL MPI Finalize (integer error) Abraham Zamudio Computacion de Alto Performance 38/47
MPI Comm size Determina el número de procesos en un comunicador. El comunicador representa a un grupo de procesos que pueden intercambiar mensajes entre si dentro de un contexto. Por default el que se emplea es el comunicador universal MPI COMM WORLD. En C MPI Comm size(mpi COMM WORLD,&numproc); En Fortran CALL MPI Comm size ( &MPI COMM WORLD, nprocs, integer error ) Abraham Zamudio Computacion de Alto Performance 39/47
MPI Comm rank Determina el rango de un proceso dentro de un comunicador. El rango es un número entre cero y el total de los procesos menos uno. En C CALL MPI Comm rank ( &MPI COMM WORLD, myrank, integer error ) MPI Comm rank(mpi COMM WORLD,&miproc); En Fortran Abraham Zamudio Computacion de Alto Performance 40/47
MPI Send Se utiliza para enviar datos punto a punto (Bloqueante) En C MPI Send( buffer, cantidad, tipo dato, p destino,etiqueta, comunicador ); Abraham Zamudio Computacion de Alto Performance 41/47
MPI Send void *buffer Puntero al mensaje a enviar int cantidad Numero de elementos de enviar MPI Datatype Tipo de Dato Tipo de elementos a enviar int p destino ID del proceso destino int Etiqueta Etiqueta para marcar mensajes MPI Comm Comunicador Comunicador usado Abraham Zamudio Computacion de Alto Performance 42/47
MPI recv Se utiliza para recibir datos punto a punto (Bloqueante). En C MPI Recv( buffer, cantidad, tipo dato, p fuente,etiqueta, comunicador, status); Abraham Zamudio Computacion de Alto Performance 43/47
MPI Rcvd void *buffer Puntero al mensaje a recibir int cantidad Numero de elementos de recibir MPI Datatype Tipo de Dato Tipo de elementos a recibir int p fuente ID del proceso fuente int etiqueta Filtro para saber que mensajes recibir MPI Comm Comunicador Comunicador usado MPI Status status Status del mensaje Abraham Zamudio Computacion de Alto Performance 44/47
Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH 2 MPI Init MPI Finalize MPI Comm size MPI Comm rank MPI Send MPI recv 5 Ejemplos Abraham Zamudio Computacion de Alto Performance 45/47
#include <mpi.h> #include <stdio.h> int main(int argc, char *argv[]) { int np, p; MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &np ); MPI_Comm_rank( MPI_COMM_WORLD, &p ); printf("soy el proceso %i de un total de %i \n", p, np ); MPI_Finalize(); } Abraham Zamudio Computacion de Alto Performance 46/47
Gracias por su atencion