METODOLOGÍA DE LA PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

Tamaño: px
Comenzar la demostración a partir de la página:

Download "METODOLOGÍA DE LA PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela"

Transcripción

1 METODOLOGÍA DE LA PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida

2 Tipos de paralelismo Las variaciones entre los paradigmas: Diferencia de esfuerzo en escribir programas. Algunos lenguajes menos esfuerzo para el programador. Otros requieren menos trabajo pero generan un código menos eficiente. Un determinado paradigma puede ser más eficiente que otro al programar sobre determinadas arquitecturas paralelas. Distintas aplicaciones tienen diferentes tipos de paralelismo.

3 Paralelismo implícito/explícito Explícito : El algoritmo paralelo debe especificar explícitamente cómo cooperan los procesadores. La tarea del compilador es sencilla. La del programador es bastante difícil. Implícito: Un lenguaje de programación secuencial y el compilador inserta las instrucciones necesarias para ejecutar el programa en un sistema paralelo. El compilador tiene que analizar y comprender las dependencias para asegurar un mapeo eficiente.

4 Paso de mensajes/espacio de direcciones compartido Espacio de direcciones compartido: El programa se ve como una colección de procesos accediendo a una zona central de variables compartidas. Más de un proceso podría acceder a la misma zona compartida en el mismo instante produciendo resultados impredecibles. Los lenguajes proporcionan primitivas para resolver estos problemas de exclusión mutua.

5 Paso de mensajes/espacio de direcciones compartido Paso de mensajes: El programa es una colección de procesos con variables locales privadas y la posibilidad de enviar y recibir datos mediante paso de mensajes. Los computadores de espacio de direcciones compartido también se pueden programar usando el paradigma de paso de mensajes.

6 Paso de mensajes/espacio de direcciones compartido Los lenguajes de programación para memoria compartida o paso de mensajes son normalmente lenguajes secuenciales aumentados mediante un conjunto de llamadas de sistema especiales. Las llamadas producen primitivas de bajo nivel para el paso de mensajes, sincronización de procesos, exclusión mutua, etc. El problema de estos lenguajes es la portabilidad entre arquitecturas. Librerías como PVM, MPI, OpenMP, con primitivas independientes del computador.

7 Paralelismo de datos/de control Paralelismo de datos: Aplicaciones en las que los datos están sujetos a idéntico procesamiento. Apropiado para máquinas SIMD. También se pueden ejecutar en computadores MIMD. Se requiere sincronización global después de cada instrucción código ineficiente. Solución: relajar la ejecución síncrona de las instrucciones Modelo SPMD: cada procesador ejecuta el mismo programa asíncronamente, ES EL QUE USAREMOS. Lenguajes de paralelismo de datos ofrecen construcciones de alto nivel para compartir información y manejar concurrencia. Programas más fáciles de escribir y comprender. El código generado por estas construcciones no es tan eficiente como el obtenido usando primitivas de bajo nivel.

8 Paralelismo de datos/de control Paralelismo de control: Ejecución simultánea de cadenas de instrucciones diferentes. Las instrucciones se pueden aplicar sobre la misma cadena de datos aunque normalmente se aplican a cadenas de datos diferentes. Adecuados para MIMD ya que requiere múltiples cadenas de instrucciones.

9 Paso de mensajes Extensiones básicas: Son extensiones en los lenguajes secuenciales para soportar el paso de mensajes. Dos primitivas básicas de comunicación: SEND y RECEIVE. La forma general de send es: SEND (message, messagesize, target, type, flag) message contiene los datos que se envían, messagesize indica el tamaño en bytes, target es la etiqueta del procesador o procesadores destino, type es una constante con la que se distingue entre varios tipos de mensajes, flag indica si la operación del SEND es bloqueante o nobloqueante.

10 Paso de mensajes La primitiva RECEIVE lee un mensaje del buffer de comunicación en la memoria. RECEIVE (message, messagesize, source, type, flag) messsage indica el lugar donde se almacenan los datos, messagesize indica el número máximo de bytes a poner en mensaje, source indica la etiqueta del procesador cuyo mensaje se va a leer, type especifica el tipo de mensaje que se va a leer. Puede haber más de un mensaje en el buffer de comunicación de los procesadores fuente, flag especifica si la operación de recibir es bloqueante o no bloqueante.

11 Paralelismo de datos Lenguajes de paralelismo de datos: facilitar al programador la tarea de expresar el paralelismo disponible en un programa de manera independiente de la arquitectura. Características: Se genera una sola cadena de instrucciones. Ejecución síncrona de instrucciones. Más fácil escribir y depurar programas de paralelismo de datos puesto que los bloqueos son imposibles. El programador especifica el paralelismo en el código. Asocia un procesador virtual con una unidad fundamental de paralelismo. El programador expresa la computación en términos de las operaciones realizadas por los procesadores virtuales. Permite que cada procesador tenga acceso a las posiciones de memoria de otros procesadores.

12 Paralelismo de datos Los compiladores para los lenguajes de paralelismo de datos deben mapear los procesadores virtuales en procesadores físicos, generar código para comunicar datos y esforzarse para la ejecución síncrona de instrucciones. Los procesadores virtuales son emulados por procesadores físicos. Si el número de procesadores virtuales es mayor que el número de procesadores físicos, cada procesador físico emula varios procesadores virtuales. Algunos lenguajes de paralelismo de datos contienen primitivas que permiten al programador especificar el mapeo deseado de los procesadores virtuales en los físicos.

13 Paralelismo de datos Ejemplo: C* Lenguaje de programación para paralelismo de datos. Extensión del lenguaje C, diseñado por Thinking Machines Corporation para el computador CM-2. Incluye un método para describir el tamaño y la forma de los datos paralelos y crear variables paralelas. Incluye operadores y expresiones para los datos paralelos.

14 Variables: Paralelismo de datos variables escalares: idéntica a una variable ordinaria. Se asignan en el host. variables paralelas: Se asignan en todos los nodos. Tienen tantos elementos como número de procesadores. Una variable paralela tiene una "forma" además de un tipo. Una "forma" es una plantilla para los datos paralelos, o sea una forma de configurar los datos lógicamente. Define cuántos elementos paralelos existen y cómo están organizados. Una "forma" tiene un número de dimensiones, rango, con un número de procesadores o posiciones en cada dimensión.

15 shape [1024] ring shape [1024][1024] mesh Paralelismo de datos int flag flag int ring:a a int mesh:b b

16 Paralelismo de datos C* no permite que el programador especifique explícitamente el mapeo virtual a físico. C* mapea los procesadores virtuales en procesadores físicos de forma que los procesadores virtuales vecinos se mapean en procesadores físicos vecinos. C* permite especificar a través de qué dimensiones de la "forma" se hacen comunicaciones más a menudo. El compilador usa esta información para reducir costes de comunicación. Después de que se ha especificado una forma, se pueden declarar variables paralelas de esa "forma". Las variables paralelas tienen un tipo, una clase de almacenamiento, y una forma.

17 Paralelismo de datos Operaciones paralelas Si los operandos de una operación son escalares, el código C* es igual que el código C y la operación se realiza en el host. Si los operandos son variables paralelas, x+=y donde x e y son variables paralelas. Esta asignación añade el valor de y en cada posición de la "forma" al valor de x en la posición correspondiente de la forma. Todas las sumas tienen lugar en paralelo. x e y deben ser de la misma "forma". x=a, donde a es una variable escalar, el valor de a se almacena en cada posición de x. Esto es similar a una operación de broadcast. a =[4]x es válida y asigna a a el valor de x de la cuarta posición de la forma. a+=x suma todos los valores de x y los almacena en a.

18 Paralelismo de datos Comunicación. C* soporta dos métodos de comunicación interprocesador: comunicación en red: las variables paralelas del mismo tipo pueden comunicarse en patrones regulares. Es bastante eficiente. comunicación general: el valor de cualquier elemento de una variable paralela se puede enviar a cualquier otro elemento aunque las variables paralelas no sean de la mismo "forma".

19 Espacio de direcciones compartido Primitivas para asignar variables compartidas. Existen dos tipos de variables: compartidas (shared) y locales (private) Primitivas para la exclusión mutua y sincronización. Una sección crítica contiene código que sólo puede ser ejecutado por un procesador en un momento determinado. Los lenguajes proporcionan llaves (locks) para ayudar al programador a cumplir la exclusión mutua en la ejecución de secciones críticas. Las primitivas de sincronización de barreras se usan cuando los procesos necesitan sincronizarse. Cada proceso espera en la barrera a los otros procesos, y después de la sincronización todos los procesos continúan con su ejecución.

20 Espacio de direcciones compartido Primitivas para la creación de procesos Mediante una llamada al sistema que crea procesos idénticos al padre. Estos procesos comparten las variables declaradas "compartidas" por los procesos padre y las llaves declaradas e inicializadas por los procesos padre. En la mayoría de computadores de espacio de direcciones compartido, esta operación se llama fork. Cuando todos los subprocesos terminan, se mezclan usando otra primitiva, normalmente llamada join. Al principio de la ejecución, podemos tener un solo proceso (proceso maestro). Cuando el maestro necesita hacer una tarea en paralelo, crea procesos esclavos. Cuando la tarea se completa, los esclavos terminan y devuelven el control al maestro.

21 Programa secuencial. El compilador se encarga de paralelizarlo. Normalmente en sistemas de memoria compartida. Paralelizan bucles: dividen el trabajo en los bucles entre los distintos procesadores Si puede haber dependencia de datos no paraleliza: para i=1 to n a[i]=b[i]+a[i-1] Compiladores paralelizantes finpara Se puede forzar la paralelización con opciones de compilación, o con directivas (OpenMP). Generan ficheros con información de bucles paralelizados y no paralelizados, y el motivo.

22 Lenguajes paralelos de alto nivel Primitivas que debería contener un lenguaje paralelo: Paralelización de bucles, Pipeline, Crear grupo de procesos, Asociar a cada constructor (esqueleto) una función de coste. Mapeo de los procesos generados en función de la función de coste. Ejemplos Clik, UPC, Co-Array Fortran, mpc Librerías para campos específicos de trabajo Desarrollar librerías para campos donde más se usa la computación paralela, con capacidades de autooptimización: el usuario llama a la rutina y esta decide cuántos y qué procesadores usar, la distribución de datos, Álgebra lineal, transformada rápida de Fourier, optimización

23 Modelo PRAM Computador con p procesadores, numerados de 0 a p-1 cada uno con su índice de referencia comparten un espacio único de direcciones de memoria cada uno puede acceder en un tiempo constante a cualquier posición de memoria, comparten información a través de la memoria comparten una única señal de reloj que permite ejecutar instrucciones de forma síncrona Resolución de conflictos de acceso concurrente a una posición de memoria: EREW (Exclusive Read-Exclusive Write) CREW ERCW CRCW Diferentes posibilidades para resolver el problema de escritura concurrente

24 Modelo PRAM: Multiplicación matriz-vector A b x = = x i = A (i)t b calculado por P 0 = calculado por P 1 calculado por P 2 calculado por P 3

25 En paralelo en cada P k, k de 0 a p-1: Si k=0 PRAM EREW: Multiplicación matriz-vector Para i=0 hasta p-1 m[i]=m n[i]=n-1 t[k]=m/p Para j=0 hasta n-1 B[j,i]=b[j] Para i[k]=0 hasta t[k]-1 f[k]=i[k]+k*t[k] para los índices, los tamaños de los datos, el vector multiplicador..., para evitar x[f[k]]=0 referencias simultáneas Para j[k]=0 hasta n[k] Coste: x[f[k]]=x[f[k]]+a[f[k],j[k]]*b[j[k],k] 3nm/p+4m/p+2np+3p+2 m n t B n m n b p m n nm/p... m/p necesidad de crear vectores auxiliares, b

26 En paralelo en cada P k, k de 0 a p-1: t=m/p PRAM CRCW: Multiplicación matriz-vector Para i=0 hasta t-1 f[k]=i+k*t x[f[k]]=0 Para j=0 hasta n-1 x[f[k]]=x[f[k]]+a[f[k],j]*b[j] pueden ser índices distintos, pero cada uno va por una fila distinta Coste: 3nm/p+4m/p+1 Cómo sería en memoria distribuida?

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela

Más detalles

Computación Matricial y Paralela

Computación Matricial y Paralela Computación Matricial y Paralela Programación en Memoria Compartida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia

Más detalles

TEMA 2: PROGRAMACIÓN PARALELA (I)

TEMA 2: PROGRAMACIÓN PARALELA (I) Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas ARQUITECTURA DE COMPUTADORES II AUTORES: David Expósito Singh Florin Isaila Daniel Higuero Alonso-Mardones Javier García Blas Borja Bergua

Más detalles

Paralelismo _Arquitectura de Computadoras IS603

Paralelismo _Arquitectura de Computadoras IS603 Paralelismo _Arquitectura de Computadoras IS603 INTRODUCCION El objetivo de esta investigación, es conceptualizar las diferentes tipos de paralelismo referente al área de Arquitectura de Computadoras,

Más detalles

Granularidad y latencia

Granularidad y latencia Niveles de paralelismo y latencias de comunicación Niveles de paralelismo. Granularidad o tamaño de grano. Latencia de comunicación. Particionado de los programas. Empaquetado de granos. Planificación

Más detalles

Taller de Programación Paralela

Taller de Programación Paralela Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 17, 2008 Motivación Programar aplicaciones paralelas no es una tarea trivial. Paralelismo

Más detalles

Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez.

Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez. Paralelismo Conceptos generales Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez. Ejecución paralela: varias tareas/instrucciones de un programa

Más detalles

José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES

José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES MÁSTER EN NUEVAS TECNOLOGÍAS EN INFORMÁTICA Diciembre 2010 Introducción Por qué utilizar Matlab paralelo? MATLAB es

Más detalles

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

PARADIGMA y LENGUAJES DE PROGRAMACIÓN CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre

Más detalles

Programación Gráfica de Altas Prestaciones

Programación Gráfica de Altas Prestaciones rogramación Gráfica de Altas restaciones lataformas de altas prestaciones para Infomática Gráfica. Máster de Desarrollo de Software Depto. de Lenguajes y Sistemas Informáticos lsi.ugr.es/~jmantas/ga 1.

Más detalles

Programación Paralela y Concurrente

Programación Paralela y Concurrente 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,

Más detalles

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia)

Más detalles

Francisco J. Hernández López

Francisco J. Hernández López Francisco J. Hernández López fcoj23@cimat.mx Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Sistema de Cómputo Paralelo Hardware Parallel programming:

Más detalles

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

Programación Concurrente y Paralela. Unidad 1 Introducción Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el

Más detalles

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelización de problemas de recorrido de árboles Trabajadores replicados

Más detalles

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia) 1 / 31

Más detalles

TEMA 7. ARRAYS (LISTAS Y TABLAS).

TEMA 7. ARRAYS (LISTAS Y TABLAS). TEMA 7. ARRAYS (LISTAS Y TABLAS). En capítulos anteriores se han descrito las características de los tipos de datos básicos o simples (carácter, entero y coma flotante). Asimismo, se ha aprendido a definir

Más detalles

Algoritmos en Árbol y Grafo Computación Pipeline

Algoritmos en Árbol y Grafo Computación Pipeline Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Algoritmos en Árbol y Grafo Computación Pipeline Domingo Giménez (Universidad

Más detalles

Análisis de Algoritmos CB-102

Análisis de Algoritmos CB-102 Análisis de Algoritmos CB-102 Algoritmos en Paralelo Centro de Manufactura / Centro de Sistema Inteligentes ITESM Algoritmos en Paralelo TC-4001 - p. 1/22 Hasta este punto, nuestro modelo de computación

Más detalles

Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas

Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas Arquitectura de Computadores Curso 2009-2010 Transparencia: 2 / 21 Índice Introducción Taxonomía de Flynn

Más detalles

Modelos de Programación Paralela

Modelos de Programación Paralela Modelos de Programación Paralela Modelos de Programación para Multiprocesadores El Modelo de Variables Compartidas Expresión del Paralelismo en el Modelo de Variables Compartidas Primitivas de Sincronización

Más detalles

4. Programación Paralela

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

Capítulo 3. Introducción a la programación. Continuar

Capítulo 3. Introducción a la programación. Continuar Capítulo 3 Introducción a la programación Continuar Introducción Java es un lenguaje que tiene muchas ventajas frente a otros lenguajes de programación: es open source (código abierto), esto permite ver

Más detalles

Introducción a los Sistemas Multiprocesadores

Introducción a los Sistemas Multiprocesadores Introducción a los Sistemas Multiprocesadores Multiprocesadores estilo Von Neumann Modelos de Organización Modelos de Programación Clasificación de los Multiprocesadores Por qué Sistemas Multiprocesadores?

Más detalles

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

UNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM UNIDAD II Metodología de programación paralela UNIDAD II: Metodología de programación paralela Metodología de programación paralela Algunos conceptos que nos ayudarán a entender mejor el tema. Modelos

Más detalles

Paradigma de paso de mensajes

Paradigma de paso de mensajes Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:

Más detalles

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3: 3 - Paradigmas de Programación

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3: 3 - Paradigmas de Programación 3 - Paradigmas de Programación En los inicios los lenguajes de programación imitaron y abstrajeron las operaciones de una computadora, lo cual trajo aparejado que el tipo de computadora para el cual fueron

Más detalles

Programación Concurrente Recopilación de teoría referente a la materia

Programación Concurrente Recopilación de teoría referente a la materia UNIVERSIDAD AMERICANA Programación Concurrente Recopilación de teoría referente a la materia Ing. Luis Müller Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente, a

Más detalles

La Máquina de Acceso Aleatorio (Random Access Machine)

La Máquina de Acceso Aleatorio (Random Access Machine) La Máquina de Acceso Aleatorio (Random Access Machine) Nuestro modelo de cómputo secuencial es la máquina de acceso aleatorio (RAM, Random Access Machine) mostrada en la Figura 2.1, y que consiste de:

Más detalles

Entornos de programación paralela basados en modelos/paradigmas

Entornos de programación paralela basados en modelos/paradigmas Program. paralela/distribuida Entornos de programación paralela basados en modelos/paradigmas Sobre la programación paralela 1 Índice Reflexiones sobre la programación paralela MapReduce Propuesta original

Más detalles

Fecha de elaboración: Agosto de 2004 Fecha de última actualización: Julio de 2010

Fecha de elaboración: Agosto de 2004 Fecha de última actualización: Julio de 2010 PROGRAMA DE ESTUDIO Programa Educativo: Área de Formación : Licenciatura en ciencias computacionales Integral profesional Programa elaborado por: Programación Concurrente Horas teóricas: 1 Horas prácticas:

Más detalles

HERRAMIENTAS SOFTWARE PARA SISTEMAS DISTRIBUIDOS

HERRAMIENTAS SOFTWARE PARA SISTEMAS DISTRIBUIDOS HERRAMIENTAS SOFTWARE PARA SISTEMAS DISTRIBUIDOS José Luis Pastrana Brincones (pastrana@lcc.uma.es) Departamento de Lenguajes y Ciencias de la Computación de la Universidad de Málaga Introducción. El hombre,

Más detalles

Introducción a la Programación de Memoria Compartida.. con OpenMP

Introducción a la Programación de Memoria Compartida.. con OpenMP Introducción a la Programación de Memoria Compartida.. con OpenMP Carlos Jaime BARRIOS HERNANDEZ, PhD. Escuela de Ingeniería de Sistemas e Informática Universidad Industrial de Santander Las herramientas

Más detalles

Conceptos básicos de paralelismo

Conceptos básicos de paralelismo Capítulo 2 Conceptos básicos de paralelismo 2.1. Introducción En este capítulo introduciremos algunos conceptos del paralelismo que se requeriran en la posterior discusión. Particularmente relevantes para

Más detalles

Programación de Memoria Compartida - OpenMP

Programación de Memoria Compartida - OpenMP Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Programación de Memoria Compartida - OpenMP Contenido 1 Tipos de paralelismo 2 OpenMP Ejemplo básico Directivas

Más detalles

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES Autor: A.P.U. Enzo Rucci Director: Ing. Armando E. De Giusti Co-Director: Lic. Franco Chichizola Tesina de

Más detalles

Paralelismo Relajado Paralelismo Síncrono

Paralelismo Relajado Paralelismo Síncrono Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelismo Relajado Paralelismo Síncrono Domingo Giménez (Universidad de Murcia) 1

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

Sistemas Complejos en Máquinas Paralelas

Sistemas Complejos en Máquinas Paralelas Sistemas Complejos en Máquinas Paralelas Clase 1: OpenMP Francisco García Eijó Departamento de Computación - FCEyN UBA 15 de Mayo del 2012 Memoria compartida Las mas conocidas son las máquinas tipo Symmetric

Más detalles

Diseño de algoritmos paralelos

Diseño de algoritmos paralelos Diseño de algoritmos paralelos Curso 2011-2012 Esquema del capítulo Visión general de algunos algoritmos serie. Algoritmo paralelo vs. Formulación paralela Elementos de un Algoritmo paralelo Métodos de

Más detalles

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores 18:55 1 2 Temas Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores Objetivo Que el estudiante logre conocer, comprender y manejar conceptos y técnicas

Más detalles

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema

Más detalles

Arquitectura de Computadoras. Clase 8 Procesadores superescalares

Arquitectura de Computadoras. Clase 8 Procesadores superescalares Arquitectura de Computadoras Clase 8 Procesadores superescalares Procesador Escalar Ejecución secuencial de instrucciones F: búsqueda D: decodificación F D ALU F D ALU F D ALU Instrucción 1 Instrucción

Más detalles

Cilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011

Cilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011 Un entorno de programación paralela Tomás Muñoz Rodríguez < tomas.munoz@um.es > 17 de noviembre de 2011 Profesor: Domingo Jiménez Cánovas Asignatura: Metodología de la Programación Paralela Facultad de

Más detalles

Tema 3. Paso de mensajes. mensajes. Bibliografía. Sistemas de paso de mensajes (2) Sistemas de paso de mensajes. Ventajas del paso de.

Tema 3. Paso de mensajes. mensajes. Bibliografía. Sistemas de paso de mensajes (2) Sistemas de paso de mensajes. Ventajas del paso de. Tema 3. Paso de mensajes Bibliografía Programación Concurrente J. Palma, C. Garrido, F. Sánchez, A. Quesada, 2003 Capítulo 7 Principles of Concurrent and Distributed Programming M. Ben-Ari. Prentice Hall,

Más detalles

Lusitania. Pensando en Paralelo. César Gómez Martín

Lusitania. Pensando en Paralelo. César Gómez Martín Lusitania Pensando en Paralelo César Gómez Martín cesar.gomez@cenits.es www.cenits.es Esquema Introducción a la programación paralela Por qué paralelizar? Tipos de computadoras paralelas Paradigmas de

Más detalles

Procesamiento Paralelo

Procesamiento Paralelo Procesamiento Paralelo Arquitecturas de Computadoras Paralelas Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar

Más detalles

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

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute. Los problemas que se plantean en la vida diaria suelen ser resueltos mediante el uso de la capacidad intelectual y la habilidad manual del ser humano. La utilización de la computadora en la resolución

Más detalles

Universidad Nacional Autónoma de México Instituto de Geofísica

Universidad Nacional Autónoma de México Instituto de Geofísica Universidad Nacional Autónoma de México Instituto de Geofísica Aplicación del Cómputo Paralelo a la Modelación de Sistemas Continuos en Ciencias e Ingeniería Presentan: Antonio Carrillo Ledesma Ismael

Más detalles

Cómputo paralelo con openmp y C

Cómputo paralelo con openmp y C Cómputo paralelo con openmp y C Sergio Ivvan Valdez Peña Guanajuato, México. 13 de Marzo de 2012 Sergio Ivvan Valdez Peña Cómputo Guanajuato, paralelo conméxico. openmp y () C 13 de Marzo de 2012 1 / 27

Más detalles

CDI Arquitecturas que soportan la concurrencia. granularidad

CDI Arquitecturas que soportan la concurrencia. granularidad granularidad Se suele distinguir concurrencia de grano fino es decir, se aprovecha de la ejecución de operaciones concurrentes a nivel del procesador (hardware) a grano grueso es decir, se aprovecha de

Más detalles

PROGRAMA DE ESTUDIO Área de Formación : Fecha de elaboración: 28 de mayo de 2010 Fecha de última actualización:

PROGRAMA DE ESTUDIO Área de Formación : Fecha de elaboración: 28 de mayo de 2010 Fecha de última actualización: PROGRAMA DE ESTUDIO Programa Educativo: Área de Formación : Licenciatura en Sistemas Computacionales Integral profesional Horas teóricas: 2 Horas prácticas: 2 Total de Horas: 4 Cómputo paralelo Total de

Más detalles

MPP. MIMD Computador Masivamente Paralelo

MPP. MIMD Computador Masivamente Paralelo MPP MIMD Computador Masivamente Paralelo BLUE GENE/Q Introducción Se trata del tercer representante de una serie que comenzó con el Blue Gene/L y continuó con el Blue Gene/P. Son máquinas desarrolladas

Más detalles

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1 TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1- Cuáles son las principales funciones de un sistema operativo? Los Sistemas Operativos tienen como objetivos o funciones principales lo siguiente; Comodidad;

Más detalles

Escalabilidad: El desempeño del software y hardware debe ser eficiente desde un grupo pequeño de procesadores a un grupo muy grande de procesadores.

Escalabilidad: El desempeño del software y hardware debe ser eficiente desde un grupo pequeño de procesadores a un grupo muy grande de procesadores. Página 1 de 8 Introducción a BSP La motivación para el modelo de computación paralela BSP (The Bulk-Synchronous Parallel Model) surge de una comparación con lo que se observa en el mundo de la computación

Más detalles

MULTIPROCESADORES TIPOS DE PARALELISMO

MULTIPROCESADORES TIPOS DE PARALELISMO Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Definición. Tema 1: Introducción

Definición. Tema 1: Introducción Tema 1: Introducción Definición Objetivos de los sistemas de bases de datos Vistas de datos Modelos de datos Lenguajes de definición de datos (DDL) Lenguajes de manipulación de datos (DML) Gestión de transacciones

Más detalles

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

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria 1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo

Más detalles

Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela

Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela Introducción Herramientas Estudio Conclusiones Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela Ingeniería en Informática

Más detalles

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS En este capítulo, se realiza la evaluación y comparación de los métodos de paralelización de recurrencias descritos y propuestos en este trabajo. Los resultados

Más detalles

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

Con estas consideraciones, Flynn clasifica los sistemas en cuatro categorías: Taxonomía de las arquitecturas 1 Introducción Introducción En este trabajo se explican en detalle las dos clasificaciones de computadores más conocidas en la actualidad. La primera clasificación, es la

Más detalles

Taxonomía de las arquitecturas

Taxonomía de las arquitecturas Taxonomía de las arquitecturas 1 INTRODUCCIÓN 2 2 CLASIFICACIÓN DE FLYNN 3 2.1 SISD (SINGLE INSTRUCTION STREAM, SINGLE DATA STREAM) 3 2.2 SIMD (SINGLE INSTRUCTION STREAM, MULTIPLE DATA STREAM) 4 2.2.1

Más detalles

Modelos de Programación Paralela Prof. Gilberto Díaz

Modelos de Programación Paralela Prof. Gilberto Díaz Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Modelos de Programación Paralela Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas, Facultad de Ingeniería

Más detalles

Unidad 9. Daniel Rojas UTN. Thursday, July 31, 14

Unidad 9. Daniel Rojas UTN. Thursday, July 31, 14 Unidad 9 Daniel Rojas UTN Manejo de Memoria La memoria consiste en un punto central de los sistemas modernos de computadora. Consiste en arreglos de bytes, cada uno con su propia dirección. Ciclo de Instrucciones

Más detalles

CARACTERIZACION DE PROBLEMAS A SOLUCIONAR MEDIANTE PROGRAMACIÓN MULTIPROCESO DE MEMORIA COMPARTIDA. Autor ERIKA VIVIANA RIAÑO BEJAR

CARACTERIZACION DE PROBLEMAS A SOLUCIONAR MEDIANTE PROGRAMACIÓN MULTIPROCESO DE MEMORIA COMPARTIDA. Autor ERIKA VIVIANA RIAÑO BEJAR CARACTERIZACION DE PROBLEMAS A SOLUCIONAR MEDIANTE PROGRAMACIÓN MULTIPROCESO DE MEMORIA COMPARTIDA Autor ERIKA VIVIANA RIAÑO BEJAR Director JOSE ORLANDO MALDONADO BAUTISTA DEPARTAMENTO DE INGENIERÍAS ELÉCTRICA

Más detalles

Algoritmos paralelos para la Multiplicación de Matrices

Algoritmos paralelos para la Multiplicación de Matrices Introducción Paralelizar onclusiones Trabajo ibliografía lgoritmos paralelos para la Multiplicación de Matrices Universidad de Murcia - UM 18 de diciembre de 2008 Introducción Paralelizar onclusiones Trabajo

Más detalles

Una Biblioteca Numérica Paralela para UPC

Una Biblioteca Numérica Paralela para UPC 1/32 Una Biblioteca Numérica Paralela para UPC Jorge González-Domínguez 1 *, María J. Martín 1, Guillermo L. Taboada 1, Juan Touriño 1, Ramón Doallo 1, Andrés Gómez 2 1 Grupo de Arquitectura de Computadores

Más detalles

Usando el Sistema Operativo

Usando el Sistema Operativo Sistemas Operativos Pontificia Universidad Javeriana Enero de 2010 Los sistemas operativos Los sistemas operativos Perspectivas del Computador Concepto general El sistema operativo es parte del software

Más detalles

Fundamentos de programación JAVA

Fundamentos de programación JAVA Pág. N. 1 Fundamentos de programación JAVA Familia: Editorial: Autor: Computación e informática Macro Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-238-7 N. de páginas: 296 Edición: 2. a 2014 Medida:

Más detalles

Lógica: Algoritmo: Archivo: Base de datos: Bit:

Lógica: Algoritmo: Archivo: Base de datos: Bit: Lógica: Algoritmo: Archivo: Base de datos: Bit: 1 LÓGICA: Es una secuencia de operaciones realizadas por el hardware o por el software. Lógica del hardware, Son los circuitos y Chips que realizan las operaciones

Más detalles

Programación Funcional: F# Brayan Esteban Garzón Federico Gómez Juan Camilo Lozano

Programación Funcional: F# Brayan Esteban Garzón Federico Gómez Juan Camilo Lozano Programación Funcional: F# Brayan Esteban Garzón Federico Gómez Juan Camilo Lozano Contenido de la presentación Conceptos clave y principales características Por qué F#? Referencia del Lenguaje Ejemplos

Más detalles

COMPONENTES DEL PC LEONARDO OLIVARES VILLA MATEO CARDONA ARENAS

COMPONENTES DEL PC LEONARDO OLIVARES VILLA MATEO CARDONA ARENAS COMPONENTES DEL PC LEONARDO OLIVARES VILLA MATEO CARDONA ARENAS Tipos de procesadores. Dedicados: Para desarrollar una tarea muy especifica. Ejecutando un único algoritmo de forma óptima. de propósito

Más detalles

UNIDAD I. Universidad del Zulia Costa Oriental del Lago. Conceptos Básicos

UNIDAD I. Universidad del Zulia Costa Oriental del Lago. Conceptos Básicos Costa Oriental del Lago UNIDAD I Conceptos Básicos Comandos internos y externos. Estructura básicas: entidad, atributo, base de datos, clave primaria y secundaria, registro y archivo de datos empresas

Más detalles

Ingeniería en Computación

Ingeniería en Computación Universidad Autónoma del Estado de México Centro Universitario UAEM Valle de México Ingeniería en Computación Unidad de Aprendizaje: Programación Paralela y Distribuida Tema: Introducción a los Sistemas

Más detalles

FUNCIONAMIENTO DEL ORDENADOR

FUNCIONAMIENTO DEL ORDENADOR FUNCIONAMIENTO DEL ORDENADOR COMPUTACIÓN E INFORMÁTICA Datos de entrada Dispositivos de Entrada ORDENADOR PROGRAMA Datos de salida Dispositivos de Salida LOS ORDENADORES FUNCIONAN CON PROGRAMAS Los ordenadores

Más detalles

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017 Primera Parte Fund. de la Informática Int. a la Programación Int. a la Computación Resolución de Problemas y Algoritmos Segundo Cuatrimestre 2017 1 Etapas en el proceso de resolver un problema: 1- Comprender

Más detalles

Paralelismo en el procesador

Paralelismo en el procesador 2017 Paralelismo en el procesador ARQUITECTURA DE COMPUTADORAS ING. ELMER PADILLA AUTOR: GERARDO ROBERTO MÉNDEZ LARIOS - 20111013326 Ciudad universitaria, Tegucigalpa M.D.C., 04 de mayo del 2017. Contenido

Más detalles

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION Capítulo 3 Subprogramas Con lo explicado hasta aquí se pueden escribir programas sencillos y no demasiado largos. Pero varias razones justifican la necesidad de disponer de otro tipo de recursos. Por una

Más detalles

Concurrencia de Procesos

Concurrencia de Procesos Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)

Más detalles

Manuel Arenaz.

Manuel Arenaz. Manuel Arenaz arenaz@udc.es Algoritmo Secuencial para el Cálculo del Número PI Método de Montecarlo Generación de experimentos aleatorios independientes consistentes en generar N puntos (x,y) con x,y [0,1]

Más detalles

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA Ingeniería en Informática Beneficios de la programación Especificación de ejecución Características de los sistemas s Verificación de programas s 2 Bibliografía Programción

Más detalles

Interfaz de Paso de Mensajes MPI. Christian Chinchilla Brizuela

Interfaz de Paso de Mensajes MPI. Christian Chinchilla Brizuela Interfaz de Paso de Mensajes MPI Christian Chinchilla Brizuela Agenda Definición Objetivo principal MPI Historia Ventajas Desventajas Estructura MPI Programa MPI Llamadas de MPI Funciones Principales MPI

Más detalles

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

Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS PROCESOS DISTRIBUIDOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen El proceso cliente servidor es la clave para comprender el potencial de los sistemas de información y las redes

Más detalles

Message Passing Interface (MPI)

Message Passing Interface (MPI) Message Passing Interface (MPI) INTRODUCCIÓN MPI (Message Passing Interface) como es un interfaz estandarizada para la realización de aplicaciones paralelas basadas en pasaje de mensajes. El modelo de

Más detalles

mpc Un entorno de programación paralela basado en C Carlos Hoyos Barceló

mpc Un entorno de programación paralela basado en C Carlos Hoyos Barceló mpc Un entorno de programación paralela basado en C Carlos Hoyos Barceló Introducción mpc es una extensión del lenguaje ANSI C que incorpora primitivas para la programación de aplicaciones paralelas portables

Más detalles

Programación en Memoria Compartida: OpenMP

Programación en Memoria Compartida: OpenMP Programación en Memoria Compartida: OpenMP Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo Universidad de Murcia 1 Nociones básicas Modelo de programación

Más detalles

Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV IPN

Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV IPN Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV IPN ccoello@cs.cinvestav.mx Por qué estudiar conceptos de Lenguajes de Programación? Para incrementar nuestra capacidad de expresar ideas

Más detalles

PROGRAMACIÓN CONCURRENTE

PROGRAMACIÓN CONCURRENTE PROGRAMACIÓN CONCURRENTE Lenguajes de Programación - Progr. Concurrente 1 Introducción El concepto fundamental de la programación concurrente es la noción de Proceso. Proceso: Cálculo secuencial con su

Más detalles

TEMA 4 PROCESAMIENTO PARALELO

TEMA 4 PROCESAMIENTO PARALELO TEMA 4 PROCESAMIENTO PARALELO Tipos de plataformas de computación paralela Organización lógica Organización física Sistemas de memoria compartida Sistemas de memoria distribuida Tipos de plataformas de

Más detalles

Clases 02 & 03: Revisión de conceptos

Clases 02 & 03: Revisión de conceptos Clases 02 & 03: Revisión de conceptos Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido

Más detalles

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing.

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing. Primera Parte Resolución de Problemas y Algoritmos Ing. En Informática e Ing. En Computación Primer Cuatrimestre 2017 1 Lenguajes Algorítmicos Los algoritmos pueden describirse, en mayor o menor detalle,

Más detalles

Clasificación de las Arquitecturas

Clasificación de las Arquitecturas Clasificación de las Arquitecturas MIA José Rafael Rojano Cáceres Arquitectura de Computadoras I Por la taxonomía de Flynn 1 Flynn Flujo de datos Simple Múltiple Flujo de datos Simple Múltiple SISD MISD

Más detalles

Procesamiento Paralelo

Procesamiento Paralelo Procesamiento Paralelo Arquitecturas de Computadoras Paralelas Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar

Más detalles

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Función

Más detalles

15 de Octubre Crowne Plaza Ciudad de México. Simposio Técnico de Medición y Automatización. ni.com/mexico

15 de Octubre Crowne Plaza Ciudad de México. Simposio Técnico de Medición y Automatización. ni.com/mexico 15 de Octubre Crowne Plaza Ciudad de México Simposio Técnico de Medición y Automatización ni.com/mexico Arquitecturas de Programación para Sistemas Multinúcleo Financiero Embebido Médico Científico Industrial

Más detalles

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes Problemas, Algoritmos y Programas PROBLEMA Solución Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar ALGORITMO Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR PROGRAMA Problemas,

Más detalles