Source: http://docplayer.es/2093061-Programacion-multithreading.html
Timestamp: 2017-02-22 13:41:23+00:00

Document:
PROGRAMACIÓN MULTITHREADING - PDF
Download "PROGRAMACIÓN MULTITHREADING"
Esteban Cano Miguélez
1 ECAR 2012 PROGRAMACIÓN MULTITHREADING 1 INTRODUCCIÓN PROGRAMACIÓN MULTITHREADING Sergio Nesmachnow Gerardo Ares Escuela de Computación de Alto Rendimiento (ECAR 2012)2 ECAR 2012 PROGRAMACIÓN MULTITHREADING 2 INTRODUCCIÓN TEMA 1: INTRODUCCIÓN PROGRAMACIÓN MULTITHREADING Escuela de Computación de Alto Rendimiento (ECAR 2012)3 CONTENIDO Objetivos del curso Introducción Arquitecturas secuenciales y paralelas Medidas de performance Arquitecturas multinúcleo Conceptos a nivel del sistema operativo Mecanismos de programación paralela en lenguaje C Introducción a la programación con threads Ambiente de prácticos ECAR 2012 PROGRAMACIÓN MULTITHREADING 3 INTRODUCCIÓN4 ECAR 2012 PROGRAMACIÓN MULTITHREADING 4 INTRODUCCIÓN OBJETIVOS DEL CURSO Presentar los fundamentos de la computación de alto desempeño y su aplicación para la resolución eficiente de problemas con grandes requisitos de cómputo y en escenarios realistas. Introducir los conceptos básicos de la computación paralela en ambientes de memoria compartida. Presentar conceptos, técnicas y herramientas de desarrollo de aplicación inmediata en la practica.5 ECAR 2012 PROGRAMACIÓN MULTITHREADING 5 INTRODUCCIÓN PROGRAMACIÓN PARALELA INTRODUCCIÓN A LA COMPUTACIÓN DE ALTO DESEMPEÑO6 INTRODUCCIÓN Importancia de poder satisfacer los requisitos crecientes de poder de cómputo Problemas complicados. Modelos complejos. Grandes volúmenes de datos. Capacidad de respuesta en tiempo limitado (sistemas de tiempo real). Procesamiento paralelo Varios procesos cooperan para resolver problema común. Aplicación de técnicas de división de tareas o de datos para reducir el tiempo de ejecución de un proceso o una aplicación, mediante la resolución simultánea de algunos de los subproblemas generados. ECAR 2012 PROGRAMACIÓN MULTITHREADING 6 INTRODUCCIÓN7 INTRODUCCIÓN Computador paralelo Conjunto de procesadores capaces de trabajar cooperativamente en la resolución de problemas computacionales. La definición incluye un amplio espectro: supercomputadoras, procesadores masivamente paralelos (MPP), clusters, etc. Característica fundamental: disponibilidad de múltiples recursos de cómputo. Computación de alto desempeño Ha dejado de ser exótica. Posibilitada por avances en diferentes tecnologías: Poder de procesamiento (microprocesadores). Redes (comunicación de datos). Desarrollo de bibliotecas e interfaces para programación. ECAR 2012 PROGRAMACIÓN MULTITHREADING 7 INTRODUCCIÓN8 ECAR 2012 PROGRAMACIÓN MULTITHREADING 8 INTRODUCCIÓN EVOLUCIÓN TECNOLÓGICA Collosus 2 (UK), primer computador paralelo: op/s Zuse Z1 (Ale), primer computador mecánico: 1 op/s ENIAC (USA), op/s. IBM NORC (Columbia U, USA), reloj de 1 µs., op/s IBM 7030 Stretch (LANL, USA), 1.2 MFLOPS.9 ECAR 2012 PROGRAMACIÓN MULTITHREADING 9 INTRODUCCIÓN EVOLUCIÓN TECNOLÓGICA M-13 (Nauchno-Issledovatesky Institute Vychislitelnyh Kompleksov, URSS): 2.4 GFLOPS Cray-2/8 (LANL, USA), 3.9 GFLOPS Intel ASCI Red/9152 (Sandia NL, USA, 1997): TFLOPS.10 ECAR 2012 PROGRAMACIÓN MULTITHREADING 10 INTRODUCCIÓN EVOLUCIÓN TECNOLÓGICA Incremento de poder de cómputo en GFlops (Top500, escala logarítmica!).11 EVOLUCIÓN TECNOLÓGICA Similar comportamiento para otros indicadores. Frecuencia de relojes. Densidad de circuitos en chips de procesadores. Capacidad de almacenamiento secundario. Capacidad de transmisión por bus/red. Siguen el mismo comportamiento exponencial, con diferentes pendientes. ECAR 2012 PROGRAMACIÓN MULTITHREADING 11 INTRODUCCIÓN12 EVOLUCIÓN TECNOLÓGICA Junio de 2008: Petaflop supercomputer (Peta = = ). Roadrunner (LANL), petaflop/s. BladeCenter QS22 Cluster. PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz. Híbrido: 6,562 dual-core AMD Opteron y 12,240 Cell chips. 98 terabytes de memoria. 278 IBM BladeCenter racks (560 m 2 ). 10,000 conexiones (Voltaire Infiniband y Gigabit Ethernet), 90 km de fibra óptica. Otros equipos del Top 5 IBM BlueGene/L (ANL), teraflop/s. IBM BlueGene/P (ANL), teraflop/s. Ranger SunBlade x6420 (U. of Texas), 326 teraflop/s. Jaguar Cray XT4 (ORNL), 205 teraflop/s. ECAR 2012 PROGRAMACIÓN MULTITHREADING 12 INTRODUCCIÓN13 ECAR 2012 PROGRAMACIÓN MULTITHREADING 13 INTRODUCCIÓN EVOLUCIÓN TECNOLÓGICA Roadrunner14 EVOLUCIÓN TECNOLÓGICA Junio de 2010: Jaguar (Oak Ridge National Laboratory, USA), 1.75 petaflop/s. Pico teórico: 2.7 petaflop/s. Cray XT5-HE Cluster AMD x86, 64 bits, Opteron Six Core 2.6 GHz. 299 terabytes de memoria núcleos TB de disco, red de 240 Gb/s. Nebulae (National Supercomputing Centre, China), 1.27 petaflop/s. Pico teórico: 2.98 petaflop/s. Dawning TC3600 Blade. Híbrido: cuad-core Intel X5650 y NVidia Tesla C2050 GPU núcleos. ECAR 2012 PROGRAMACIÓN MULTITHREADING 14 INTRODUCCIÓN15 ECAR 2012 PROGRAMACIÓN MULTITHREADING 15 INTRODUCCIÓN EVOLUCIÓN TECNOLÓGICA Jaguar16 EVOLUCIÓN TECNOLÓGICA Julio de 2011: K computer (RIKEN Advance Institute for Computational Science, Japón) Pico de desempeño real (LINPACK): 8.1 petaflops. Pico teórico: 8.8 petaflop/s. Fujistsu cluster SPARC64 VIIIfx procesadores, 8-core terabytes de memoria núcleos de procesamiento. Red de interconexión seis-dimensional (Tofu), interfaz basada en Open MPI. Sistema operativo basado en Linux. File system paralelo basado en Lustre, optimizado para escalar hasta varios cientos de petabytes. ECAR 2012 PROGRAMACIÓN MULTITHREADING 16 INTRODUCCIÓN17 ECAR 2012 PROGRAMACIÓN MULTITHREADING 17 INTRODUCCIÓN EVOLUCIÓN TECNOLÓGICA Kei18 EVOLUCIÓN TECNOLÓGICA Junio de 2012: Sequoia (DOE/NNSA/LLNL, EUA) Pico de desempeño real (LINPACK): 16.3 petaflops. Pico teórico: 20.1 petaflop/s. IBM cluster cores terabytes de memoria. Red personalizada. Sistema operativo basado en Linux. Uno de los sistemas con mayor eficiencia energética. ECAR 2012 PROGRAMACIÓN MULTITHREADING 18 INTRODUCCIÓN19 ECAR 2012 PROGRAMACIÓN MULTITHREADING 19 INTRODUCCIÓN EVOLUCIÓN TECNOLÓGICA Sequoia20 EVOLUCIÓN TECNOLÓGICA: ARQUITECTURAS ECAR 2012 PROGRAMACIÓN MULTITHREADING 20 INTRODUCCIÓN21 EVOLUCIÓN TECNOLÓGICA: SISTEMAS OPERATIVOS ECAR 2012 PROGRAMACIÓN MULTITHREADING 21 INTRODUCCIÓN22 ECAR 2012 PROGRAMACIÓN MULTITHREADING 22 INTRODUCCIÓN INFRAESTRUCTURA La tecnología ha avanzado, permitiendo disponer de máquinas paralelas caseras. Clusters de computadores de bajo costo. Internet surge como una fuente potencial de recursos de computación ilimitados. Internet 2 amplía la banda y la potencia de comunicación entre equipos. Se ha desarrollando la tecnología grid (y recientemente cloud): Permiten compartir recursos informáticos (locales o remotos) como si fueran parte de un único computador. Brinda capacidad de gestionar y distribuir la potencia de cálculo disponible en la mediana empresa. Empresas de renombre e investigadores trabajan en diseño de soluciones tecnológicas en este sentido.23 ECAR 2012 PROGRAMACIÓN MULTITHREADING 23 INTRODUCCIÓN INFRAESTRUCTURA Las alternativas mencionadas constituyen opciones realistas para tratar de lograr capacidad de cómputo competitivo. Obviamente, sin llegar a los límites de los mejores supercomputadores del Top500. Sin embargo, permiten resolver problemas interesantes en los entornos académicos, industriales y empresariales, con una infraestructura de bajo costo.24 ECAR 2012 PROGRAMACIÓN MULTITHREADING 24 INTRODUCCIÓN CLUSTERS Cluster FING, Facultad de Ingeniería, Universidad de la República, Uruguay25 ECAR 2012 PROGRAMACIÓN MULTITHREADING 25 INTRODUCCIÓN CLUSTER FING TOTAL: 1364 núcleos de procesamiento 404 núcleos de CPU y 960 núcleos de GPU. 880 GB de memoria RAM. 30 TB de almacenamiento RAID, 30 kva de respaldo de batería. Pico teórico de desempeño aproximado de 4000 GFLOPS ( operaciones de punto flotante por segundo) El mayor poder de cómputo disponible en nuestro país de horas de cómputo en setiembre de horas de cómputo en julio de26 ECAR 2012 PROGRAMACIÓN MULTITHREADING 26 INTRODUCCIÓN CLUSTER ESTRUCTURA Nodos de administración (administradores del cluster). Nodos de login (acceso a usuarios). Nodos que brindan acceso a un sistema de archivos paralelo. Nodos de cómputo. Hibrídos, SMP con GPU. Redes: Redes de administración (bajo desempeño, 1x GbE). Redes de acceso al sistema de archivos (alto desempeño: 10x GbE, Infiniband). Redes de aplicación (alto desempeño ej.: 10x GbE, Infiniband).27 CLUSTERS ECAR 2012 PROGRAMACIÓN MULTITHREADING 27 INTRODUCCIÓN28 ECAR 2012 PROGRAMACIÓN MULTITHREADING 28 INTRODUCCIÓN LOS PROBLEMAS TAMBIÉN CRECEN Requerimientos computacionales de problemas complejos.29 ECAR 2012 PROGRAMACIÓN MULTITHREADING 29 INTRODUCCIÓN PROCESAMIENTO PARALELO En este contexto se ha desarrollado activamente el procesamiento paralelo. Basado en el estudio en Universidades e Institutos. Aplicado directamente en la industria, organismos científicos y las empresas. La evolución de la aplicación del paralelismo puede resumirse en: Paralelismo a nivel de bits (4, 8, 16 bits). Se reduce a partir de 32 bits (hoy 64 bits). Paralelismo a nivel de instrucciones. Pipelining, superescalar, ejecución fuera de orden, ejecución especulativa, predicción de saltos.30 ECAR 2012 PROGRAMACIÓN MULTITHREADING 30 INTRODUCCIÓN PROCESAMIENTO PARALELO Evolución de la aplicación del paralelismo. Paralelismo a través de hilos (multithreading). Programación paralela. Sobre supercomputadores. Sobre máquinas paralelas de bajo costo. El desarrollo de las redes de computadoras ha permitido otro avance importante. Procesamiento distribuido. Grid computing y cloud computing.31 ECAR 2012 PROGRAMACIÓN MULTITHREADING 31 INTRODUCCIÓN PROCESAMIENTO PARALELO Ventajas: Mayor capacidad de proceso. Permite ampliar objetivos y campo de trabajo. Permite abordar problemas de mayor complejidad. Permite mejorar calidad y fiabilidad de los resultados. Aumento directo de competitividad. Menor tiempo de proceso. Proporciona más tiempo para otras etapas de desarrollo del producto. Permite hacer frente a sistemas críticos. Reducción de costos. Aprovechar la escalabilidad potencial de recursos.32 ECAR 2012 PROGRAMACIÓN MULTITHREADING 32 INTRODUCCIÓN PROCESAMIENTO DISTRIBUIDO Conceptos Procesadores independientes. Autonomía de procesamiento. Interconexión. Habitualmente mediante redes. Cooperación. Para lograr un objetivo global. Datos compartidos. Varios repositorios de datos. Sincronización. Frecuentemente a través del pasaje explícito de mensajes.33 ECAR 2012 PROGRAMACIÓN MULTITHREADING 33 INTRODUCCIÓN PROCESAMIENTO DISTRIBUIDO Grados de distribución. Hardware y procesamiento. Datos o Estado. Control. La distribución puede ser compleja de manejar, frecuentemente se necesitan herramientas especializadas: Sistemas Operativos de Red. Sistemas Operativos Distribuidos. Bibliotecas de desarrollo.34 ECAR 2012 PROGRAMACIÓN MULTITHREADING 34 INTRODUCCIÓN APLICACIONES Áreas de aplicación (Top500, julio de 2012) sistemas performance35 ECAR 2012 PROGRAMACIÓN MULTITHREADING 35 INTRODUCCIÓN APLICACIONES Utilizar herramientas de desarrollo, simulación y optimización que utilicen paralelismo permite: Reducir el tiempo necesario para desarrollar, analizar y optimizar diversas alternativas de diseño. Obtener resultados más precisos. Abordar casos realistas y escenarios extremos. Analizar alternativas de diseño que en otro caso resultarían intratables. En definitiva, las técnicas de procesamiento posibilitan obtener resultados más precisos de un modo eficiente en la resolución de instancias difíciles de problemas complejos.36 ECAR 2012 PROGRAMACIÓN MULTITHREADING 36 INTRODUCCIÓN APLICACIONES Sectores de aplicación (Top500, julio de 2012) Segments Count Share % Rmax Sum (GF) Rpeak Sum (GF) Processor Sum Academic % Classified % Government % Industry % Research % Vendor % Totals % sistemas performance37 ECAR 2012 PROGRAMACIÓN MULTITHREADING 37 INTRODUCCIÓN APLICACIONES RESUMEN Procesamiento paralelo de gran porte Aplicaciones científicas. Manejo de enormes volúmenes de datos. Procesamiento paralelo de mediano porte Aplicaciones comerciales. Procesamiento transaccional financiero. Bases de datos distribuidas. Programas multithreading. Aplicaciones de escritorio. Procesamiento distribuido. Internet, grid y cloud, web services.38 ECAR 2012 PROGRAMACIÓN MULTITHREADING 38 INTRODUCCIÓN CONSIDERACIONES IMPORTANTES DISEÑO del HARDWARE Tecnología, poder y cantidad de los elementos de procesamiento. Conectividad entre elementos. MECANISMOS de PROGRAMACIÓN Abstracciones y primitivas para cooperación. Mecanismos de comunicación. La clave es la integración de estos aspectos para obtener un mejor desempeño computacional en la resolución de aplicaciones complejas39 ECAR 2012 PROGRAMACIÓN MULTITHREADING 39 INTRODUCCIÓN PROGRAMACIÓN PARALELA ARQUITECTURAS SECUENCIALES Y PARALELAS40 ARQUITECTURAS PARALELAS Modelo estándar de computación: Arquitectura de Von Neumann. CPU única. Ejecuta un programa (único). Accede a memoria. Memoria única. Operaciones read/write. Dispositivos. Neumann János Modelo robusto, independiza al programador de la arquitectura subyacente. Arquitectura de Von Neumann Permitió el desarrollo de las técnicas de programación (estándar). ECAR 2012 PROGRAMACIÓN MULTITHREADING 40 INTRODUCCIÓN41 ECAR 2012 PROGRAMACIÓN MULTITHREADING 41 INTRODUCCIÓN ARQUITECTURAS PARALELAS Extendiendo el modelo a la computación paralela, para lograr abstraer el hardware subyacente. Existen varias alternativas, genéricamente contempladas en el modelo del multicomputador: Varios nodos (CPUs de Von Neumann). Un mecanismo de interconexión entre los nodos. Multicomputador (de memoria distribuida).42 ECAR 2012 PROGRAMACIÓN MULTITHREADING 42 INTRODUCCIÓN ARQUITECTURAS PARALELAS Extendiendo el modelo a la computación paralela... Otras alternativas Multiprocesador de memoria compartida Nodos de Von Neumann. Memoria única. Computador masivamente paralelo Muchísimos nodos (sencillas CPUs estilo Von Neumann). Topología específica para interconexión entre los nodos. Cluster Multiprocesador que utiliza una red LAN como mecanismo de interconexión entre sus nodos.43 ECAR 2012 PROGRAMACIÓN MULTITHREADING 43 INTRODUCCIÓN CATEGORIZACIÓN DE FLYNN Clasificación de arquitecturas paralelas que considera la manera de aplicación de las instrucciones y el manejo de los datos. Datos Instrucciones SI MI SD SISD (MISD) MD SIMD MIMD Michael Flynn Taxonomía de Flynn (1966) S=single, M=multi, I=Instrucción, D=Datos44 Datos ECAR 2012 PROGRAMACIÓN MULTITHREADING 44 INTRODUCCIÓN Datos CATEGORIZACIÓN DE FLYNN Instrucciones Instrucciones Single Instruction Single Data Multiple Instruction Single Data45 Datos ECAR 2012 PROGRAMACIÓN MULTITHREADING 45 INTRODUCCIÓN Datos CATEGORIZACIÓN DE FLYNN Instrucciones Instrucciones Single Instruction Multiple Data Multiple Instruction Multiple Data46 CATEGORIZACIÓN DE FLYNN SISD SIMD MISD MIMD Modelo convencional de Von Neumann. Paralelismo de datos, computación vectorial. Pipelines, arrays sistólicos. Modelo general, varias implementaciones. El curso se enfocará en el modelo MIMD, utilizando procesadores de propósito general o clusters de computadores. El modelo SIMD se estudiará enfocado en el procesamiento de propósito general en procesadores gráficos. ECAR 2012 PROGRAMACIÓN MULTITHREADING 46 INTRODUCCIÓN47 ECAR 2012 PROGRAMACIÓN MULTITHREADING 47 INTRODUCCIÓN ARQUITECTURA SISD Máquina de Von Neumann Un procesador capaz de realizar operaciones aritmético-lógicas secuencialmente, controlado por un programa que se encuentra almacenado en una memoria conectada al procesador. Este hardware está diseñado para dar soporte al procesamiento secuencial clásico, basado en el intercambio de datos entre memoria y registros del procesador, y la realización de operaciones aritmético-lógicas en ellos. UNIDAD de CONTROL MEMORIA ALU ACUMULADOR48 ARQUITECTURA SISD En la década de 1980 se diseñaron computadores secuenciales que no correspondían estrictamente al modelo SISD. A partir de la introducción de los procesadores RISC se comenzaron a utilizar varios conceptos de las arquitecturas paralelas, como el pipelining, la ejecución paralela de instrucciones no dependientes, el prefetching de los datos, etc., para lograr un incremento en la cantidad de operaciones realizadas por ciclo de reloj. Pipeline ECAR 2012 PROGRAMACIÓN MULTITHREADING 48 INTRODUCCIÓN49 ECAR 2012 PROGRAMACIÓN MULTITHREADING 49 INTRODUCCIÓN ARQUITECTURA SISD Aún mejorado, el modelo SISD no fue suficiente. Los problemas crecieron, o surgió la necesidad de resolver nuevos problemas de grandes dimensiones (manejando enormes volúmenes de datos, mejorando la precisión de las grillas, etc.). Si bien las maquinas SISD mejoraron su performance Arquitecturas CISC y RISC. Compiladores optimizadores de código. Procesadores acelerando ciclos de relojes, etc. Aún no fue suficiente, y el ritmo de mejoramiento se desaceleró (principalmente debido a limitaciones físicas). En este contexto se desarrollaron los computadores paralelos.50 ECAR 2012 PROGRAMACIÓN MULTITHREADING 50 INTRODUCCIÓN ARQUITECTURA SIMD bus de instrucciones Unidad de control ALU Memoria Array de PEs CPU simple pequeña memoria local PE PE PE PE PE PE PE PE enable flag puertos i/o PE PE PE PE Processing Element (PE) PE PE PE PE51 ARQUITECTURA SIMD Un único programa controla los procesadores. Util en aplicaciones uniformes Procesamiento de imágenes. Aplicaciones multimedia. Aplicaciones numéricas sobre grillas. Su aplicabilidad está limitada por las comunicaciones entre procesadores. La topología de interconexión es fija. Los elementos de procesamiento tienen capacidad de cómputo limitada (1 bit a 8 bits), por lo que se pueden colocar una gran cantidad por chip (e.g. Connection Machine 2 con 64k PEs). Fueron los primeros multiprocesadores difundidos comercialmente (en la década de 1980). ECAR 2012 PROGRAMACIÓN MULTITHREADING 51 INTRODUCCIÓN52 ECAR 2012 PROGRAMACIÓN MULTITHREADING 52 INTRODUCCIÓN GPUs GPU GPU = Graphics Processing Units. Resurrección de la arquitectura SIMD. Motivada por la industria de los juegos y la televisión digital. Tarjetas de video Programables Lenguaje CG, CUDA, OpenCL. Interfases OpenGL, DirectX. Paralelas La misma función CUDA (CG, OpenCL) se aplica a muchos pixels (datos) al mismo tiempo.53 ECAR 2012 PROGRAMACIÓN MULTITHREADING 53 INTRODUCCIÓN GPU La evolución de su performance no respeta la ley de Moore Escalabilidad interna y externa simultáneamente. La mayoría de las aplicaciones de imágenes son trivialmente paralelas Detalle: Una imagen es una matriz. Consecuencia: Muy eficientes para calculo científico, en particular cuando involucran matrices54 ECAR 2012 PROGRAMACIÓN MULTITHREADING 54 INTRODUCCIÓN GPU La GPU puede verse como un multiprocesador de memoria compartida. Útil para computación de propósito general. Sitios de consulta: General Purpose GPU (GPGPU) Parallel processing with cuda55 ARQUITECTURA MISD Varias unidades funcionales ejecutan diferentes operaciones sobre el mismo conjunto de datos. Las arquitecturas de tipo pipeline pertenecen a esta clasificación Aunque no puramente, ya que pueden modificar los datos sobre los que operan. Otros modelos: arrays sistólicos, FPGA celulares. También pertenecen al modelo MISD los computadores tolerantes a fallos que utilizan ejecución redundante para detectar y enmascarar errores. No existen otras implementaciones específicas. Los modelos MIMD y SIMD son más apropiados para la aplicación del paralelismo tanto a nivel de datos como de control. ECAR 2012 PROGRAMACIÓN MULTITHREADING 55 INTRODUCCIÓN56 ECAR 2012 PROGRAMACIÓN MULTITHREADING 56 INTRODUCCIÓN ARQUITECTURA MIMD Consistieron en el siguiente paso en la evolución de las arquitecturas paralelas. Fueron lentamente despazando al modelo SIMD. A diferencia de los modelos SISD y MISD, las computadoras MIMD pueden trabajar asincrónicamente Los procesadores tienen la capacidad de funcionamiento semi-autónomo. Existen dos tipos de computadores SIMD, de acuerdo al mecanismo utilizado para comunicación y sincronización: MIMD de memoria compartida (fuertemente acopladas). MIMD de memoria distribuída (poco acopladas).57 MIMD CON MEMORIA COMPARTIDA Fáciles de construir. SO convencionales de los SISD son portables. Buena solución para procesamiento transaccional (sistemas multiusuario, bases de datos, etc.) Limitaciones: confiabilidad y escalabilidad. Un fallo de memoria de algún componente puede causar un fallo total del sistema. Incrementar el número de procesadores puede llevar a problemas en el acceso a memoria. Caso de supercomputadores Silicon Graphics. El bus (cuello de botella) limita la escalabilidad a un máximo de pocas decenas de procesadores. Caches locales introducen problema de cache coherence. ECAR 2012 PROGRAMACIÓN MULTITHREADING 58 INTRODUCCIÓN58 MIMD CON MEMORIA COMPARTIDA Mecanismos para compartir los datos. UMA = Uniform Memory Access Acceso uniforme (todos los procesadores acceden a la memoria en el mismo tiempo). Multiprocesadores simétricos (SMP). Pocos procesadores (32, 64, 128, por problemas de ancho de banda del canal de acceso). NUMA = Non-Uniform Memory Access. Colección de memorias separadas que forman un espacio de memoria direccionable. Algunos accesos a memoria son más rápidos que otros, como consecuencia de la disposición física de las memorias (distribuidas físicamente). Multiprocesadores masivamente paralelos (MPP). ECAR 2012 PROGRAMACIÓN MULTITHREADING 59 INTRODUCCIÓN59 ECAR 2012 PROGRAMACIÓN MULTITHREADING 62 INTRODUCCIÓN PROGRAMACIÓN PARALELA MEDIDAS DE PERFORMANCE60 ECAR 2012 PROGRAMACIÓN MULTITHREADING 63 INTRODUCCIÓN EVALUACIÓN DE DESEMPEÑO Objetivos: Estimación de desempeño de algoritmos paralelos. Comparación con algoritmos seriales. Factores intuitivos para evaluar la performance: Tiempo de ejecución. Utilización de los recursos disponibles.61 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO EVALUACIÓN DE DESEMPEÑO El desempeño es un concepto complejo y polifacético. El tiempo de ejecución es la medida tradicionalmente utilizada para evaluar la eficiencia computacional de un programa. El almacenamiento de datos en dispositivos y la transmisión de datos entre procesos influyen en el tiempo de ejecución de una aplicación paralela. La utilización de recursos disponibles y la capacidad de utilizar mayor poder de cómputo para resolver problemas más complejos o de mayor dimensión, son las características más deseables para aplicaciones paralelas.62 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO EVALUACIÓN DE DESEMPEÑO TIEMPO DE EJECUCIÓN El tiempo total de ejecución se utiliza habitualmente como medida del desempeño: Es simple de medir. Es útil para evaluar el esfuerzo computacional requerido para resolver un problema. El modelo de performance que se utilizará en el curso considera como medida fundamental el tiempo de ejecución.63 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO MODELO DE PERFORMACE Métricas como función del tamaño del problema (n), procesadores disponibles (p), número de procesos (U), y otras variables dependientes del algoritmo y/o de características del hardware sobre el que se ejecuta. T ( n, p, U, ) Tiempo de ejecución de un programa paralelo Tiempo que transcurre entre el inicio de la ejecución del primer proceso hasta el fin de ejecución del último proceso. Diferentes estados: procesamiento efectivo, comunicación y ocioso. T T PROC T COM T IDLE p tareas ejecutando en p procesadores, tiempos del procesador i en la etapa correspondiente (estadísticas sobre utilización de recursos). f T 1 P P i 1 T i PROC P i 1 T i COM P i 1 T i IDLE64 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO TIEMPO DE EJECUCIÓN El tiempo de cómputo depende de 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). El tiempo de comunicación depende de localidad de procesos y datos (comunicación inter e intra-procesador, canal de comunicación). Costo de comunicación interprocesador: tiempo necesario para el establecimiento de la conexión (latencia) y tiempo de transferencia de información (dado por ancho de banda del canal físico). Para enviar un mensaje de L bits, se requiere un tiempo (siendo T TR T latencia L. T TR el tiempo necesario para transferir un bit).65 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO TIEMPO DE EJECUCIÓN El tiempo en estado ocioso es consecuencia del no determinismo en la ejecución, minimizarlo debe ser un objetivo del diseño. Motivos: ausencia de recursos de cómputo disponibles o ausencia de datos sobre los cuales operar. Soluciones: aplicar técnicas de balance de carga para distribuir los requerimientos de cómputo o rediseñar el programa para distribuir los datos adecuadamente.66 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO MEJORA DE DESEMPEÑO SPEEDUP Es una medida de la mejora de rendimiento (performance) de una aplicación al aumentar la cantidad de procesadores (comparado con el rendimiento al utilizar un solo procesador). SPEEDUP ABSOLUTO S N = T 0 / T N Siendo: T 0 el tiempo del mejor algoritmo secuencial que resuelve el problema (considerando el tiempo de ejecución, o sea el algoritmo más rápido que lo resuelve). T N el tiempo del algoritmo paralelo ejecutado sobre N procesadores.67 SPEEDUP Siendo T K el tiempo total de ejecución de una aplicación utilizando K procesadores. Se define el SPEEDUP ALGORÍTMICO como S N = T 1 / T N Siendo T 1 el tiempo en un procesador (serial) y T N el tiempo paralelo. El speedup algorítmico es el más utilizado frecuentemente en la práctica para evaluar la mejora de desempeño (considerando el tiempo de ejecución) de programas paralelos. El speedup absoluto es difícil de calcular, porque no es sencillo conocer el mejor algoritmo serial que resuelve un problema determinado. COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO68 SPEEDUP Al medir los tiempos de ejecución, debe considerarse la configuración de la máquina paralela utilizada. Comparación justa: Para calcular speedup absoluto utilizar el mejor algoritmo serial disponible (o el mejor conocido, en caso de no existir una cota inferior para su complejidad). Debe analizarse el hardware disponible. Coeficientes ( pesos ) asignados a los equipos en máquinas heterogéneas. Tomar en cuenta el asincronismo: medidas estadísticas. Existen algoritmos diseñados para la comprobación (benchmarks). COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO69 SPEEDUP La situación ideal es lograr el speedup lineal. Al utilizar p procesadores obtener una mejora de factor p. La realidad indica que es habitual obtener speedup sublineal. Utilizar p procesadores no garantiza una mejora de factor p. Causas: procesamiento no paralelizable, demoras en las comunicaciones y sincronizaciones, tiempos ociosos, etc. En ciertos casos es posible obtener valores de speedup superlineal. Tomando partido de ciertas características especiales del problema o del hardware disponible. COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO70 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO SPEEDUP Speedup lineal sublineal supralineal Número de procesadores Speedup lineal, sublineal y supralineal71 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO SPEEDUP Motivos que impiden el crecimiento lineal del SPEEDUP: Demoras introducidas por las comunicaciones. Overhead en intercambio de datos. Overhead en trabajo de sincronización. Existencia de tareas no paralelizables. Cuellos de botella en el acceso a recursos de hardware necesarios. Los factores mencionados incluso pueden producir que el uso de más procesadores sea contraproducente para la performance de la aplicación.72 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO EFICIENCIA COMPUTACIONAL La eficiencia computacional se define mediante: E N = T 1 /(N T N ) Es decir, E N = S N / N. Corresponde a un valor normalizado del speedup (entre 0 y 1), respecto a la cantidad de procesadores utilizados. Es una medida relativa que permite la comparación de desempeño en diferentes entornos de computación paralela. Valores de eficiencia cercanos a uno identificarán situaciones casi ideales de mejora de performance.73 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO PARALELICIBILIDAD/ESCALABILIDAD La paralelicibilidad (o escalabilidad) de un algoritmo paralelo se define como: P = TP 1 / TP N Siendo: TP1 el tiempo que toma a un computador paralelo ejecutar un algoritmo paralelo en un único procesador. TP N el tiempo que toma al mismo computador paralelo ejecutar el mismo algoritmo paralelo en N procesadores.74 PARALELICIBILIDAD/ESCALABILIDAD Diferencias con el speedup El speedup considera el tiempo de un algoritmo secuencial (el mejor existente o conocido) para la comparación. La paralelicibilidad toma en cuenta el tiempo de ejecución de un algoritmo paralelo en un único procesador. El speedup evalúa la mejora de desempeño al utilizar técnicas de programación paralela. La paralelicibilidad da una medida de cuán paralelizable o escalable resulta el algoritmo paralelo utilizado. COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO75 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO ESCALABILIDAD Capacidad de mejorar el desempeño al utilizar recursos de cómputo adicionales para la ejecución de aplicaciones paralelas. Eventualmente, para resolver instancias más complejas de un determinado problema. Constituye una de las principales características deseables de los algoritmos paralelos y distribuidos.76 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO EJEMPLO Si el mejor algoritmo secuencial para resolver un problema requiere 8 unidades de tiempo para ejecutar en uno de los nodos de un computador paralelo homogéneo y 2 unidades al utilizar 5 procesadores. El speedup obtenido al paralelizar la solución es: S 5 = T 1 / T 5 = 8 / 2 = 4. La eficiencia toma en cuenta la cantidad de procesadores utilizados: E 5 = S 5 / 5 = 4 / 5 = 0,8. Corresponde a un speedup sublineal. La paralelicibilidad toma en cuenta al mismo algoritmo paralelo para la medición de tiempos. Suponiendo que el algoritmo paralelo toma ventajas de la estructura del problema y ejecuta en un único procesador en 6 unidades de tiempo, se tendrá : P 5 = TP 1 / TP 5 = 6 / 2 = 3.77 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO OTROS MODELOS DE DESEMPEÑO EVALUANDO la UTILIZACIÓN de RECURSOS DISPONIBLES UTILIZACIÓN Mide el porcentaje de tiempo que un procesador es utilizado durante la ejecución de una aplicación paralela. USO = tiempo ocupado / (tiempo ocioso + tiempo ocupado) Lo ideal es mantener valores equitativos de utilización entre todos los procesadores de una máquina paralela.78 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO PROGRAMACIÓN PARALELA LEY DE AMDAHL Y OBJETIVO DE LA COMPUTACIÓN PARALELA79 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO LEY DE AMDAHL 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. Ejecución en un procesador T S T P Gene Amdahl Ejecución en un multiprocesador T S T P /n tiempo80 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO LEY DE AMDAHL Sea P la fracción de un programa que es paralelizable, y sea S = 1 P la parte secuencial restante, entonces el speedup al trabajar con N procesadores estará acotado por: S N 1 / (S + P / N) El valor asintótico para S N es 1/S. Ejemplo: Si solo el 50% de un programa es paralelizable, S = P = ½, se tiene que S N = 2 / (1 + 1/N) que será 2 (valor asintótico), independientemente de N (cantidad de procesadores utilizados). Visión sombría del procesamiento paralelo (conjetura de Minsky) La cota inferior del tiempo de ejecución de un programa paralelo es O(log 2 N), y funciona como valor asintótico para la mejora de tiempos de ejecución.81 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO LEY DE AMDAHL UNA VISIÓN MÁS OPTIMISTA Asumiendo que: el tamaño (o la complejidad) del problema (n) crece con el numero de procesadores a usar. la parte secuencial del programa (Ts) se mantiene constante. la parte paralela del programa (Tp) crece según el tamaño del problema (n Tp, n 2 Tp, etc). Entonces las fracciones de tiempo de ejecución de las partes secuencial y paralela del programa resultan: S = Ts / ( Ts + n Tp) P = n Tp / ( Ts + n Tp)82 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO LEY DE AMDAHL UNA VISIÓN MÁS OPTIMISTA Una interpretación más optimista Del razonamiento anterior es posible deducir que: siendo u = Tp/Ts. S N N ( 1 + n u ) / ( N + n u ) Se concluye que dado un número de recursos de cómputo N, existirán problemas de complejidad n cuyas partes serial y paralela cumplan que n u N y entonces la cota teórica corresponde al speedup lineal: S N N.83 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO LEY DE AMDAHL ARGUMENTO DE GUSTAFFSON-BARSIS La idea detrás del argumento optimista tiene el valor de tomar en cuenta la COMPLEJIDAD de las tareas realizadas. Habitualmente las tareas no paralelizables son de complejidad lineal (O(n)), como las lecturas de datos de entrada, mientras que los algoritmos paralelizables tienen una complejidad mayor. Si se logra reducir el orden de complejidad del algoritmo mediante el uso de múltiples procesadores, el speedup ideal sería O(n). speedup = O(n)+O(n 3 ) / (O(n)+O(n 2 )) cuyo valor asintótico es O(n) ( O(N)) Gustaffson (1988): Es posible alcanzar valores de speedup de O(N).84 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO LEY DE AMDAHL CONCLUSIÓN 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.85 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO FACTORES QUE AFECTAN EL DESEMPEÑO GRANULARIDAD Cantidad de trabajo que realiza cada nodo TAREA operación sobre bits una instrucción un proceso GRANULARIDAD super fino (extremely fine grain) grano fino (fine grain) grano grueso (large grain) Aumentar la granularidad: Disminuye el overhead de control y comunicaciones. Disminuye el grado de paralelismo.86 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO FACTORES QUE AFECTAN EL DESEMPEÑO LATENCIA Bits transferidos Thoughput (bit/s) latencia tiempo Los tiempos de comunicación entre procesadores dependen del ancho de banda disponible y de la LATENCIA del canal. Latencias altas implicarán utilizar alta granularidad (comunicaciones menos frecuentes, mensajes mas largos, etc.).87 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO DESEMPEÑO DE ALGORITMOS PARALELOS El OBJETIVO del diseño de aplicaciones paralelas es lograr un compromiso entre: El grado de paralelismo obtenido. El overhead introducido por las tareas de sincronización y comunicación. Las técnicas de scheduling y de balance de carga son útiles para mejorar el desempeño de aplicaciones paralelas.88 COMPUTACIÓN DE ALTA PERFORMANCE 2011 EVALUACIÓN DE DESEMPEÑO PROGRAMACIÓN PARALELA ARQUITECTURAS MULTINÚCLEO89 ECAR 2012 PROGRAMACIÓN MULTITHREADING 92 INTRODUCCIÓN TECNOLOGÍAS DE PROCESADORES Utilizando los avances tecnológicos, hasta la década de 2000 los fabricantes de procesadores prácticamente duplicaban la cantidad de transistores en un chip de 18 a 24 meses. Este ritmo se mantuvo hasta llegar a los límites físicos permitidos. El desarrollo de transistores se movió de un tamaño de 90nm a 65nm, lo que permite tener mas transistores en un chip. Sin embargo, existen reportes que pronostican que una vez que se alcance los 16nm en tamaño, el proceso no podrá controlar el flujo de los electrones a medida que el flujo se mueva a través de los transistores. De esa forma, llegará un momento que los chips no podrán ser más pequeños. Asimismo, al reducir su tamaño e incrementar su densidad, los chips generan mayor calor, causando errores en el procesamiento.90 ECAR 2012 PROGRAMACIÓN MULTITHREADING 93 INTRODUCCIÓN MULTINÚCLEOS (MULTICORE) La tecnología de procesadores multinúcleo constituye una alternativa para mejorar la performance a pesar de las limitaciones físicas. Sin duda, los sistemas multinúcleo proponen mayores desafíos en cuanto al desarrollo de sistemas ya que se debe tener en cuenta que en el microtiempo se ejecuta más de una instrucción en el mismo equipamiento. Sin embargo, un buen uso de la tecnología puede implicar un beneficio importante en el poder de procesamiento. Intel Core 2 Duo E6750 AMD Athlon X91 ECAR 2012 PROGRAMACIÓN MULTITHREADING 94 INTRODUCCIÓN PRIMERAS TECNOLOGÍAS AMD MULTINÚCLEO En 2005, AMD lanzó la línea de procesadores Opteron con una tecnología que denominó Direct Connect Arquitecture, la cual integraba el controlador de memoria en el mismo chip del procesador. AMD también dispuso de una memoria cache de segundo nivel (L2 cache) independiente para cada procesador. Para interconectar los dos procesadores se presentó un crossbar switch de alto desempeño que permitía el acceso cruzado a la memoria. La interconexión con los dispositivos de entrada/salida se realizaba a través de la tecnología HyperTransport.92 AMD DUAL-CORE ECAR 2012 PROGRAMACIÓN MULTITHREADING 95 INTRODUCCIÓN93 ECAR 2012 PROGRAMACIÓN MULTITHREADING 96 INTRODUCCIÓN PRIMERAS TECNOLOGÍAS INTEL MULTINÚCLEO Los procesadores Intel mantuvieron la interconexión a través de un chipset compuesto por el NorthBridge y el SouthBridge. El NorthBridge contiene el controlador de acceso a la memoria RAM. El SouthBridge permite la interconexión con dispositivos de entrada/salida. El bus de interconexión entre los procesadores entre el procesador y el controlador de memoria es denominado FSB (Front Side Bus). De esta forma, los procesadores Intel mantuvieron el sistema UMA. En este caso, a diferencia de lo propuesto por AMD, los núcleos compartían la memoria cache de segundo nivel (L2 cache).94 INTEL NORTH-SOUTH BRIDGE ECAR 2012 PROGRAMACIÓN MULTITHREADING 97 INTRODUCCIÓN95 ECAR 2012 PROGRAMACIÓN MULTITHREADING 98 INTRODUCCIÓN COMBINANDO PROCESADORES MULTINÚCLEO A medida que la tecnología avanzó se incorporaron más procesadores por equipo, logrando combinar multiprocesadores con multinúcleo. La tecnología pasó a ser de un sistema NUMA. Los procesadores tienen acceso a toda la memoria (global), pero acceden a la memoria con diferentes velocidades.96 ECAR 2012 PROGRAMACIÓN MULTITHREADING 99 INTRODUCCIÓN TECNOLOGÍAS QUAD-CORE El siguiente paso fue abordar los procesadores quad-core. AMD propuso el chip denominado Barcelona que incluyó una memoria cache de segundo nivel (más reducida) particular de cada núcleo y una gran memoria cache de tercer nivel compartida por los cuatro núcleos.97 ECAR 2012 PROGRAMACIÓN MULTITHREADING 100 INTRODUCCIÓN TECNOLOGÍAS QUAD-CORE Otro gran avance fue la inclusión de nuevas instrucciones (SSE128) en la arquitectura que permitieron operaciones de 128 bits. Estas operaciones permiten 4 operaciones de punto flotante de doble precisión por ciclo de reloj. Dos operaciones hechas a través de la multiplicación y dos a través de la suma. Por otro lado, Intel siguió con su arquitectura de FSB pero con una cache de segundo nivel compartida por dos procesadores y de mayor tamaño. A su vez, propuso el movimiento a procesadores de tamaño de 45nm. Recién a partir de la familia de procesadores Nehalem, Intel desecho el FSB para pasar la controladora de memoria en el procesador. De esta forma, incorporó una tecnología similar a la de AMD y paso a un sistema NUMA. Intel adoptó la tecnología de interconexión Quick-Path Interconnect (QPI) para la comunicación entre los procesadores y también para el acceso al chipset de entrada/salida.98 ECAR 2012 PROGRAMACIÓN MULTITHREADING 101 INTRODUCCIÓN TECNOLOGÍAS ACTUALES Y FUTURAS Actualmente Intel propone a través de la línea Sandy-Bridge procesadores de 32nm de seis núcleos (hexa-core). AMD brinda el procesador Istanbul de seis núcleos y Magny-Cours de ocho y doce núcleos (Sao Paulo) respectivamente, aunque se ha mantenido en procesadores de 45nm.99 ECAR 2012 PROGRAMACIÓN MULTITHREADING 102 INTRODUCCIÓN TECNOLOGÍAS ACTUALES Y FUTURAS AMD anuncia la disponibilidad de procesadores basados en la tecnologia Bulldozer a partir de setiembre de La tecnología es de 32nm y hasta 16 cores. Presenta cores que comparten la FPU.100 ECAR 2012 PROGRAMACIÓN MULTITHREADING 103 INTRODUCCIÓN TECNOLOGÍAS ACTUALES Y FUTURAS Intel lanzó este año la tecnología Sandy-Bridge con hasta X núcleos. Esta tecnología alcanzaría procesadores de 22nm. Implementan la extensión AVX (Advanced Vector extensions) para registros SSE de 256 bits. De este modo se logran 8 operaciones de punto flotante en doble precisión por núcleo. Ivy Bridge será el salto a 22nm utilizando esta tecnología.101 ECAR 2012 PROGRAMACIÓN MULTITHREADING 104 INTRODUCCIÓN MULTI-CORE y MULTI-THREADS Las arquitecturas multinúcleo son útiles y eficientes para implementar programas multi-threads. Los threads (o hilos) son las unidades de procesamiento. Múltiples threads de un proceso son capaces de compartir estado e información (memoria y otros recursos). Los threads comparten el espacio de direccionamiento (variables). Los threads son capaces de comunicarse sin utilizar mecanismos explícitos de IPC. El cambio de contexto entre threads es más veloz que entre procesos. La programación multithreading será estudiada más adelante en el curso.102 ECAR 2012 PROGRAMACIÓN MULTITHREADING 105 INTRODUCCIÓN PROGRAMACIÓN PARALELA CONCEPTOS A NIVEL DEL SISTEMA OPERATIVO103 ECAR 2012 PROGRAMACIÓN MULTITHREADING 106 INTRODUCCIÓN DEFINICIÓN DE PROCESO El principal concepto en cualquier sistema operativo es el de proceso. Un proceso es un programa en ejecución, incluyendo el valor del program counter, los registros y las variables. Conceptualmente, cada proceso tiene un hilo (thread) de ejecución que es visto como un CPU virtual. El recurso procesador es alternado entre los diferentes procesos que existan en el sistema, dando la idea de que ejecutan en paralelo (multiprogramación)104 ECAR 2012 PROGRAMACIÓN MULTITHREADING 107 INTRODUCCIÓN CONTADOR DE PROGRAMA Cada proceso tiene su program counter, y avanza cuando el proceso tiene asignado el recurso procesador. A su vez, a cada proceso se le asigna un número que lo identifica entre los demás: identificador de proceso (process id).105 ECAR 2012 PROGRAMACIÓN MULTITHREADING 108 INTRODUCCIÓN MEMORIA DE LOS PROCESOS Un proceso en memoria se constituye de varias secciones: Código (text): Instrucciones del proceso. Datos (data): Variables globales del proceso. Memoria dinánica (heap): Memoria dinámica que genera el proceso. Pila (stack): Utilizado para preservar el estado en la invocación anidada de procedimientos y funciones.106 ECAR 2012 PROGRAMACIÓN MULTITHREADING 109 INTRODUCCIÓN ESTADOS DE LOS PROCESOS El estado de un proceso es definido por la actividad corriente en que se encuentra. Los estados de un proceso son: Nuevo (new): Cuando el proceso es creado. Ejecutando (running): El proceso tiene asignado un procesador y está ejecutando sus instrucciones. Bloqueado (waiting): El proceso está esperando por un evento (que se complete un pedido de E/S o una señal). Listo (ready): El proceso está listo para ejecutar, solo necesita del recurso procesador. Finalizado (terminated): El proceso finalizó su ejecución.107 ECAR 2012 PROGRAMACIÓN MULTITHREADING 110 INTRODUCCIÓN ESTADOS DE LOS PROCESOS Diagrama de estados y transiciones de los procesos:108 ECAR 2012 PROGRAMACIÓN MULTITHREADING 111 INTRODUCCIÓN COOPERACIÓN ENTRE PROCESOS Procesos concurrentes pueden ejecutar en un entorno aislado (se debe asegurar la ausencia de interferencias) o, eventualmente, podrán interactuar cooperando en pos de un objetivo común compartiendo objetos comunes. Es necesario que el sistema operativo brinde unas herramientas específicas para la comunicación y sincronización entre los procesos (Inter Process Communication IPC). IPC es una herramienta que permite a los procesos comunicarse y sincronizarse sin compartir el espacio de direccionamiento en memoria. Hay dos enfoques fundamentales: Memoria compartida. Pasaje de mensajes.109 HILOS (THREADS) Hay aplicaciones donde es necesario utilizar procesos que compartan recursos en forma concurrente. IPC brindan una alternativa a nivel de sistema operativo. Los sistemas operativos modernos están proporcionando servicios para crear más de un hilo (thread) de ejecución (control) en un proceso. Con las nuevas tecnologías multi-core esto se hace algo necesario para poder sacar mayor provecho al recurso de procesamiento. De esta forma, se tiene más de un hilo de ejecución en el mismo espacio de direccionamiento. ECAR 2012 PROGRAMACIÓN MULTITHREADING 112 INTRODUCCIÓN110 HILOS (THREADS) Un Thread (Hilo) es una unidad básica de utilización de la CPU consistente en un juego de registros y un espacio de pila. Es también conocido como proceso ligero. Cada thread contendrá su propio program counter, un conjunto de registros, un espacio para el stack y su prioridad. Comparten el código, los datos y los recursos con sus hebras (thread) pares. Una tarea (o proceso pesado) está formado ahora por uno o varios threads. Un thread puede pertenecer a una sola tarea. ECAR 2012 PROGRAMACIÓN MULTITHREADING 113 INTRODUCCIÓN111 ECAR 2012 PROGRAMACIÓN MULTITHREADING 114 INTRODUCCIÓN HILOS (THREADS) Todos los recursos, sección de código y datos son compartidos por los distintos threads de un mismo proceso.112 ECAR 2012 PROGRAMACIÓN MULTITHREADING 115 INTRODUCCIÓN VENTAJAS DEL USO DE THREADS Repuesta: Desarrollar una aplicación con varios hilos de control (threads) permite tener un mejor tiempo de respuesta. Compartir recursos: Los threads de un proceso comparten la memoria y los recursos que utilizan. A diferencia de IPC, no es necesario acceder al kernel para comunicar o sincronizar los hilos de ejecución. Economía: Es más fácil un cambio de contexto entre threads ya que no es necesario cambiar el espacio de direccionamiento. A su vez, es más liviano para el sistema operativo crear un thread que crear un proceso nuevo. Utilización de arquitecturas con multiprocesadores: Disponer de una arquitectura con más de un procesador permite que los threads de un mismo proceso ejecuten en forma paralela.113 ECAR 2012 PROGRAMACIÓN MULTITHREADING 116 INTRODUCCIÓN TIPOS DE THREADS Los threads pueden ser implementados tanto a nivel de usuario como a nivel de sistemas operativo: Hilos a nivel de usuario (user threads): Son implementados en alguna librería de usuario. La librería deberá proveer soporte para crear, planificar y administrar los threads sin soporte del sistema operativo. El sistema operativo solo reconoce un hilo de ejecución en el proceso. Hilos a nivel del núcleo (kernel threads): El sistema es quien provee la creación, planificación y administración de los threads. El sistema reconoce tantos hilos de ejecución como threads se hayan creado.114 ECAR 2012 PROGRAMACIÓN MULTITHREADING 117 INTRODUCCIÓN MODELOS DE THREADS La mayoría de los sistemas proveen threads tanto a nivel de usuario como de sistema operativo. De esta forma surgen varios modelos: Mx1 (Many-To-One): Varios threads de a nivel de usuario a un único thread a nivel de sistema. 1x1 (One-to-One): Cada threads de usuario se corresponde con un thread a nivel del núcleo (kernel thread). MxN (Many-To-Many): Varios threads a nivel de usuario se corresponde con varios threads a nivel del núcleo.115 ECAR 2012 PROGRAMACIÓN MULTITHREADING 118 INTRODUCCIÓN MODELO MX1 Este caso se corresponde al de tener los threads implementados a nivel de usuario. El sistema solo reconoce un thread de control para el proceso. Los threads de usuario ejecutarán cuando estén asignados al kernel thread del proceso (tarea llevada a cabo por el planificador a nivel de usuario) y, además, a este le asigne la CPU el planificador del sistema operativo.116 MODELO 1X1 Cada thread que es creado a nivel de usuario se genera un nuevo thread a nivel de sistema que estará asociado mientras exista. El sistema reconoce todos los threads a nivel de usuario y son planificados independientemente. En este caso no hay planificador a nivel de usuario. ECAR 2012 PROGRAMACIÓN MULTITHREADING 119 INTRODUCCIÓN117 ECAR 2012 PROGRAMACIÓN MULTITHREADING 120 INTRODUCCIÓN MODELO MXN Cada proceso tiene asignado un conjunto de kernel threads independiente de los threads a nivel de usuario que el proceso haya creado. El planificador a nivel de usuario asigna los threads en los kernel threads. El planificador de sistema solo reconoce los kernel threads.118 ECAR 2012 PROGRAMACIÓN MULTITHREADING 121 INTRODUCCIÓN PROGRAMACIÓN PARALELA MECANISMOS PARA PROGRAMACIÓN PARALELA EN LENGUAJE C119 ECAR 2012 PROGRAMACIÓN MULTITHREADING 122 INTRODUCCIÓN fork(): CREACION DE PROCESOS La primitiva fork crea un proceso hijo del proceso que realiza la invocación ( clonación del proceso). Se crea una copia exacta del proceso que la invoca, pero con otro PID. El padre recibe el PID del hijo, y el hijo recibe 0. Se copia el área de datos (incluyendo archivos abiertos y sus descriptores asociados). pid_t pid;... if ((pid = fork()) == 0) { // proceso hijo } else { // proceso padre }... user :04 pts/4 00:00:55./proceso_fork user :04 pts/4 00:00:02./proceso_fork120 ECAR 2012 PROGRAMACIÓN MULTITHREADING 123 INTRODUCCIÓN fork - wait La primitiva wait permite que el padre reciba una notificación cuando el hijo termina su ejecución. Si el padre muere antes que el hijo, el hijo queda huérfano. El proceso "init" (PID=1) de Unix hereda a los huérfanos. Si el hijo termina pero el padre no acepta su código de terminación (usando wait), el proceso pasa a estado zombi (no consume recursos salvo una entrada en la tabla de procesos). La llamada wait permite al padre recibir un valor del hijo. Este valor es de 8 bits; los otros 8 bits (MSB) son valores de estado. wait retorna el PID del hijo que termino. El proceso hijo puede retornar un valor usando la función exit de C. Mostrar más
TUTORIAL : COMPUTACIÓN de ALTO DESEMPEÑO SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Computadores paralelos Más detalles Sistemas Operativos. Curso 2016 Procesos
Sistemas Operativos Curso 2016 Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor Más detalles FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013
FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS CNCA Abril 2013 6. COMPUTACIÓN DE ALTO RENDIMIENTO Ricardo Román DEFINICIÓN High Performance Computing - Computación de Alto Rendimiento Técnicas, investigación Más detalles CLUSTER FING: ARQUITECTURA Y APLICACIONES
CLUSTER FING: ARQUITECTURA Y APLICACIONES SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Clusters Cluster Más detalles Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011
CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción: arquitecturas Más detalles GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS
GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS MAURO CANABÉ SERGIO NESMACHNOW Centro de Cálculo, Facultad de Ingeniería Universidad de la República, Uruguay GPU IMPLEMENTATIONS Más detalles Arquitecturas GPU v. 2013
v. 2013 Stream Processing Similar al concepto de SIMD. Data stream procesado por kernel functions (pipelined) (no control) (local memory, no cache OJO). Data-centric model: adecuado para DSP o GPU (image, Más detalles EL CLUSTER FING: COMPUTACIÓN DE ALTO DESEMPEÑO EN FACULTAD DE INGENIERÍA
EL CLUSTER FING: COMPUTACIÓN DE ALTO DESEMPEÑO EN FACULTAD DE INGENIERÍA SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY EL CLUSTER Más detalles COMPUTADORES MULTINUCLEO. Stallings W. Computer Organization and Architecture 8ed
COMPUTADORES MULTINUCLEO Stallings W. Computer Organization and Architecture 8ed Computador multinucleo Un computador multinúcleocombina dos o mas procesadores (llamados núcleos) en una única pieza de Más detalles Arquitecturas de Hardware en Sistemas Distribuidos.
Universidad Simón Bolívar Departamento de Computación y T. I Sistemas de Operación II CI-4821 Arquitecturas de Hardware en Sistemas Distribuidos. Prof. Yudith Cardinale Abril Julio 2012 Definición de Sistemas Más detalles 4. Programación Paralela
4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios Más detalles INTRODUCCIÓN. Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware
INTRODUCCIÓN Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware INTRODUCCIÓN METAS: Brindar un entorno para que los usuarios puedan Más detalles Modelo de aplicaciones CUDA
Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas Más detalles SISTEMAS DE MULTIPROCESAMIENTO
SISTEMAS DE MULTIPROCESAMIENTO Tema 1 Introducción 5º Curso de Automática y Electrónica Industrial. 1 Contenido Tema 1 Aplicaciones Incremento de las prestaciones Clasificación de los ordenadores en función Más detalles Soluciones para entornos HPC
Dr.. IT Manager / Project Leader @ CETA-Ciemat abelfrancisco.paz@ciemat.es V Jornadas de Supercomputación y Avances en Tecnología INDICE 1 2 3 4 HPC Qué? Cómo?..................... Computación (GPGPU, Más detalles Introducción. TEMA 3: Clusters de Computadores Personales
Introducción TEMA 3: Clusters de Computadores Personales Laboratorio de Arquitecturas Avanzadas de Computadores 5º de Ingeniería Superior de Informática 2008/09 Alberto Sánchez alberto.sanchez@urjc.es Más detalles Seminario II: Introducción a la Computación GPU
Seminario II: Introducción a la Computación GPU CONTENIDO Introducción Evolución CPUs-Evolución GPUs Evolución sistemas HPC Tecnologías GPGPU Problemática: Programación paralela en clústers heterogéneos Más detalles Linux Week PUCP. Computación de Alto Rendimiento en Linux. rmiguel@senamhi.gob.pe
Linux Week PUCP 2006 Computación de Alto Rendimiento en Linux Richard Miguel San Martín rmiguel@senamhi.gob.pe Agenda Computación Científica Computación Paralela High Performance Computing Grid Computing Más detalles Módulo: Modelos de programación para Big Data
Program. paralela/distribuida Módulo: Modelos de programación para Big Data (título original: Entornos de programación paralela basados en modelos/paradigmas) Fernando Pérez Costoya Introducción Big Data Más detalles Sistemas Multiprocesador de Memoria Compartida Comerciales
Sistemas Multiprocesador de Memoria Compartida Comerciales Florentino Eduardo Gargollo Acebrás, Pablo Lorenzo Fernández, Alejandro Alonso Pajares y Andrés Fernández Bermejo Escuela Politécnia de Ingeniería Más detalles Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala
Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala 1. Introducción Los procesadores con dos núcleos existen actualmente, y los procesadores de cuatro están insertándose en el mercado lentamente, Más detalles El microprocesador. Alberto Molina Coballes David Sánchez López. Noviembre 2011. Fundamentos de Hardware
El microprocesador Alberto Molina Coballes David Sánchez López Fundamentos de Hardware Noviembre 2011 Índice 1. Concepto 2. Arquitectura Interna 3. Elementos de un Microprocesador 4. Arquitectura Externa. Más detalles Arquitectura de Computadores
Arquitectura de Computadores 1. Introducción 2. La CPU 3. Lenguaje Máquina 4. La Memoria 5. Sistemas de Entrada/Salida 6. CPU Segmentada (Pipeline) 7. Memoria Caché 8. Arquitecturas RISC Arquitectura de Más detalles Redes de Altas Prestaciones
Redes de Altas Prestaciones TEMA 3 Redes SAN -Alta disponibilidad -Sistemas Redundantes -Curso 2010 Redes de Altas Prestaciones - Indice Conceptos Componentes de un SAN Términos más utilizados Topología Más detalles Javier Pérez Mato µp para Comunicaciones Curso 2008/09 ETSIT - ULPGC
Javier Pérez Mato µp para Comunicaciones Curso 2008/09 ETSIT - ULPGC INTRODUCCIÓN HPC: High Performance Computer System Qué es un supercomputador? Computador diseñado para ofrecer la mayor capacidad de Más detalles Unidad I Fundamentos de Sistemas Distribuidos. M.C. Juan Carlos Olivares Rojas
Unidad I Fundamentos de Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas Temario 1.1. Características de un sistema distribuido 1.2. Objetivos de los sistemas distribuidos 1.3. Ventajas y desventajas Más detalles Fundamentos de Sistemas Operativos
Fundamentos de Sistemas Operativos Sistemas Informáticos Fede Pérez Índice TEMA Fundamentos de Sistemas Operativos 1. - Introducción 2. - El Sistema Operativo como parte de un Sistema de Computación 2.1 Más detalles Computacion de Alto Performance
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 Más detalles Unidad II: Administración de Procesos y del procesador
Unidad II: Administración de Procesos y del procesador 2.1 Concepto de proceso Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros Más detalles Redes de Almacenamiento
Redes de Almacenamiento Las redes de respaldo o backend se utilizan para interconectar grandes sistemas tales como computadores centrales y dispositivos de almacenamiento masivo, el requisito principal Más detalles Unidad 1: Conceptos generales de Sistemas Operativos.
Unidad 1: Conceptos generales de Sistemas Operativos. Tema 1: Introducción: 1.1 Introducción: Qué es un sistema operativo?. 1.2 Conceptos clave de un sistema operativo. 1.3 El sistema operativo como administrador Más detalles TIPOS DE PROCESAMIENTOS
TIPOS DE PROCESAMIENTOS El desempeño de un computador puede tener diferentes medidas de elección para diferentes usuarios. Para un usuario individual que está ejecutando un único programa, la computadora Más detalles EXPEDIENTE: 2/2015 ADQUISICIÓN E INSTALACIÓN DE INFRAESTRUCTURA CIENTÍFICA Y TECNOLÓGICA PARA CÉNITS PLIEGO DE PRESCRIPCIONES TÉCNICAS
EXPEDIENTE: 2/2015 ADQUISICIÓN E INSTALACIÓN DE INFRAESTRUCTURA CIENTÍFICA Y TECNOLÓGICA PARA CÉNITS PLIEGO DE PRESCRIPCIONES TÉCNICAS PLIEGO DE PRESCRIPCIONES TÉCNICAS. EXPTE 2/2015 Adquisición e instalación Más detalles No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.
RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este Más detalles TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN PROFESOR: MSC. P. Norma Maya Pérez SISTEMAS OPERATIVOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN PROFESOR: MSC. P. Norma Maya Pérez SISTEMAS OPERATIVOS I. Fundamentos del sistema operativo. OBJETIVO: El alumno seleccionará un sistema operativo de acuerdo Más detalles Memoria Compartida Distribuida (DSM) Sistema de Archivos
Memoria Compartida Distribuida (DSM) La memoria compartida distribuida es una abstracción que se propone como alternativa a la comunicación por mensajes. Memoria compartida basada en páginas: este esquema Más detalles Laboratorio de Herramientas Computacionales
Laboratorio de Herramientas Computacionales Tema 1.1 Componentes físicos de la computadora UNIVERSIDAD MICHOACANA DE SAN NICOLÁS DE HIDALGO FACULTAD DE INGENIERIA ELECTRICA M.I. ROSALÍA MORA JUÁREZ Antecedentes Más detalles Instituto Tecnológico Argentino Técnico en Hardware de PC Plan THP2A03B
Instituto Tecnológico Argentino Técnico en Hardware de PC Plan THP2A03B Reservados los Derechos de Propiedad Intelectual Tema: Procesadores AMD Archivo: CAP2A03BTHP0335.doc Clase Nº: 35 Versión: 1.1 Fecha: Más detalles Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles
Organización del Computador 1 Máquina de von Neumann Jerarquía de Niveles Inicios de la computación Turing y Church sientan las bases teóricas de la computación Máquina de Turing Máquina teórica compuesta Más detalles Abstracciones del computador y la Tecnología
Abstracciones del computador y la Tecnología Progreso en la tecnología de computadores Respaldado por la ley de Moore Hacer posibles las nuevas aplicaciones Computadores de los automóviles Teléfonos celulares Más detalles Clusters en Linux. * Jorge Castellanos - jorcas@cantv.net ** Julio Ortega - roliverio@cantv.net. * FACYT-UC Computación ** IUPSM Sistemas
Clusters en Linux * Jorge Castellanos - jorcas@cantv.net ** Julio Ortega - roliverio@cantv.net * FACYT-UC Computación ** IUPSM Sistemas www.vaslibre.org.ve Agenda Motivación Definiciones Cluster Beowulf Más detalles Arquitectura: Clusters
Universidad Simón Bolívar Arquitectura: Clusters Integrantes: - Aquilino Pinto - Alejandra Preciado Definición Conjuntos o conglomerados de computadoras construidos mediante la utilización de hardware Más detalles Resolución de problemas en paralelo
Resolución de problemas en paralelo Algoritmos Paralelos Tema 1. Introducción a la computación paralela (segunda parte) Vicente Cerverón Universitat de València Resolución de problemas en paralelo Descomposición Más detalles Familia de procesadores Intel x86
Familia de procesadores Intel x86 Mario Medina C. mariomedina@udec.cl Intel 8086 y 8088 8086: 1978, 29K transistores 8 Registros de 16 bits Bus de datos de 16 bits Bus de dirección de 20 bits Multiplexado Más detalles Computación Científica en Paralelo
Computación Científica en Paralelo Luis Miguel de la Cruz luiggix@gmail.com www.dci.dgsca.unam.mx/lmcs Unidad de Investigación en Cómputo Aplicado DGSCA-UNAM. Posgrado en Ciencia e Ingeniería de la Computación Más detalles Programación híbrida en arquitecturas cluster de multicore. Escalabilidad y comparación con memoria compartida y pasaje de mensajes.
Programación híbrida en arquitecturas cluster de multicore. Escalabilidad y comparación con memoria compartida y pasaje de mensajes. Fabiana Leibovich, Armando De Giusti, Marcelo Naiouf, Laura De Giusti, Más detalles TEMA 1. CONCEPTO DE ORDENADOR: ESTRUCTURA Y FUNCIONAMIENTO
TEMA 1. CONCEPTO DE ORDENADOR: ESTRUCTURA Y FUNCIONAMIENTO 1.1 Introducción Los ordenadores necesitan para su funcionamiento programas. Sin un programa un ordenador es completamente inútil. Para escribir Más detalles Unidad 1: Conceptos generales de Sistemas Operativos.
Unidad 1: Conceptos generales de Sistemas Operativos. Tema 3: Estructura del sistema operativo. 3.1 Componentes del sistema. 3.2 Servicios del sistema operativo. 3.3 Llamadas al sistema. 3.4 Programas Más detalles BUSES GRUPO 8 Miguel París Dehesa Ricardo Sánchez Arroyo
BUSES GRUPO 8 Miguel París Dehesa Ricardo Sánchez Arroyo - Trabajo de ampliación. BUSES. - 1 INDICE 1. Introducción 2. Integrated Drive Electronics (IDE) (1986) 3. Universal Serial Bus (USB) (1996) 4. Más detalles Dr.-Ing. Paola Vega Castillo
EL-3310 DISEÑO O DE SISTEMAS DIGITALES Dr.-Ing. Paola Vega Castillo Información n General Curso: Diseño de Sistemas Digitales Código: EL-3310 Tipo de curso: Teórico Créditos/Horas por semana: 4/4 Requisito: Más detalles 2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 5 ENTRADA/SALIDA. JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ Tema 5.
ARQUITECTURAS DE COMPUTADORES 2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 5 ENTRADA/SALIDA JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ Tema 5. Unidad de E/S 1 Unidad de E/S Indice Introducción. Más detalles Tecnologías de almacenamiento en red
Departamento de Lenguajes y Sistemas Informáticos Tecnologías de almacenamiento en red Curso 2001-2002 Sergio Luján Mora Índice Introducción Tecnologías subyacentes Futuro 2 DLSI - Universidad de Alicante Más detalles Procesos. Bibliografía. Threads y procesos. Definiciones
Procesos Prof. Mariela Curiel Bibliografía A. Tanembaum & M. Van Steen. Sistemas Distribuidos. Principios y Paradigmas. 2da. Edición. Smith & Nair. The Architecture of Virtual Machines. IEEE Computer. Más detalles Desarrollo de un cluster computacional para la compilación de. algoritmos en paralelo en el Observatorio Astronómico.
Desarrollo de un cluster computacional para la compilación de algoritmos en paralelo en el Observatorio Astronómico. John Jairo Parra Pérez Resumen Este artículo muestra cómo funciona la supercomputación Más detalles Introducción a los Sistemas Operativos
Introducción a los Sistemas Operativos 2º Ingeniero de Telecomunicación (Sonido e Imagen) Departamento de Ingeniería Telemática Universidad Carlos III de Madrid 2 Qué vamos a ver hoy? Qué es un sistema Más detalles TEMA 4: SISTEMAS MULTIPROCESADOR (MEMORIA COMPARTIDA) BLOQUE 2 Arquitecturas de computación paralela
TEMA 4: SISTEMAS MULTIPROCESADOR (MEMORIA COMPARTIDA) BLOQUE 2 Arquitecturas de computación paralela 2 CONTENIDOS DE LA UNIDAD 4.4 Diseño de arquitecturas de memoria compartida y compartida-distribuida. Más detalles COMPUTACIÓN DE ALTA PERFORMANCE
COMPUTACIÓN DE ALTA PERFORMANCE 2011 1 TOLERANCIA A FALLOS COMPUTACIÓN DE ALTA PERFORMANCE Curso 2011 Sergio Nesmachnow (sergion@fing.edu.uy) Santiago Iturriaga (siturria@fing.edu.uy) Gerardo Ares (gares@fing.edu.uy) Más detalles Plataformas paralelas
Plataformas paralelas Curso 2011-2012 Elementos de un computador paralelo Hardware: Múltiples procesadores Múltiples memorias Redes de interconexión Software: Sistemas Operativos paralelos Programas orientados Más detalles High Performance Computing y Big Data en AWS. +info: (http://gac.udc.es) HPC y Big Data en AWS 16 Abril, 2012 1 / 14
High Performance Computing y Big Data en AWS +info: (http://gac.udc.es) HPC y Big Data en AWS 16 Abril, 212 1 / 14 High Performance Computing High Performance Computing (HPC) Afonta grandes problemas empresariales, Más detalles Evaluación del rendimiento de procesadores Intel Nehalem. Modelos x7550, x5670 y x5570
Evaluación del rendimiento de procesadores Intel Nehalem. Modelos x7550, x5670 y x5570 Juan Carlos Fernández Rodríguez. Área de HPC. Centro Informático Científico de Andalucía (CICA) Junta de Andalucía Más detalles Tema: Historia de los Microprocesadores
Universidad Nacional de Ingeniería Arquitectura de Maquinas I Unidad I: Introducción a los Microprocesadores y Microcontroladores. Tema: Historia de los Microprocesadores 1 Contenidos La década de los Más detalles Virtualización en procesadores multinúcleo
Virtualización en procesadores multinúcleo Francisco Triviño García ftrivino@dsi.uclm.es Becario de investigación Presente y Futuro de los Sistemas de Computación Conference title 1 Índice 1. Introducción Más detalles TEMA 1 ELEMENTOS DE UN ORDENADOR BLOQUE 1 HARDWARE
TEMA 1 ELEMENTOS DE UN ORDENADOR BLOQUE 1 HARDWARE 2 ÍNDICE 1. y Software 2. Arquitectura básica de un ordenador 3. Componentes 1. Placa base 2. CPU 3. Almacenamiento 4. Otras tarjetas 5. Periféricos 4. Más detalles Redes de Altas Prestaciones
Redes de Altas Prestaciones TEMA 3 Tecnologías Soporte tolerante a fallos -Curso 2010 Redes de Altas Prestaciones - Indice Conceptos Topología en Alta Disponibilidad Tecnologías disponibles Tecnología Más detalles UNIVERSIDAD DE OVIEDO MÁSTER EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIONES EN REDES MÓVILES - TICRM TESIS DE MÁSTER
UNIVERSIDAD DE OVIEDO MÁSTER EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIONES EN REDES MÓVILES - TICRM TESIS DE MÁSTER DISEÑO, IMPLEMENTACIÓN Y VALIDACIÓN DE UNA ESTACIÓN DE TRABAJO PARA LA RESOLUCIÓN Más detalles RODRIGO TAPIA SANTIS (rtapiasantis@gmail com) has a. non-transferable license to use this Student Guide
Introducción Objetivos del Curso Al finalizar este curso, debería estar capacitado para: Instalar, crear y administrar Oracle Database 11g Versión 2 Configurar la base de datos para una aplicación Utilizar Más detalles picojava TM Características
picojava TM Introducción El principal objetivo de Sun al introducir Java era poder intercambiar programas ejecutables Java entre computadoras de Internet y ejecutarlos sin modificación. Para poder transportar Más detalles Electrónica Digital II
Electrónica Digital II M. C. Felipe Santiago Espinosa Aplicaciones de los FPLDs Octubre / 2014 Aplicaciones de los FPLDs Los primeros FPLDs se usaron para hacer partes de diseños que no correspondían a Más detalles Técnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs
Técnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs Enrique S. Quintana-Ortí quintana@icc.uji.es High Performance Computing & Architectures Más detalles Marco Teórico MARCO TEÓRICO. AGNI GERMÁN ANDRACA GUTIERREZ
MARCO TEÓRICO. 13 14 Virtualización Hablar de virtualización es hablar de un concepto que describe la posibilidad de tener varios sistemas operativos funcionando al mismo tiempo en un mismo equipo físico. Más detalles 15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores.
UNIDAD TEMÁTICA 5: MULTIPROCESADORES. 15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores. 15-1 TEMA 15: ARQUITECTURA DE LOS MULTIPROCESADORES. Más detalles Introducción HPC. Curso: Modelización y simulación matemática de sistemas. Esteban E. Mocskos (emocskos@dc.uba.ar) Escuela Complutense Latinoamericana
Curso: Modelización y simulación matemática de sistemas Metodología para su implementación computacional Introducción HPC Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, Más detalles Sistemas Operativos Windows 2000
Sistemas Operativos Contenido Descripción general 1 Funciones del sistema operativo 2 Características de 3 Versiones de 6 Sistemas Operativos i Notas para el instructor Este módulo proporciona a los estudiantes Más detalles Un proceso es un programa en ejécución Está formado por:
Principios Generales de la Concurrencia CONTENIDO: Concepto de Concurrencia Por qué utilizar la Concurrencia Exclusión Mutua y Sincronización Corrección en Sistemas Concurrentes Consideraciones sobre el Más detalles Heterogénea y Jerárquica
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Computación Híbrida, Heterogénea y Jerárquica Contenidos 1 Sistemas 2 Paralelismo anidado 3 Programación híbrida Más detalles Tema 1. Hardware. Fundamentos de Informática Grado en Ingeniería Mecánica
Tema 1. Hardware. Fundamentos de Informática Grado en Ingeniería Mecánica Definición de computador Máquina electrónica de propósito general utilizada para procesar información El computador moderno se Más detalles José Luis Montoya Restrepo
José Luis Montoya Restrepo AGENDA Definición y Características. Metas de los sistemas distribuidos. Conceptos de Hardware y Software. Definición: Un sistema distribuido es: Una colección de computadores Más detalles [TECNOLOGÍA RAID] Documentos de formación de SM Data: http://www.smdata.com/formacion.php
2011 Documentos de formación de SM Data: http://www.smdata.com/formacion.php [] Introducción a la tecnología RAID; Qué es RAID?; ventajas de RAID; definición de los más populares niveles de RAID y diferentes Más detalles El Bueno, el Malo y el Feo
El Bueno, el Malo y el Feo Mejorando la Eficiencia y Calidad del Software Paralelo Ricardo Medel Argentina Systems & Tools SSG-DPD Basado en un guión de Eric W. Moore - Senior Technical Consulting Engineer Más detalles Clase 20: Arquitectura Von Neuman
http://computacion.cs.cinvestav.mx/~efranco @efranco_escom efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Arquitectura de una computadora Elementos básicos de una Más detalles Procesador Intel Core 2 Extreme de 4 núcleos Traducción de Textos Curso 2007/2008
Procesador Intel Core 2 Traducción de Textos Curso 2007/2008 Versión Cambio 0.9RC Revisión del texto 0.8 Traducido el octavo párrafo 0.7 Traducido el séptimo párrafo Autor: Rubén Paje del Pino i010328 Más detalles Arquitecturas de Computadoras II. Febrero 2013
Arquitecturas de Computadoras II Febrero 2013 1 Sabes... 1. Cuál es la Arquitectura Von Neumann? 2. Qué es Programación? 3. Qué es un algoritmo? 4. Qué es un programa? 5. Qué es un sistema? 6. Materias Más detalles Métricas de Rendimiento
Métricas de Rendimiento DISEÑO DE SISTEMAS DIGITALES EL-3310 I SEMESTRE 2008 6. RENDIMIENTO DE SISTEMAS COMPUTACIONALES (1 SEMANA) 6.1 Definición de rendimiento en términos computacionales 6.2 Medición Más detalles Introducción al Cluster
Centro de Teleinformática y Producción Industrial - Regional Cauca Pág. 1 de 11 Nombre del Introducción al Cluster Historial Fecha Razón de cambio (s) Autor(es) 26 / 10 /2011 Documento Inicial, Primer Más detalles ITT-327-T Microprocesadores
ITT-327-T Microprocesadores Introducción al Microprocesador y al Microcomputador. al Microcomputador. Profesor Julio Ferreira. Sistema Microcomputador. Un Sistema Microcomputador tiene dos componentes Más detalles RAID nivel 5 (RAID 5): En RAID 5 los bloques de datos que se almacenan en la unidad, y la información redundante de dichos bloques se distribuye cíclicamente entre todos los discos que forman el volumen Más detalles Introducción Componentes Básicos Concurrencia y Paralelismo Ejemplos Síntesis Lecturas Recomendadas. Arquitectura de Computadoras
Arquitectura de Computadoras Contenidos 1 Introducción Computadora Arquitectura Partes de una arquitectura 2 Componentes Básicos CPU Jerarquía de Memoria 3 Concurrencia y Paralelismo Arquitecturas concurrentes Más detalles TEMA 1. INTRODUCCIÓN. 1. Diferentes niveles en la arquitectura de un computador
TEMA 1. INTRODUCCIÓN 1. Diferentes niveles en la arquitectura de un computador.» Máquinas virtuales 2. Máquinas multinivel actuales. 3. Evolución histórica de las máquinas multinivel. 1 1. Diferentes niveles Más detalles TEMA 1: VISIÓN GENERAL DE LOS SISTEMAS OPERATIVOS
TEMA 1: VISIÓN GENERAL DE LOS SISTEMAS OPERATIVOS 1. Concepto de Sistema Operativo. Funciones Un sistema operativo (S.O.) es un programa o conjunto de programas de control que tiene por objeto facilitar Más detalles TEMA 4. Unidades Funcionales del Computador
TEMA 4 Unidades Funcionales del Computador Álvarez, S., Bravo, S., Departamento de Informática y automática Universidad de Salamanca Introducción El elemento físico, electrónico o hardware de un sistema Más detalles Aplicaciones Informáticas
Aplicaciones Informáticas Profesor: Eduardo Zúñiga Sistema de aprobación: 2 parciales y recuperatorio Promoción: Sumar 14 o más puntos entre los dos parciales y no sacar menos de 6 en ninguno de los dos Más detalles UNA NUEVA GENERACIÓN: HÍBRIDOS CPU/GPU. Microprocesadores para Comunicaciones. Paloma Monzón Rodríguez 42217126M
UNA NUEVA GENERACIÓN: HÍBRIDOS CPU/GPU Microprocesadores para Comunicaciones 2010 Paloma Monzón Rodríguez 42217126M Índice 1. Introducción... 3 2. Unidad Central de Procesamiento (CPU)... 4 Arquitectura Más detalles Procesos. Planificación del Procesador.
Procesos. Planificación del Procesador. Sistemas Operativos. Tema 2. Concepto de Proceso. Una definición sencilla: Programa en ejecución. Entidad pasiva Programa RECURSOS CPU Memoria Ficheros Dispositivos Más detalles High Performance Computing and Architectures Group
HPCA Group 1 High Performance Computing and Architectures Group http://www.hpca.uji.es Universidad Jaime I de Castellón ANACAP, noviembre de 2008 HPCA Group 2 Generalidades Creado en 1991, al mismo tiempo Más detalles Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015
Anexo A. Partida 2 Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015 CLUSTER LANCAD 2 El bien a adquirir se describe a continuación y consiste de un cúmulo de Más detalles GRID COMPUTING MALLA DE ORDENADORES
GRID COMPUTING MALLA DE ORDENADORES Introducción Concepto Compartir potencia computacional; Aprovechamiento de ciclos de procesamiento; El Grid Computing se enmarca dentro de la tecnología de computación Más detalles Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015
Anexo A. Partida 3 Laboratorio Nacional de Cómputo de Alto Desempeño: Fortalecimiento de la Infraestructura 2015 CLUSTER LANCAD3 El bien a adquirir se describe a continuación y consiste en cúmulo de supercómputo Más detalles SISTEMAS OPERATIVOS II
SISTEMAS OPERATIVOS II INSTITUTO TECNOLÓGICO DE MORELIA Unidad I: Sistemas Operativos en ambientes Distribuidos Departamento de Sistemas y Computación M.C. Benito Sánchez Raya sanchezraya@hotmail.com Disponible Más detalles 2017 © DocPlayer.es Política de privacidad | Condiciones del servicio | Feedback

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 Resolución 

Resolución 
 Resolución 
 RESOLUCIÓN