Programación Paralela Dr. Mario Rossainz López FCC- BUAP

Slides:



Advertisements
Presentaciones similares
Sistemas Multiagentes en Ambientes Dinámicos: Planificación Continua mediante PDDL Grupo de Investigación en Lenguajes e Inteligencia Artificial Departamento.
Advertisements

Capítulo 2: Rendimiento de un computador
Complejidad Computacional
DISEÑO DE EXPERIMENTOS
Ejemplo La empresa Producciones Valencianas, en el análisis de sus operaciones del último trimestre, muestra una disminución de la producción en comparación.
Tema Algoritmos Universidad Politécnica de Nicaragua UPOLI.
ARQUITECTURA DE COMPUTADORES - PERFORMANCE
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Objetivos Desarrollar software funcional multi-modelo sobre distintas plataformas para el estudio de sistemas complejos de cómputo de alto rendimiento.
Resolución de Problemas
Programación Estructurada
Speedup, Ley de Amdahl y MIPS
Introducción a los Algoritmos
El Diseño de Algoritmos Paralelos
Programación 1 Introducción
EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
M.S.C. Ivette Hernández Dávila
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
UNIVERSIDAD NACIONAL AUTONOMA DE HONDURAS
METODOLOGIA DE LA PROGRAMACION
Dirección de la Productividad
APLICACIÓN DE PROCESAMIENTO EN PARALELO BASADO EN OPENMP EN EL MANEJO MATRICIAL USADO EN EL ANÁLISIS DE SISTEMAS ELÉCTRICOS Antonio Ramos Paz 1, Eustaquio.
Tema 2: Métodos de ajuste
Análisis y Diseño de Algoritmos
Programación Modular (Pseudocódigo)
Procesamiento paralelo
Análisis de Algoritmos

INSTITUTO TECNOLÓGICO DE CD. GUZMÁN
M.S.C. Ivette Hernández Dávila
Línea: Tecnologías para la Investigación Resumen Proyectos1 Entidades Participantes4 Académicos Participantes10 Proyecto de Cómputo de Alto Rendimiento.
PUNTO DE EQUILIBRIO Lic. Délfido Morales
ESTRUCTURA DE DATOS ESD-243
ALEXANDRA MARIA PAREDES NAVIA ANGIE LORENA VALDES FALLA
Planificación de Procesos
Arquitecturas Paralelas
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
PROGRAMACIÓN PARALELA Modelos de programación paralela Modelos computacionales Paradigmas de programación paralela Programación en memoria compartida:
Análisis y Diseño de Algoritmos
Facilitadora:Ing.: Fideligna Gallo Integrante: Zulma López C.I El Tigre; Abril del 2011.
Una introducción a la computación evolutiva
Capítulo 6. ANÁLISIS DE ALGORITMOS
PROYECTO INFORMÁTICO.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Amplificador con BJT Análisis de pequeña señal
Ing. Noretsys Rodríguez. Definición de Conceptos  Falla: Ocurre cuando un programa no se comporta de manera adecuada. Es una propiedad estadística de.
RENDIMIENTO DEL COMPUTADOR
Rendimiento de la CPU y sus factores
Rendimiento y/o desempeño.. RENDIMIENTO “El computador A es más rápido que el computador B” Como se determina el rendimiento de un computador para: El.
UNIDAD 7 “OTROS PARADIGMAS DE PROGRAMACIÓN“ LI & MSC OSCAR RAMIREZ CORTÉS Universidad de la Huasteca Veracruzana.
Un proceso ligero (thread o hebra) es un programa en ejecución que comparte la imagen de la memoria y otras informaciones con otros procesos ligeros.
UNIDAD 1. ORGANIZACIÓN BÁSICA Y DISEÑO DEL COMPUTADOR
3.2.1 Administración de almacenamiento
LA DIRECCIÓN Introducción La planificación y el control
Funciones principales!
Compilador Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa.
Las funciones son librerías ya estandarizadas que permiten al usuario realizar sus respectivas programaciones. Una función es un conjunto de líneas de.
Computadoras de Alto Rendimiento (HPC)
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
Procedimientos de multirespuesta por permutación (MRPP)
David A Salamanca Díaz. DEFINICIÓN  Se define como una serie de pasos organizados que describen el proceso que se debe seguir, para dar solución a un.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Algoritmo Genético para la solución del problema SAT René Clemente Juárez Angel Felipe Lara Valladares Junio 2012.
Gestión de Recursos Humanos Ingeniería Industrial Electiva Docentes Ing. Susana B. Chauvet CPN Elí Belló.
CONCEPTOS DE CALIDAD. Es un proceso que busca la formulación, la ejecución y el seguimiento de acciones y comportamientos de una entidad determinada en.
Ing. Barros Rodriguez D. Ronald Introducción a la Programacón.
TEMA:INDIDCADORES DE GESTION LOGISTICA
Transcripción de la presentación:

Programación Paralela Dr. Mario Rossainz López FCC- BUAP Curso de Programación Concurrente y Paralela CAPÍTULO 4: Introducción a la Programación Paralela: Introducción Taxonomía Paradigmas Diseño y Comportamiento

Programación Paralela Introducción: Objetivo del paralelismo: Conseguir ejecutar un programa inicialmente secuencial en menos tiempo utilizando para ello varios procesadores. Idea: Dividir un problema grande en varios más pequeños y repartirlos entre los procesadores disponibles. Problemas: Estrategia de diseño adecuada, elementos no paralelizables, reparto de trabajo entre los procesadores.

Programación Paralela Introducción: Esquema Ideal de la paralelización Tiempo en paralelo Secuencial 1 procesador 4 procesadores tiempo Suponiendo que todos los procesadores llevan a cabo el mismo tipo y número de operaciones, el tiempo de ejecución de un programa paralelo sería: t/n con t=tiempo de ejecución secuencial y n=número de procesadores disponibles

Programación Paralela Introducción: Esquema REAL de la paralelización Tiempo en paralelo Secuencial 1 procesador 4 procesadores tiempo Existen dependencias secuenciales entre las variables del programa, por tanto la unidad de paralelización son las entidades que encapsulan instrucciones y no las instrucciones por sí mismas.

Programación Paralela Introducción: Factor SpeedUp o Aceleración: Es una medida comparativa del rendimiento de un sistema multiprocesador respecto de un sistema monoprocesador. Mide qué tan efectiva es la paralelización de un programa frente a su versión secuencial.

Programación Paralela Introducción: Factor SpeedUp o Aceleración: SpeedUp = Tsec Tpar Tsec: Tiempo de ejecución del programa secuencial Tpar: Tiempo de ejecución del programa paralelo

Programación Paralela Introducción: SpeedUp = Tsec Tpar Factor SpeedUp o Aceleración: CONSIDERACIONES: Se debe utilizar el mejor algoritmo secuencial conocido (del problema a resolver). Deberá ser por tanto el algoritmo secuencial más rápido que pueda ejecutarse en un solo procesador. El algoritmo utilizado para la programación paralela suele ser diferente.

Programación Paralela Introducción: Ejemplo de SpeedUp: Suposiciones: Se tienen 4 procesadores para la ejecución paralela de la aplicación Tpar= 3 hrs. Tsec= 8 hrs. SpeedUp = 8 hrs 3 hrs = 2.66 hrs SpeedUp Ideal = 4 hrs

Programación Paralela Introducción: Ejemplo de SpeedUp: SpeedUp = 8 hrs 3 hrs = 2.66 hrs ¿Qué tan realista (bueno) es este SpeedUp? Consideraciones: Tiempo utilizado en paralelizar el programa Calidad del código fuente Naturaleza del algoritmo implementado Porción de código intrínsecamente secuencial (qué tan paralelizable es el algoritmo)

Programación Paralela Introducción: Ejemplo de SpeedUp: SpeedUp = 8 hrs 3 hrs = 2.66 hrs ¿Qué tan realista (bueno) es este SpeedUp? RESPUESTA: El máximo speedUp que se puede alcanzar con la implementación paralela de un determinado algoritmo viene dada por la llamada Ley de Amdahl.

Programación Paralela Ley de Amdahl: Es la cota superior al SpeedUp que como máximo puede alcanzar un programa ejecutándose en paralelo, suponiendo que en todo programa hay una fracción de código que no se puede paralelizar Sea f= fracción del cómputo que no puede ser dividida en tareas concurrentes Sea p= el número de procesadores S(p) = el factor de speedUp máximo dado por la ley de Amdahl y se define como:

Programación Paralela Ley de Amdahl: S(p)= p 1+(p-1)f f+[(1-f)/p] S(p)= 1

Programación Paralela Ley de Amdahl: Ejemplo: Se tiene un programa con una fracción de código paralelo equivalente a un 75% y la aplicación se ejecuta utilizando 4 procesadores Sea f= 0.25 Sea p= 4 S(4)= 4 1+(4-1)0.25 = 2.28

Programación Paralela Ley de Amdahl: Ejemplo: Se tiene un programa con una fracción de código paralelo equivalente a un 75% y la aplicación se ejecuta utilizando 4 procesadores Sea f= 0.25 Sea p= 4 0.25+[(1-0.25)/4] S(4)= 1 = 2.28 SpeedUp <= S(p)

Programación Paralela Ley de Amdahl: f=0 f=0.05 f=0.10 f=0.20

Programación Paralela Ley de Amdahl: La cota superior del SpeedUp mejora a medida que se aumenta el número de procesadores Con un número infinito de procesadores, el máximo speedUp que se puede alcanzar esta limitado por 1/f lim S(p) p   = 1 f

Programación Paralela Ciclos por instrucción (CPI): Es una medida utilizada para reflejar la calidad de uso del procesador por parte de un programa # instrucciones CPI= # ciclos Si por cada ciclo se ejecuta una instrucción, el CPI =1 lo cual se considera bueno Los procesadores superescalares ejecutan más de una instrucción de un programa por ciclo, es decir, 0<CPI<=1

Programación Paralela TAXONOMÍA: Los multiprocesadores se clasifican de forma genérica en: Multiprocesadores de Memoria Compartida Multiprocesadores de Memoria Distribuida Multiprocesadores de Memoria Compartida Distribuida

Programación Paralela TAXONOMÍA: Multiprocesadores de Memoria Distribuida: Computadora donde la memoria del sistema esta distribuida entre todos los procesadores del sistema, usando del paso de mensajes para la comunicación entre los procesadores CPU Memoria RED DE INTERCONEXION

Programación Paralela TAXONOMÍA: Multiprocesadores de Memoria Compartida: Multicomputadoras donde todos los procesadores acceden a toda la memoria. Si los procesadores acceden a la memoria en un tiempo uniforme, entonces se tiene el modelo NUMA, de lo contrario, estaremos con un modelo UMA. Memoria CPU RED DE INTERCONEXION Mem Fig. I.5. (a) Modelo NUMA Fig. I.5. (b) Modelo UMA

Programación Paralela TAXONOMÍA: Multiprocesadores de Memoria Compartida Distribuida: Computadora donde la memoria esta físicamente repartida entre los nodos del sistema compuesto por 2 procesadores c/u y solo hay un espacio de direcciones y todos los procesadores acceden a toda la memoria. Memoria Switch local I/O CPU Nodo RED DE INTERCONEXION GLOBAL

Programación Paralela Clasificación de Michael Flynn: MIMD SIMD Mybrid MISD Multiprocesadores Procesadores de Arrays Procesadores de Vector Pipeline Arrays Sistólicos Máquinas SIMD-MIMD Máquinas MIMD-SIMD Multicomputadores Máquinas de flujos de datos

Programación Paralela Arquitectura SISD (Simple Instruction Stream, Simple Data Stream): Procesador Instrucciones Datos de Entrada Datos de Salida La Arquitectura SISD

Programación Paralela Arquitectura SISD (Simple Instruction Stream, Simple Data Stream): Se basa en el modelo de Von-Neumman Cuenta con un CPU que ejecuta una instrucción a la vez e instancía un item de datos a la vez Utiliza un registro simple llamado contador de programa (CP) para llevar el conteo serial de las instrucciones Las instrucciones son ejecutadas a través del ciclo-fetch de la máquina en orden serial

Programación Paralela Arquitectura SISD (Simple Instruction Stream, Simple Data Stream):

Programación Paralela Arquitectura SIMD (Simple Instruction Stream, Multiple Data Stream): Flujo de Instrucción Procesador A Flujo de Entrada de Datos A Flujo de Salida de Datos A Flujo de Entrada de Datos B Flujo de Entrada de Datos C B C Flujo de Salida de Datos B Flujo de Salida de Datos C La Arquitectura SIMD

Programación Paralela Arquitectura SIMD (Simple Instruction Stream, Multiple Data Stream): Todos los CPUs reciben la misma instrucción a ejecutar por parte de la CU pero operan con distintos conjuntos de datos. Distribuyen el procesamiento sobre hardware grande Operan concurrentemente con muchos datos distintos Realizan el mismo cálculo en todos los elementos de datos

Programación Paralela Arquitectura SIMD: ILLIAC-IV MasPar MP-1

Programación Paralela Arquitectura MISD (Multiple Instruction Stream, Single Data Stream): Flujo de Instrucciones A Procesador A Flujo de Entrada de Datos B C Flujo de Salida de Datos B La Arquitectura MISD Flujo de Instrucciones B Flujo de Instrucciones C

Programación Paralela Arquitectura MISD (Multiple Instruction Stream, Single Data Stream): Arquitectura de computadora que ejecuta varios programas distintos para el mismo conjunto de datos Se pueden tener computadoras que requieren de distintas unidades de procesamiento que reciben distintas instrucciones para operar sobre los mismos datos Se pueden tener computadoras tales que el flujo de datos circula sobre una serie de elementos de procesamiento Ejemplo de ello son los array sistólicos o pipeline (cauces)

Programación Paralela Arquitectura MISD: NEC Nehalem Cluster

Programación Paralela Arquitectura MIMD (Multiple Instruction Stream, Multiple Data Stream): Flujo de Instrucciones A Procesador A Flujo de Entrada de Datos A B C Flujo de Salida de Datos B La Arquitectura MIMD Flujo de Instrucciones B Flujo de Instrucciones C Flujo de Entrada de Datos B Flujo de Entrada de Datos C Flujo de Salida de Datos A Flujo de Salida de Datos C

Programación Paralela Arquitectura MIMD (Multiple Instruction Stream, Multiple Data Stream): Son sistemas multiprocesadores o multicomputadoras donde cada procesador tiene su unidad de control y ejecuta su propio programa Distribuyen el procesamiento sobre procesadores independientes Comparten flujos o recursos entre procesadores Son arquitecturas utilizadas para paralelismo de grano fino y obtener así más eficiencia

Programación Paralela Arquitectura MIMD:

Programación Paralela Arquitectura MIMD: Memoria del sistema A Procesador B C Bus de memoria Memoria distribuida en máquinas MIMD

Programación Paralela Arquitectura MIMD: Sistema de Memoria Global Procesador A B C Bus de memoria Memoria compartida en máquinas MIMD

Programación Paralela Diseño y Comportamiento: Algoritmos Paralelos: Describen como puede resolverse un problema pensando en una determinada arquitectura paralela, mediante la división del problema en subproblemas, comunicando los procesadores y después uniendo las soluciones parciales para obtener la solución final y suelen basarse en el concepto de paradigma. Paradigma: Es una clase de algoritmos que resuelven diferentes problemas que tienen la misma estructura de control. Por ejemplo: Divide y Vencerás, Multiplicación de Tuplas, Programación Dinámica, Ramificación y Poda, etc. - Caen dentro del área de Teoría de algoritmos paralelos

Programación Paralela Patrones de Comunicación Paralela: Los Paradigmas definen una metodología de programación dentro de la Ciencia Computacional aplicando un proceso de derivación informal para su programación en donde se identifica un patrón de comunicación paralela para la interacción entre los procesos. Patrones de comunicación paralela: Farms o granjas Pipelines o Cauces Trees o árboles Cubos Hipercubos Matrices o mallas

Programación Paralela Diseño y Comportamiento: Patrones de comunicación paralela: Proceso Trabajador Farm con un proceso controlador y 5 procesos trabajadores Controlador Farms o Granjas: Formadas de un conjunto de procesos trabajadores y un proceso controlador. Los trabajadores se ejecutan en paralelo hasta alcanzar un objetivo común y el controlador distribuye el trabajo y controla el progreso del cómputo global.

Programación Paralela Diseño y Comportamiento: Patrones de comunicación paralela: Pipelines o Cauces: Esta compuesto por un conjunto de procesos (llamados stages, etapas o estados) conectados, uno detrás de otro y donde la información sigue un flujo o cauce de uno a otro stage P0 P1 P2

Programación Paralela Diseño y Comportamiento: Patrones de comunicación paralela: P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P1 0 P11 P12 P13 P14 Trees o Árboles: Hace que la información fluya desde el proceso raíz hacia los procesos hojas o viceversa, ejecutándose en paralelo los nodos que se encuentran en el mismo nivel del árbol

Programación Paralela Diseño y Comportamiento: Patrones de comunicación paralela: Cubos o Hipercubos: Conjunto de procesos interconectados entre sí formando un cubo n-dimensional por ejemplo, dos cubos, cada uno con 8 nodos donde cada nodos esta formado por dos procesos, conectados a su vez con otros nodos formando aristas.

Programación Paralela Diseño y Comportamiento: Patrones de comunicación paralela: Matrices o Mallas: En una malla cada proceso esta conectado con sus vecinos y todos contribuyen entre sí para resolver en común un problema, ejecutándose en paralelo.

Programación Paralela Diseño y Comportamiento: Metodología para definir un paradigma: Identificar el comportamiento paralelo (patrón de comunicación entre procesos) de la aplicación en desarrollo. Elaborar un bosquejo gráfico de su representación. Realizar una definición sintáctica y/o semántica Traducir dicha definición a un programa en el entorno de programación más adecuado para su implementación Verificar que la semántica resultante sea la correcta probando con varios ejemplos distintos demostrando su genericidad Observar el rendimiento de las aplicaciones

Programación Paralela Diseño y Comportamiento: Metodología para definir un paradigma: