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