TUTORIAL : COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Centro de Clculo, Instituto de Computacin FACULTAD DE INGENIERA, UNIVERSIDAD DE LA REPBLICA, URUGUAY Introduccin Computadores paralelos Tcnicas de programacin paralela Aplicaciones Conclusiones CONTENIDO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Conclusiones Importancia de poder satisfacer los requisitos crecientes de poder de cmputo Problemas complicados. Modelos complejos. Grandes volmenes de datos. Capacidad de respuesta en tiempo limitado (sistemas de tiempo real). INTRODUCCIN TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Capacidad de respuesta en tiempo limitado (sistemas de tiempo real). Procesamiento paralelo Varios procesos cooperan para resolver problema comn. Aplicacin de tcnicas de divisin de tareas o de datos para reducir el tiempo de ejecucin de un proceso o una aplicacin, mediante la resolucin simultnea de algunos de los subproblemas generados. Computador paralelo Conjunto de procesadores capaces de trabajar cooperativamente en la resolucin de problemas computacionales. La definicin incluye un amplio espectro: supercomputadoras, procesadores masivamente paralelos (MPP), clusters, etc. Caracterstica fundamental: disponibilidad de mltiples recursos de cmputo. INTRODUCCIN TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO cmputo. Computacin de alto desempeo Ha dejado de ser extica. Posibilitada por avances en diferentes tecnologas: Poder de procesamiento (microprocesadores). Redes (comunicacin de datos). Desarrollo de bibliotecas e interfaces para programacin. EVOLUCIN TECNOLGICA Collosus 2 (UK), primer computador TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO IBM 7030 Stretch (LANL, USA), 1.2 MFLOPS. Zuse Z1 (Ale), primer computador mecnico: 1 op/s. Collosus 2 (UK), primer computador paralelo: 50.000 op/s. ENIAC (USA), 5.000 op/s. IBM NORC (Columbia U, USA), reloj de 1 s., 67.000 op/s. 1938 1946 1948 1954 1964 Intel ASCI Red/9152 (Sandia NL, USA): 1.338 TFLOPS EVOLUCIN TECNOLGICA M-13 (Nauchno-Issledovatesky Institute Vychislitelnyh Kompleksov, URSS): 2.4 GFLOPS 1985 2008 TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Intel ASCI Red/9152 (Sandia NL, USA): 1.338 TFLOPS 1984 1985 1997 2008 Roadrunner (LANL, USA): 1.026 PFLOPS Cray-2/8 (LANL, USA): 3.9 GFLOPS. Similar comportamiento para los indicadores de desempeo. Poder de cmputo. Frecuencia de relojes. Densidad de circuitos en chips de procesadores. Capacidad de almacenamiento secundario. Capacidad de transmisin por bus/red. EVOLUCIN TECNOLGICA TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Capacidad de transmisin por bus/red. Siguen un comportamiento exponencial, con diferentes pendientes. Noviembre de 2011: K computer (RIKEN Advance Institute for Computational Science, Japn) Pico de desempeo real (LINPACK): 10.5 petaflops (10.5 10 15 operaciones de punto flotante por segundo) Pico terico: 11.3 petaflop/s. Fujistsu cluster. 68.544 SPARC64 VIIIfx procesadores 2.0 GHz, 8-core. EVOLUCIN TECNOLGICA TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO 68.544 SPARC64 VIIIfx procesadores 2.0 GHz, 8-core. 1410 terabytes de memoria. 705.024 ncleos de procesamiento. Red de interconexin de seis dimensiones, interfaz basada en Open MPI. Sistema operativo basado en Linux. File system paralelo basado en Lustre, optimizado para escalar hasta varios cientos de petabytes. Kei EVOLUCIN TECNOLGICA TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO EVOLUCIN TECNOLGICA: ARQUITECTURAS TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO EVOLUCIN TECNOLGICA: SISTEMAS OPERATIVOS TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO La tecnologa ha avanzado, permitiendo disponer de mquinas paralelas caseras. Clusters de computadores de bajo costo. Internet surge como una fuente potencial de recursos de computacin ilimitados. Se ha desarrollando la tecnologa grid (y recientemente cloud): INFRAESTRUCTURA TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Se ha desarrollando la tecnologa grid (y recientemente cloud): Permiten compartir recursos informticos (locales o remotos) como si fueran parte de un nico computador. Brinda capacidad de gestionar y distribuir la potencia de clculo disponible en instituciones (investigacin, empresas, etc.) Empresas e investigadores trabajan en diseo de soluciones tecnolgicas en este sentido. Estas alternativas constituyen opciones realistas para disponer de la capacidad de cmputo para resolver problemas en los entornos acadmicos, industriales y empresariales, a bajo costo. Infraestructura de cmputo de alto desempeo de la Facultad de Ingeniera EL CLUSTER FING 1364 ncleos de procesamiento (404 de CPU y 960 de GPU) TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO http://www.fing.edu.uy/cluster CLUSTER FING TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO www.fing.edu.uy/cluster Requerimientos computacionales de problemas complejos. LOS PROBLEMAS TAMBIN CRECEN TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO En este contexto se ha desarrollado activamente la computacin paralela: Basado en el estudio en Universidades e Institutos. Aplicado directamente en la industria, organismos cientficos y las empresas. Computacin paralela: A nivel de instrucciones (pipeline). PROCESAMIENTO PARALELO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO A nivel de instrucciones (pipeline). Paralelismo a travs de hilos (multithreading). Paralelismo de alto nivel: Sobre supercomputadores Sobre mquinas paralelas de bajo costo Computacin paralela de alto nivel: Varios procesos en ejecucin simultnea cooperan para resolver un problema comn El desarrollo de las redes de computadoras ha permitido el procesamiento distribuido. Clusters distribuidos, grid computing y cloud computing. Conceptos Procesadores independientes, con autonoma de procesamiento. Interconexin mediante redes. PROCESAMIENTO DISTRIBUIDO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Cooperacin para lograr un objetivo global. Datos compartidos: varios repositorios de datos. Sincronizacin y comunicacin: En general a travs del pasaje explcito de mensajes. La computacin paralela tiene como principal objetivo la resolucin eficiente de instancias de grandes dimensiones de problemas complejos. Adems, desde el punto de vista del usuario, la computacin paralela debe proveer: Transparencia de la arquitectura y de los mecanismos de interconexin. OBJETIVOS DE LA PROGRAMACIN PARALELA TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Transparencia de la arquitectura y de los mecanismos de interconexin. Simplicidad de uso y confiabilidad. Manejo de excepciones y tolerancia a fallos. Mecanismos para asegurar la portabilidad y la ejecucin en entornos heterogneos. Soporte para lenguajes tradicionales de alto nivel. Las tcnicas de programacin paralela aplican estrategias de DESCOMPOSICIN o PARTICIONAMIENTO de datos y de cmputo, para dividir un problema en subproblemas de menor complejidad. El objetivo primario de la descomposicin ser dividir en forma equitativa tanto los clculos asociados con el problema como los datos sobre los cuales opera el algoritmo. TCNICAS DE PROGRAMACIN PARALELA TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO datos sobre los cuales opera el algoritmo. Segn se enfoque principalmente en la descomposicin de datos o de tareas, resulta una tcnica diferente de programacin paralela. Las tcnicas ms difundidas son las de descomposicin de dominio y descomposicin funcional. DESCOMPOSICIN DE DOMINIO Se concentra en particionar los datos del problema Dividindolos en piezas de (aproximadamente) el mismo tamao Luego se dividen los clculos a realizar Los datos a dividir pueden ser: La entrada del programa TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO La salida calculada por el programa Datos intermedios calculados por el programa No existe una regla general para realizar la divisin de datos, existen algunas sugerencias dadas por: La estructura o geometra del problema La idea de concentrarse primero en las estructuras de datos ms grandes o las accedidas con mayor frecuencia DESCOMPOSICIN DE DOMINIO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Host o Nodo Intermedio Cargar un Par de datos tiempo1 tiempo2 Multiplicar . . . 1. - Cargar programa 2. - Broadcast de Instruccin DESCOMPOSICIN DE DOMINIO MODELO DE PROGRAMA, PROCESAMIENTO SINCRNICO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Nodo 1 Cargar A, B tiempo1 tiempo2 A = A x B . . . . . Nodo 2 Cargar C, D C = C x D . . . Nodo 3 Cargar E, F E = E x F . . . Los nodos reciben y ejecutan Distribuir datos Calcular Calcular Calcular Calcular DESCOMPOSICIN DE DOMINIO MODELO DE PROGRAMA, PROCESAMIENTO ASINCRNICO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Recolectar resultados Calcular Comunicar/sincronizar Calcular Calcular Comunicar/sincronizar Calcular Calcular Comunicar/sincronizar Calcular Calcular Comunicar/sincronizar Calcular Nodo 1 Conseguir datos if ... positivo Hacer algo Nodo 2 Conseguir datos if ... positivo Hacer algo Nodo 3 Conseguir datos if ... positivo Hacer algo Un mismo programa se ejecuta sobre diferentes conjuntos de datos DESCOMPOSICIN DE DOMINIO MODELO DE PROGRAMA, PROCESAMIENTO ASINCRNICO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO - Todos los nodos ejecutan el mismo programa, pero no las mismas instrucciones Hacer algo if ... negati vo Hacer otra cosa if ... es cero Hacer una tercer cosa Hacer algo if ... negati vo Hacer otra cosa if ... es cero Hacer una tercer cosa Hacer algo if ... negativo Hacer otra cosa if ... es cero Hacer una tercer cosa Todos los nodos ejecutan el mismo programa, pero no necesariamente las mismas instrucciones. Procesamiento distribuido en Internet. Objetivos: Bsqueda de indicios de inteligencia extraterrestre. Demostracin prctica de la utilidad de la computacin distribuida. Lanzado en 1999, precursor de ms de 100 proyectos cientficos en el rea. 6 millones de participantes, 3 millones de hosts, 800 TFLOPS. Ms de 2 millones de aos de cmputo. EJEMPLO: SETI@HOME TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Ms de 2 millones de aos de cmputo. DESCOMPOSICIN DE DOMINIO SETI@HOME Distribuir datos TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Calcular Enviar resultados Recolectar resultados Calcular Enviar resultados Calcular Enviar resultados Calcular Enviar resultados Se concentra en particionar las operaciones del problema Se trata de dividir el procesamiento en tareas disjuntas Luego se examinan los datos a utilizar por las tareas definidas Caso tpico: Distribuir cdigo para asociar requerimientos a recursos locales Cada tarea trabaja temporalmente con sus datos locales, pero se requiere comunicacin para lograr la cooperacin DESCOMPOSICIN FUNCIONAL TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO requiere comunicacin para lograr la cooperacin set de instrucciones del problema tarea 1 tarea 2 tarea 3 tarea 4 Programa principal Inicializacin Ejecutar seccin secuencial Configurar segmentos paralelos Bifurcar segmentos paralelos Segmento paralelo 1 Segmento paralelo 2 Segmento paralelo 3 DESCOMPOSICIN FUNCIONAL TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Segmento paralelo 1 Ejecutar una rutina independiente Iniciar/recibir comunicaciones Segmento paralelo 2 Ejecutar una rutina independiente Iniciar/recibir comunicaciones Segmento paralelo 3 Ejecutar una rutina independiente Iniciar/recibir comunicaciones Esperar finalizacin de segmentos paralelos Recibir resultados y combinarlos Realizar operaciones adicionales previendo que deban ser ejecutadas en el futuro (look-ahead execution) Bajo la hiptesis de que hay recursos disponibles para ejecutarlas. if condicion then Funcion1() else Funcion2() PARALELISMO OPTIMISTA TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Funcion2() end if Evaluar Funcin1() y Funcion2() de antemano, independientemente del valor de la condicin. Tpico en aplicaciones de tiempo real. Ejemplo : sistemas que requieren conexin, cajeros automticos. Tpico mecanismo para proveer tolerancia a fallos. En aplicaciones distribuidas en Internet. Incluyen dos o ms tipos de programacin paralela para la resolucin de una misma aplicacin. Comnmente utilizados en programas paralelos distribuidos en Internet (donde existe la posibilidad de disponer de recursos ociosos adicionales). Combina una estrategia tradicional con el paralelismo MODELOS HBRIDOS TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Combina una estrategia tradicional con el paralelismo optimista, para mejorar la eficiencia o proveer tolerancia a fallos. Las principales ventajas son eficiencia y robustez, aunque el manejo de los distintos modelos de paralelismo puede incluir complejidades adicionales. Existen lenguajes y bibliotecas que permiten desarrollar programas paralelos en alto nivel Proveen abstraccin del computador paralelo subyacente Permiten implementar la cooperacin de varios procesos para resolver el problema comn Proveen primitivas/funciones para sincronizacin de procesos, comunicacin de datos, etc. IMPLEMENTACIN TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Proveen primitivas/funciones para sincronizacin de procesos, comunicacin de datos, etc. Proporcionan diversos mecanismos para implementar tolerancia a fallos y excepciones. Dan soporte para asegurar la portabilidad y garantizar la ejecucin en entornos paralelos heterogneos. Amplia aplicabilidad en problemas cientficos. Industriales. Qumica y bioingeniera. Estudio de estructuras moleculares, simulacin de reacciones, espectroscopa. Fluidodinmica. Anlisis de flujos, turbulencias y simulaciones. APLICACIONES de la COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Anlisis de flujos, turbulencias y simulaciones. Mecnica Industrial Diseo asistido. Modelos de elementos finitos. Medicina Estudio del genoma, medicina farmacutica, radioterapia. Electromagnetismo Diseo de dispositivos de grabacin, instrumentos mdicos, tubos de rayos X, pantallas planas. Comerciales Telecomunicaciones Anlisis de trfico, desempeo y calidad de servicio. Redes de control inteligentes. Comercio electrnico Manejo transaccional en lnea. APLICACIONES de la COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Servicios web. Buscadores paralelos (metabuscadores). Sistemas de tiempo real. Bases de datos paralelas. Anlisis de datos. Data mining. Anlisis de mercado, series temporales, etc. Curso de grado, posgrado y actualizacin, Facultad de Ingeniera Dictado ininterrumpidamente desde 1993 Solo tiene como requisitos previos conocimientos bsicos de computacin Amplia gama de asistentes, de varias Facultades, empresas, etc. Dictado en el segundo semestre de cada ao. COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO Dictado en el segundo semestre de cada ao. Detalles en: www.fing.edu.uy/inco/cursos/hpc GRACIAS POR SU ATENCIN TUTORIAL: COMPUTACIN de ALTO DESEMPEO TUTORIAL: COMPUTACIN de ALTO DESEMPEO FACULTAD DE INGENIERA, UNIVERSIDAD DE LA REPBLICA, URUGUAY