Programación Paralela y Concurrente

Documentos relacionados
Procesamiento Paralelo

Procesamiento Paralelo

Threads, SMP y Microkernels. Proceso

Programación Concurrente y Paralela. Unidad 1 Introducción

Con estas consideraciones, Flynn clasifica los sistemas en cuatro categorías:

TEMA 10 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS. Introducción Hardware Software Aspectos de diseño

TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS

Arquitectura de Computadoras. Clase 9 Procesamiento paralelo

07 y 08 Sistemas distribuidos y paralelos y tarea 02

Modelos de computadores paralelos

EVOLUCIÓN DE LOS PROCESADORES

Granularidad y latencia

Cómputo paralelo con openmp y C

Bases de Datos Paralelas. Carlos A. Olarte BDII

TEMA 2: Organización de computadores

Plataformas paralelas

Computación de Alta Performance Curso 2009 ARQUITECTURAS PARALELAS ARQUITECTURAS PARALELAS

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

Introducción a las Arquitecturas Paralelas. Arquitectura de Computadoras II Fac. Cs. Exactas UNCPBA Prof. Marcelo Tosini 2015

UNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

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

Sistemas Operativos. Algo de Sistemas Operativos, Arquitecturas y Paralelismo

Sistemas Operativos. Introducción. Tema 6

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Herramientas Informáticas I Software: Sistemas Operativos

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

Tipos de Diseño. Ing. Elizabeth Guerrero V.

1. Introducción 2. S.O. de Red. NFS 3. S.O. Distribuidos 4. Características de Diseño. Tema5: Sistemas Operativos Distribuidos

INDICE Control de dispositivos específicos Diseño asistido por computadora Simulación Cálculos científicos

Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS

Modelado de los computadores paralelos

Unidad IV: Arquitectura de los Sistemas de Bases de Datos (Tema 5) GESTIÓN DE BASES DE DATOS GRADO EN INGENIERÍA INFORMÁTICA UNED

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

PROGRAMACIÓN CONCURRENTE

Arquitecturas vectoriales, SIMD y extensiones multimedia

SISTEMAS OPERATIVOS ACTIVIDAD: TRABAJO COLABORATIVO

Evolución del software y su situación actual

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE ELECTROTECNIA Y COMPUTACION DEPARTAMENTO DE ARQUITECTURA Y SISTEMAS

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda

BASES DE DATOS DISTRIBUIDAS

Parte I:Teoría. Tema 3:Introducción a los Sistemas operativos. Instalación

SILABO DE SISTEMAS OPERATIVOS

Aspectos avanzados de arquitectura de computadoras Pipeline. Facultad de Ingeniería - Universidad de la República Curso 2017

ARQUITECTURAS PARA PROCESAMIENTO PARALELO

Sistemas Operativos. Procesos

Unidad 4 - Procesamiento paralelo. Arquitectura de computadoras. D o c e n t e : E r n e s t o L e a l. E q u i p o : J e s s i c a F i e r r o

MULTIPROCESADORES COMERCIALES. José M. Cámara v. 2.0

Organización del Sistema Operativo

Tema 1: Arquitectura de ordenadores, hardware y software

Indice 1. Introducción al procesamiento paralelo 2. Estructura de los multiprocesadores de memoria compartida

Introducción a las arquitecturas paralelas

Sistemas Operativos. Curso 2016 Introducción

Página 1 de 12 CONCEPTOS INFORMÁTICOS BÁSICOS

Sistemas Distribuidos. Soporte de Sistemas Operativos

Cuestionario Unidad 4: Procesamiento paralelo 2012

Trabajo de investigación Paralelismo en el procesador

TEMA 1: Concepto de ordenador

Fundamentos de programación JAVA

SISTEMAS DE MULTIPROCESAMIENTO

PROPÓSITO DEL CURSO OBJETIVOS ESPECIFICOS:

Fundamentos de Programación. Sabino Miranda-Jiménez

Iniciación a la informática

Concurrencia. Concurrencia

CLUSTER FING: ARQUITECTURA Y APLICACIONES

Informática. Software. Instituto de Educación Media Superior del DF. Asignatura: Computación I

Conceptos y Estructuras de Sistemas Operativos

HARDWARE: DISPOSITIVOS DE ENTRADA, PROCESAMIENTO Y SALIDA/ SOFTWARE: SOFTWARE DE SISTEMAS DE APLICACIONES. Ralph Stair y George Reynolds

CLASES DE COMPUTADORAS

Memoria compartida simétrica

Redes de Interconexión

PREPARATORIA OFICIAL NO. 82 JOSÉ REVUELTAS INFORMÁTICA & COMPUTACIÓN I UNIDAD II LAS TIC

Hoja de respuestas. Examen tipo A

Algoritmos Paralelos (Parallel Algorithms) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

BASE DE DATOS DISTRIBUIDOS

Complejidad computacional (Análisis de Algoritmos)

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

TEMA 2: DEFINICIONES Y CONCEPTOS. Ing. Jonathan Quiroga Tinoco Conalep Tehuacán P.T.B. en SOMA

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

Modelo Dinámico del Diseño del Software y Representación en UML. UNIDAD 9 Análisis y Diseño de Sistemas de Información

Sistema Operativo. Introducción a los Sistemas Operativos. El Sistema Operatico como Interfaz Usuario/Computador. Objetivos del Sistema Operativo

Ingeniería Informática

Hilos Secciones Stallings:

MANUAL DE REFERENCIA DE INSTALACIÓN RÁPIDA SISTEMA DE CONTROL DE ASISTENCIAS DE PERSONAL ON THE MINUTE VERSION 4.0

Transcripción:

Programación Paralela y Concurrente M. en C. Mario Farías-Elinos Contenido Introducción Paralelismo, Concurrencia, Pipeline. Complejidad, Threads, Proceso. Objetivos Modelos de computación SISD, SIMD, MISD, MIMD Clasificación Micros, Minis, Mainframes, Supercomputadora. 1

Contenido Filosofía de procesamiento: Maestro-esclavo. Misma jerarquía. Arquitecturas paralelas Paralelismo Paradigma de Homoparalelismo Paradigma de Heteroparalelismo Primitivas del Paralelismo Contenido Concurrencia. Tipos de concurrencia. EREW, ERCW, CREW, CRCW. Parallel Virtual Machine (PVM). Tendencia. Aplicaciones. Conclusiones. 2

Definiciones Secuencialidad: Ejecución de una sóla instrucción en cada ciclo. Concurrencia: Ejecución simultanea de instrucciones dentro de una computadora. Acceso simultaneo de datos en una computadora. Definiciones Procesamiento paralelo: Manejo de información que enfatiza la manipulación concurrente por uno o más procesadores para la solución de un problema. Computadora paralela: Computadora multi-procesador con capacidad de procesamiento paralelo. Supercomputadora: Computadora con capacidad de cómputo masívo. 3

Definiciones Pipeline: Ejecución de varias instrucciones en cada ciclo. Paralelismo: Aplicación de multiples procesadores que realizan la misma operación en forma simultanea sobre elementos de un conjunto de datos. Pipeline y Paralelismo incrementan la concurrencia. Definiciones 4

Definiciones Proceso: Se define como el ambiente de trabajo (variables de ambiente, código, PID, etc.) que involucra una tarea. thread o hilo: es la escencia del proceso (código, registros del procesador, etc.). Complejidad Comportamiento de un algoritmo Clases de complejidad: P: Problemas de decisión que se resuelven en un tiempo polinomial. NP: Problemas que se resuelven en un tiempo polinómico no determinístico. NP-completo: Problemas que se resuelven en un tiempo no polinómico. 5

Complejidad Notaciones de la complejidad: O o ω Ω θ asintoticamente a la cota superior cota superior no asintoticamente cota inferior no asintoticamente asintoticamente a la cota inferior incluye las 4 anteriores Complejidad 6

Introducción Por qué el surgimiento del Paralelismo? Por qué surgen las Arquitecturas Paralelas? Objetivos Reducir el tiempo de cómputo. Reducir la complejidad del algoritmo. Aprovechas al máximo la capacidad de las computadoras multiprocesador. 7

Modelo SISD Simple Instruction, Simple Data. Consiste de un procesador que recibe un simple flujo de instrucciones y de datos. Un algoritmo para esta clase se dice ser secuencial o serial. Modelo MISD Multiple Instruction, Single Data. Existencia de N procesadores con un simple flujo de datos ejecutando instrucciones diferentes en cada procesador. 8

Modelo SIMD Simple Instruction, Multiple Data. Existen N procesadores ejecutando la misma instrucción sobre los mismos o diferentes datos. Existencia de datos compartidos. Modelo MIMD Multiple Instruction, Multiple Data. Existen N procesadores ejecutando instrucciones diferentes sobre los mismos o diferentes datos. Existencia de datos compartidos. 9

Microcomputadoras Procesadores de 32 y 36 bits (Direcc.), y 32 y 64 bits (Datos). Monousuario (NT/2k, Win9x) y Multiusuario (UNIX) Multiprocesador (NT, UNIX) Minicomputadoras Procesadores de 32 y 64 bits (Direc.), y 32 y 64 bits (Datos). Multiusuario Multiprocesador (RISC) 10

Mainframes Procesadores de 32 y 64 bits (Direc.), y 32 y 64 bits (Datos). Multiusuarios Multiprocesadores Supercomputadoras procesadores de 128 bits (Addr) y 128 bits (Datos). Multiusuario Multiprocesador 11

Maestro-esclavo Un procesador controlador (Maestro) Procesadores controlados (esclavos) que reportan al Maestro Misma jerarquía Procesadores independientes, no reportan a nadie. Inexistencia de un controlador 12

Arquitecturas Organización de los procesadores. El método de conectar a los procesadores en paralelo. Malla Arbol binario Hiperárbol Piramidal Mariposa Hipercubo Hipercubo cíclico Transpaso-intercambio de Bruijn Arquitecturas Criterios de organización Diámetro: Máxima distancia entre dos nodos. Un diámetro pequeño es el ideal, esto genera una cota inferior en la complejidad (comunicación). Ancho de Bisección: Es el número mínimo de bordes que deben ser removidos a fin de dividir la red en dos mitades. Un alto AB es el ideal, esto genera una cota inferior en la complejidad (movimiento de datos). 13

Arquitecturas Número de bordes por nodo: Si este es un valor constante e independiente al arreglo permite escalar facilmente al sistema con un mayor número de nodos. Máxima longitud de borde: Por razones de escalabilidad es mejor que el valor de contornos y nodos puedan ser constantes. Malla Arreglo de nodos en rejilla q-dimensional. Un nodo se comunica con 2q nodos. No hay jerarquía. 14

Arbol binario Existen 2 k -1 nodos con una profundidad de k-1. Un nodo tiene a lo más tres ligas. En el interior un nodo se puede comunicar a lo más con dos nodos hijos y con el nodo padre. Diámetro pequeño. Ancho de Bisección pobre. Maestro-esclavo Hiperárbol Unión de árbol binario invertido y un árbol con k hijos. Objetivo: Mejorar el Ancho de Bisección. 15

Piramidal Combinación de una malla y un arbol. Reduce el diámetro con respecto a la malla. El máximo número de ligas por nodo no es mayor a 9. Mariposa Consiste de (k+1)2 k nodos dividido en k+1 renglones o rangos. k es el rango cuyo valor esta entre 0 y n. Los nodos internos tiene 4 conecciones, y los externos 2 conecciones. Las ligas forman un patron de mariposa. 16

Hipercubo Consiste de 2 k nodos formando un hipercubo k-dimensional. Los nodos se etiqueta de 0 a 2 k -1. Dos nodos son adyacentes si en la etiqueta varia a lo más un bit en una posición. ncube Procesadores: (64 bits) 8 hasta 8192. Memoria: 32 Mb hasta 262 Gb. Flops: M5: 1.92 Gflops M10: 34 Gflops 17

Cubo cíclico Es un hipercubo k- dimensional. Existen k nodos por vértice. Diámetro dos veces mayor al hipercubo. Ancho de bisección es menor que al hipercubo Transpaso-Intercambio Consiste de 2 k nodos. Dos tipos de ligas: Intercambio: Se realiza entre los procesadores dondecambia el bit más significativo. Transpaso: Se lleva a cabo entre el nodo i y el nodo 2i mod (n-1). 18

de Bruijn Existen 2 k nodos. Los procesadores de la Triton/1 TM (Universidad de Karlsruhe, 1992), estan conectados de esta manera. Comparación Organización Nodos Diámetro Ancho de bisección Contorno constante Longitud constante Malla n-d nk n(k - 1) k n-1 Si Si Arbol binario 2 k - 1 2(k - 1) 1 Si No 4-Hiperarbol 2 k (2 k+1-1) 2k 2 k+1 Si No Piramidal (4k 2-1) / 3 2 log k 2k Si No Mariposa (k + 1)2 k 2k 2 k Si No Hipercubo 2 k k 2 k-1 No No Cubo cíclico k2 k 2k 2 k-1 Si No Transpaso-Intercambio 2 k 2k - 1 2 k-1 / k Si No de Bruijn 2 k k 2 k / k Si No 19

Paralelismo Concideraciones para la programación en paralelo: Independencia de datos. El tipo de problema y la cantidad de datos. Homoparalelismo Crear subtareas idénticas de igual carga computacional. Ejecución simultanea. Independencia. 20

Heteroparalelismo Creación desubtareas diferentes. Ejecución simultanea. Independencia. Primitivas del paralelismo m_fork: Creación de cada thread que se ejecutará en cada procesador. m_kill_procs: Eliminación de algún thread que se este ejecutando. m_set_proc: Indica el número de procesadores a utilizar. m_get_numprocs: Obtiene el número de procesadores que se estan utilizando. 21

Primitivas del Paralelismo m_park_procs: Bloquea un thread y libera los recursos m_rele_procs: Reactiva el thread bloqueado. m_lock: Aisla una variable para evitar que otro thread la accese. m_unlock: Remueve el aislamiento de la variable. Primitivas del Paralelismo m_sync: Detiene la ejecución de un thread para esperar que otros thread lleguen hasta ese punto del código y continuar en forma sicronizada. 22

Concurrencia Se puede definir como la Programación en tiempo real. Ejecutar varios procesos en forma simultanea en una computadora. Se utiliza un Schedule, el cual se encarga de administrar a los procesos en ejecución. Concurrencia Se recomienda utilizar Sistemas Operativos con microkernel que permite la programación de threads. Modos de controlar la concurrencia en un sistema centralizado: Candados (Locks). Semaforos. Mensajes. 23

EREW Exclusive Read, Exclusive Write. Sólo un proceso puede leer y escribir al mismo tiempo. Puede caer en dead-lock (candado mortal). Genera lentitud de procesos. ERCW Exclusive Read, Concurrent Write. Sólo un proceso puede leer y todos los procesos pueden escribir en forma simultanea. Puede generar inconsistencia de información. Puede caer en dead-lock. 24

CREW Concurrent Read, Exclusive Write. Todos los procesos pueden leer pero sólo un proceso puede escribir. Puede caer en dead-lock. CRCW Concurrent Read, Concurrent Write. Todos los procesos pueden leer y escribir simultaneamente. Puede generar inconsistencia de información. No se presentan dead-lock. 25

Parallel Virtual Machine (PVM) Software de dominio público (Internet). Computadoras interconectadas en red protocolo TCP/IP (Ethernet, FDDI, ATM). Colección de computadoras UNIX heterogeneas: Parallel Virtual Machine (PVM) Memoria local o compartida (SPARCstation). Multiprocesadores (Alpha-Server). 26

Parallel Virtual Machine (PVM) Procesamiento vectorial (CRAY). Parallel Virtual Machine (PVM) Compartir los procesadores y memoria. Programación en C y C++. daemon controlador de comunicación y procesos entre las computadoras. Programación bajo la filosofia: Maestro-esclavo. Misma jerarquía. 27

Parallel Virtual Machine (PVM) Versión Beta para Windows de 32 bits (9x y NT) Tendencia Compartir el o los procesadores, además de los recursos de la computadora. Paralelismo distribuido. Control de concurrencia: Candados. Controlóptimo de la concurrencia. Estampa de tiempo. 28

Tendencia Implantar Sistemas Operativos Distribuidos. Implica: Tolerancia a Fallas. Transparente. Escalabilidad. Concurrencia. Abierto. Compartición de recursos. Aplicaciones ULSA Control del Pendubot (Concurrente). Control en tiempo real Datos de entrada Datos de salida 29

Aplicaciones ULSA Visión artificial aplicado a Robótica. Aplicaciones ULSA Cálculo de Testores por algoritmo paralelo. Algoritmos paralelos para el procesamiento de imágenes. Algoritmos paralelos para el Reconocimento de patrones utilizando una Red Neuronal Difuza. Algoritmos de Autómatas Celulares 30

Aplicaciones ULSA Reasignación de procesos utilizando Lógica Difuza en en un Sistema Distribuido. Programación paralela de Redes Neuronales Artificiales. Conclusiones Las técnicas de paralelismo ofrecen un mayor poder de cómputo. Reducción del tiempo de cómputo. Con PVM no hay dependencia del set de instrucciones del Hardware. En un paralelismo distribuido hay dependencia de la funcionalidad de la red. 31

Conclusiones Bajo PVM no hay control de la carga de trabajo que tenga el procesador anfitrión. Para algunes problemas es mejor utilizar programación concurrente (tiempo real) que programación paralela. Proyectos realizados por ESTUDIANTES. 32