Linux Week PUCP 2006 “Computación de Alto Rendimiento en Linux” Richard Miguel San Martín [email protected] Agenda • • • • • Computación Científica Computación Paralela High Performance Computing Grid Computing Referencias Computación Científica La computación científica siempre ha cumplido un rol importante en el desarrollo de la computación como ciencia. Inicialmente se desarrolló en el ámbito de computación para cálculo intensivo. Las principales aplicaciones usadas eran compiladores como ForTran y aplicaciones desarrolladas en laboratorios de universidades y en grupos reducidos. Con el tiempo la computación científica fue abriéndose campo en otras áreas mas comerciales y en la actualidad se usa en casi todos los ámbitos. Como ejecutar una aplicación mas rápido? Existen tres maneras de mejorar el rendimiento: • Trabajar Duro. • Trabajar mas rápido. • Pedir Ayuda. En términos computacionales: • Usar hardware mas rápido. • Optimizar algoritmos y usar técnicas para resolver tareas computacionales. • Múltiples computadoras para resolver una tarea especifica. Es decir … COMPUTACION EN PARALELO!!! Computación Paralela Computación Paralela es el uso de múltiples procesadores o múltiples computadores trabajando juntos para realizar una tarea común. - Cada procesador trabaja en una sección del problema. - Los procesadores intercambian datos para resolver el problema. Mesh of problem to be solved y CPU #1 works on this area exchange CPU #2 works on this area of the problem of the problem exchange exchange exchange CPU #3 works on this area exchange CPU #4 works on this area of the problem of the problem x Computadores en Paralelo • Taxonomía de Flynn nos ayuda a clasificar este tipo de computadores: • Se basa en dos criterios: • Data Stream • Instruction Stream Otras consideraciones Memoria: Que clase de Memoria? Red: Cuantos procesadores están interconectados? Granularidad Gruesa (Parallel Vectorial Processing) • Son pocos pero poderosos (Procesadores Vectoriales) Granularidad Fina (Massively Parallel Processors) • Son muchos pero no muy potentes (Procesadores RISC) Paradigma de la Programación: Que Clase de estilo de programación es posible en esta maquina? Como esta organizada la memoria? Memoria Privada y Paso de Mensajes Multicomputadores Memoria Compartida Multiprocesadores (SMPs) Como esta organizada la memoria? -Cada CPU tiene <1/2 de max. de ancho de banda -Dispositivos de I/O y la memoria comparten el mismo bus. -Agregar CPU puede aumentar los problemas. -No es escalable mas allá de las 2 vías. -Cuellos de botella son disminuidos o eliminados. -Agregar CPU implica agregar memoria. -Ancho de banda dedicado entre CPU y memoria. -Existe comunicación directa entre procesadores. -I/O es independiente del acceso a la memoria. High Performance Computing Donde usarla? En problemas que signifiquen grandes retos. • Simulaciones Biológicas (Bioinformática). • Predicción del Tiempo y Clima. • Dinámica de Fluidos. Requerimientos de Cómputo y Memoria: • Una simulación usando códigos de secuencias de proteínas -> 32 GB RAM. • Modelos de pronostico de Tiempo a 48 horas -> 10 15 operaciones de punto flotante (float). En modernas estaciones de trabajo (2 Gflops) se puede llegar a las 300 horas de calculo. Unidades de Medida en High Performance Computing Velocidad del procesador: • floats: operaciones de punto flotante / segundo. • Megaflops / Gigaflops / Teraflops / Petaflops Velocidad de la red: • 10 Mbit/100mbit / 1000 Mbit=1 Gbit Unidad de Tamaño : byte • • • • kbyte/Mbyte ----> caches/RAM Gigabite -----> RAM/hard disks Terabyte -----> Disks/SAN ... Petabyte ------> SAN Cluster de Computadores y su Arquitectura Definición: Es un tipo de sistema paralelo o de procesamiento distribuido, el cual consiste de un grupo de computadores independientes interconectados entre si, trabajando cooperativamente como un único recurso de computación integrado. Clasificación de Clusters : Cuales son las Aplicaciones? Aplicaciones de Misión Critica: • Sistemas de control de comando. • Bancos, E- Commerce. High Availibility (HA) Clusters Aplicaciones Científicas: High Performance (HP) Clusters Clusters Paralelos (Beowulf) Aplicaciones Paralelizadas Clusters HT (High Troughput) (OpenMosix) Aplicaciones Seriales Que se necesita para construir un cluster? La Red en HPC Latencia Que tanto tiempo se demora en abrir el canal de comunicación?. Ancho de banda Que cantidad de datos pueden ser transmitidos en una unidad de tiempo. Software Libre en HPC Sistema Operativo Linux Clusters Tools (ROCKS, Oscar) - http://oscar.openclustergroup.org/ - http://www.cs.wisc.edu/~zandy/rocks/ MPICH - http://www-unix.mcs.anl.gov/mpi/mpich/ OpenMosix - http://openmosix.sourceforge.net/ PVFS - http://www.parl.clemson.edu/pvfs/ Ganglia - http://ganglia.sourceforge.net/ HPC en SENAMHI Cluster Beowulf de 30 nodos. - CPU P4 2.8 Ghz. - 256 MB RAM cada nodo. - 60 GB HD cada nodo. - Red Fast Ethernet. - S.O. Red Hat Linux. Aplicación: Modelamiento climático a largo plazo mediante generación de escenarios para 50 años. Proyecto PROCLIM Proyecto PROCLIM El SENAMHI está participando en el proyecto PROCLIM , en conjunto con otras instituciones con el objetivo de mejorar las capacidad nacional de respuesta a fenómenos climáticos que afecten a nuestro país, así como el mejoramiento del aire. La tarea del SENAMHI en este proyecto es generar escenarios climáticos que permitan prever el cambio climático en los siguientes 50 años. Para realizar esta actividad es necesario usar modelos numéricos de clima que, basándose en ecuaciones matemáticas, permiten obtener pronósticos a largo plazo. Nuestra aplicación • Modelo Numérico basado en ecuaciones diferenciales que asociadas con diferentes variables realizan un análisis del estado de la atmósfera y permite inferir pronósticos a largo plazo. • Permite realizar pronósticos en dominios con muy alta resolución. • Desarrollado por ATMET http://www.atmet.com • Código escrito en Fortran y se encuentra paralelizado. • Realiza comunicación nodo maestro – nodos esclavos, internodos y bidireccional también. Nuestra aplicación • Para la paralelización del código serial este fue dividido en dos tipos: • Master process: (Inicialización y todas las funciones de I/O) • Node compute process: (all computation). • No es necesario que los archivos de salida se almacenen en los nodos, ya que estos retornan al nodo principal. • Esta centralización facilita las tareas de respaldo de datos. Algunos resultados Forecast of winds and temperature on Piura domain for 2016 April. Forecast of winds and temperature on Mantaro domain for 2016 April. Pruebas de Rendimiento 20 22,5 25 27,5 HPC en SENAMHI Cluster de 7 nodos. - HP DL140 2P Intel Xeon. - 1 GB RAM cada nodo. - 80 GB SATA HD cada nodo. - Red Gigabit Ethernet. - S.O. Red Hat Enterprise Linux v. 3.0. / CentOS. - SAN HP MSA1000 7 x 148 GB SCSI Aplicación: Modelamiento de sequías para cuencas prioritarias del Perú. Proyecto Sequías SENAMHI – INDECI. Grid Computing El término “Grid” en computación es un símil al termino “malla” en terminología eléctrica. Esto es, que desde cualquier punto de una red, cualquier usuario puede hacer uso de toda la potencia de esta. También se conoce como computación distribuida. University of Texas Model Grid Grid Computing Ventajas - Eficiente uso de recursos de computo ya que permite ahorrar dinero. - Disminuye el tiempo de respuesta para aplicaciones grandes. - Compartir recursos para acceder a mayores recursos de computo (procesamiento, memoria y almacenamiento. Desventajas - Exige tiempo dedicado a la instalación, configuración y pruebas de software. - Probables problemas de migración de aplicaciones para portarlas al Grid. - Largas sesiones de negociación y políticas de uso. - Exige entrenamiento para el personal de staff y usuarios. Principales Proyectos de Grid Computing http://www.eurogrid.org/ http://www.teragrid.org/ http://www.eela-grid.org/ http://styx.esrin.esa.it/grid/ Software Libre en Grid Computing Sistema Operativo Linux Globus Toolkit http://www.globus.org Condor http://www.cs.wisc.edu/condor/ MPICH http://www-unix.mcs.anl.gov/mpi/mpich/ Referencias • http://www.beowulf.org • http://www.openmosix.org • http://www.linux-ha.org/ • http://www.top500.org/ • http://www-1.ibm.com/grid/ • http://www.gridforum.org/ • http://www.sun.com/software/grid/ • http://lcic.org/ • http:///www.eu-eela.org/ [email protected] [email protected]