Paralelización de Programas Secuenciales: OpenMP

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

Download "Paralelización de Programas Secuenciales: OpenMP"

Transcripción

1 Paralelización de Programas Secuenciales: OpenMP Manuel Arenaz

2 Índice Introducción a la programación paralela Programación con OpenMP Directivas de compilación Librería de funciones Variables de entorno

3 3 Paralelización de Programas Secuenciales: OpenMP Qué es la Programación Paralela? Computador estándar secuencial: Ejecuta las instrucciones de un programa en orden para producir un resultado Idea de la computación paralela: Producir el mismo resultado utilizando múltiples procesadores Objetivos: Reducir el tiempo de ejecución Reducir los requerimientos de memoria Manuel Arenaz, 2006 Introducción a la programación paralela

4 4 Paralelización de Programas Secuenciales: OpenMP Tipos de arquitecturas paralelas Memoria distribuida Memoria compartida UMA Memoria compartida NUMA IBM SP2, Clusters PCs,... Modelo de Programacion: Paso de mensajes Sun HPC, IBM SMP,... SGI Origin 2000 Modelo de Programacion: Memoria Compartida Manuel Arenaz, 2006 Introducción a la programación paralela

5 5 Paralelización de Programas Secuenciales: OpenMP Modelos de Programación Paso de mensajes (e.g. PVM, unix sockets): Espacio de direcciones local (i.e. accesible sólo por un procesador) Intercambio de información y sincronización mediante mensajes Memoria compartida (e.g. OpenMP, threads): Espacio de direcciones global (i.e. accesible por todos los procesadores) Intercambio de información y sincronización mediante variables compartidas Manuel Arenaz, 2006 Introducción a la programación paralela

6 6 Paralelización de Programas Secuenciales: OpenMP Ejemplo: Cálculo PI /* Cálculo del contadori */ cont=0 do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo /* Cálculo de PI */ pi=4*cont/n Manuel Arenaz, 2006 Inicializacion(&mytid,&li,&ls) /* Cálculo del contador local */ cont=0 do i=li,ls x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo /* Cálculo del contador global */ calculo_cont_global(&contglobal) /* Cáculo de PI */ if( mytid=0 ) pi=4*contglobal/n Inicializacion(&mytid,&li,&ls) { if( pvm_parent() = -1 ) pvm_spawn(prog,...,p,tids) mytid=pvn_mytid() li=mytid*n/p ls=(mytid+1)*n/p } calculo_cont_global(&contglobal) { if( mytid=0 ) do proc=1,p-1 pvm_recv(-1,tag) pvm_upkint(&cont,1,1) cont_global += cont enddo else pvm_initsend(pvmdatadefault) pvm_pkint(&cont,1,1) pvm_send(pvm_parent(),tag) endif } Introducción a la programación paralela

7 Índice Introducción a la programación paralela Programación con OpenMP Directivas de programación Librería de funciones Variables de entorno

8 8 Paralelización de Programas Secuenciales: OpenMP OpenMP es una colección de directivas, librerías y variables de entorno Qué es OpenMP? Modelo portable de programación paralela Los programas se descomponen en varios threads que comparten datos Intercambio de información y sincronización mediante lectura/escritura de variables compartidas entre los threads

9 9 Paralelización de Programas Secuenciales: OpenMP Qué es OpenMP? Fuente: Culler, D.E. y Singh J.P.. Parallel Computer Architecture: A Hardware/Software Approach. Morgan Kaufmann Pub., 1999.

10 10 Paralelización de Programas Secuenciales: OpenMP Qué es OpenMP? Paralelización con librería de funciones: El programador tiene que tener en cuenta todos los detalles de sincronización Modifica el código original Ventajas: Flexibilidad, eficiencia Paralelización con directivas: El programador añade directivas de compilación El compilador traduce las directivas en llamadas a la librería de funciones No modifica el código original Ventajas: Sencillez, rapidez de desarrollo Manuel Arenaz, 2006 Programación con OpenMP

11 11 Paralelización de Programas Secuenciales: OpenMP Qué es OpenMP?

12 13 Paralelización de Programas Secuenciales: OpenMP Directiva de Creación/Destrucción de Threads (1/4) Define una región paralela, i.e. un bloque de código ejecutado en paralelo por varios threads Clásulas: DEFAULT PRIVATE SHARED FIRSTPRIVATE REDUCTION!$omp parallel [cláusulas]...código estructurado...!$omp end parallel #pragma omp parallel [cláusulas] {...código estructurado... }

13 14 Paralelización de Programas Secuenciales: OpenMP Directiva de Creación/Destrucción de Threads (2/4) Si un thread encuentra PARALLEL: Crea un equipo de threads (número determinado por variables de entorno o llamadas a la librería) Se convierte en el maestro del equipo La directiva END PARALLEL indica el fin de la región paralela Sólo continúa el thread maestro Barrera de sincronización implícita

14 15 Paralelización de Programas Secuenciales: OpenMP Directiva de Creación/Destrucción de Threads (3/4) Si un thread de un equipo ejecutando una región paralela encuentra otra PARALLEL: crea un nuevo equipo se convierte en el maestro del nuevo equipo Por defecto, las regiones paralelas anidadas se serializan, i.e. el nuevo equipo está formado por 1 thread. Solución: variables de entorno y librería. Thread maestro Creación de 4 threads!! Creación de 3 threads por cada thread de nivel superior!!

15 16 Paralelización de Programas Secuenciales: OpenMP Ejemplo: Cálculo PI Versión secuencial /* Cálculo del contadori */ cont=0 do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo /* Cálculo de PI */ pi=4*cont/n Manuel Arenaz, 2006 Versión OpenMP /* Cálculo del contadori */ cont=0!$omp PARALLEL do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo!$omp END PARALLEL /* Cálculo de PI */ pi=4*cont/n Problemas: Replicación de cálculos Race conditions (i.e. problemas de lecturas y escrituras sobre variables compartidas) Programación con OpenMP

16 17 Paralelización de Programas Secuenciales: OpenMP Directivas de Reparto de Trabajo entre Threads (1/6) Dividen la ejecución de un bloque de código entre los miembros del equipo de threads que la encuentran Estas directivas deben ser encontradas por todos los miembros del equipo o por ninguno Deben estar dentro de una región paralela para que se ejecute en paralelo No lanzan nuevos threads No hay una barrera implícita en la entrada Hay una barrera implícita a la salida (excpt. nowait)

17 19 Paralelización de Programas Secuenciales: OpenMP Directivas de Reparto de Trabajo entre Threads (3/6) Ejecución de las iteraciones del bucle en paralelo Reparto de iteraciones del bucle Existe una barrera implícita al final (excepción NOWAIT) Clásulas: PRIVATE FIRSTPRIVATE LASTPRIVATE REDUCTION SCHEDULE!$omp do [cláusulas]...bucle...!$omp end do [nowait] #pragma omp for [cláusulas] {...bucle... }

18 20 Paralelización de Programas Secuenciales: OpenMP Directivas de Reparto de Trabajo entre Threads (4/6) Ejecución de una sección de código por un único thread Los otros threads no ejecutan ese código Barrera implícita al final (excepción NOWAIT). Cláusulas: PRIVATE FIRSTPRIVATE!$omp single [cláusulas]...código estrucutrado...!$omp end single [nowait] #pragma omp single [cláusulas] {...código estructurado... }

19 22 Paralelización de Programas Secuenciales: OpenMP Directivas de Reparto de Trabajo entre Threads (6/6)!$OMP PARALLEL!$OMP DO do I = 1, n-1 b(i) = (a(i) + a(i+1))/2 enddo!$omp END DO!$OMP DO do I = 1,n d(i) = 1.0/c(i) enddo!$omp END DO!$OMP END PARALLEL Primer bucle!! Barrera implícita!! Segundo bucle!! Thread maestro b(1:10) d(1:90) b(11:100) d(91:170) b(111:110) d(170:250) Tiempos de espera debidos a la barrera implícita!! b(111:n-1) d(170:n) No hay dependencias entre los bucles (bucles DO independientes) Usar NOWAIT para eliminar esperas innecesarias

20 23 Paralelización de Programas Secuenciales: OpenMP Ejemplo: Cálculo PI Versión secuencial /* Cálculo del contadori */ cont=0 do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo /* Cálculo de PI */ pi=4*cont/n Manuel Arenaz, 2006 Versión OpenMP /* Cálculo del contadori */ cont=0!$omp PARALLEL!$OMP DO do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo!$omp ENDDO!$OMP END PARALLEL /* Cálculo de PI */ pi=4*cont/n Problemas: Replicación de cálculos Race conditions (i.e. problemas de lecturas y escrituras sobre variables compartidas) Programación con OpenMP

21 24 Paralelización de Programas Secuenciales: OpenMP Problema Race Conditions Valor de x cuando finaliza la ejecución del programa paralelo? int x=0; void p1 () { x = x + 1; } void p2 () { x = x + 2; } Manuel Arenaz, 2006 Programación con OpenMP

22 27 Paralelización de Programas Secuenciales: OpenMP Problema Race Conditions Valor de x cuando finaliza la ejecución del programa paralelo? P1 finaliza primero x tomará el valor 3. P2 finaliza primero x tomará el valor 3. P1 y P2 leen el valor inicial de x P1 modifica x antes que P2. x tomará el valor 2. P2 modifica x antes que P1. x tomará el valor 1. int x=0; void p1 () { x = x + 1; } void p2 () { x = x + 2; } p1 x = x + 1; sync; p2 sync; x = x + 2; Manuel Arenaz, 2006 Programación con OpenMP

23 28 Paralelización de Programas Secuenciales: OpenMP Directivas de Sincronización de Threads (1/4) Implementa una sección crítica: Todos los threads ejecutan el bloque pero sólo un thread al mismo tiempo tiene acceso al código Serialización de la ejecución de los threads!$omp critical [(name)]...código estrucutrado...!$omp end critical [(name)] #pragma omp critical [(name)] {...código estructurado... }

24 30 Paralelización de Programas Secuenciales: OpenMP Directivas de Sincronización de Threads (3/4) Sincroniza a todos los threads de un grupo. Espera hasta que todos los threads han alcanzado este punto del programa...código estructurado...!$omp barrier...código estructurado......código estructurado... #pragma omp barrier...código estructurado...

25 31 Paralelización de Programas Secuenciales: OpenMP Ejemplo: Cálculo PI Versión secuencial /* Cálculo del contadori */ cont=0 do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo /* Cálculo de PI */ pi=4*cont/n Versión OpenMP /* Cálculo del contadori */ cont=0!$omp PARALLEL!$OMP DO do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 )!$OMP CRITICAL(SC1) cont++!$omp END CRITICAL(SC1) enddo!$omp ENDDO!$OMP END PARALLEL /* Cálculo de PI */ pi=4*cont/n Problemas: Replicación de cálculos Race conditions: Variable compartida x Variable compartida y Variable compartida cont Manuel Arenaz, 2006 Programación con OpenMP

26 32 Paralelización de Programas Secuenciales: OpenMP Cláusulas Principales OpenMP (1/10) Problema: Race conditions en el acceso a posiciones de memoria compartidas cuando alguno de los procesadores realiza una operación de escritura Soluciones: Mecanismos de sincronización Alto coste computacional Mecanismos de privatización

27 33 Paralelización de Programas Secuenciales: OpenMP Cláusulas Principales OpenMP (2/10) Mecanismo de privatización: Una variable (escalar o array) es privada respecto a cada una de las iteraciones de un bucle si: El valor asignado en una iteración no se utiliza en ninguna otra iteración del bucle En principio sólo existen durante la ejecución del bucle (e.g., variable temporal)

28 34 Paralelización de Programas Secuenciales: OpenMP Cláusulas Principales OpenMP (3/10) DEFAULT(PRIVATE SHARED NONE) Todas las variables dentro de la región paralela son declaradas como PRIVADAS, COMPARTIDAS o SIN DEFINIR Por defecto, todas son SHARED excepto los índices de bucle PRIVATE(v 1,...,v n ) Cada thread tiene una copia privada de las variables. Las variables no están definidas ni al entrar ni al salir. SHARED(v 1,...,v n ) Todos los threads comparten una única copia de la variable. Puede accederse a la variable concurrentemente Problemas de race conditions

29 35 Paralelización de Programas Secuenciales: OpenMP Ejemplo: Cálculo PI Versión secuencial /* Cálculo del contadori */ cont=0 do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo /* Cálculo de PI */ pi=4*cont/n Versión OpenMP /* Cálculo del contadori */ cont=0!$omp PARALLEL!$OMP&PRIVATE(x,y)!$OMP DO do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 )!$OMP CRITICAL(SC1) cont++!$omp END CRITICAL(SC1) enddo!$omp ENDDO!$OMP END PARALLEL /* Cálculo de PI */ pi=4*cont/n Problemas: Replicación de cálculos Race conditions: Variable compartida x Variable compartida y Variable compartida cont Manuel Arenaz, 2006 Programación con OpenMP

30 36 Paralelización de Programas Secuenciales: OpenMP Cláusulas Principales OpenMP (4/10)!$OMP PARALLEL!$OMP DO DO I=1,1000 A(I)=B(I) END DO!$OMP END DO!$OMP END PARALLEL DO I=1,500 A(I)=B(I) END DO DO I=501,1000 A(I)=B(I) END DO Thread 1 Thread 2 Los arrays A y B están compartidas No hay race conditions porque en cada iteración se accede a elementos diferentes del array El escalar I es privado y cogerá un valor inicial y final dependiendo del número de threads

31 37 Paralelización de Programas Secuenciales: OpenMP Cláusulas Principales OpenMP (7/10) REDUCTION( operador intrínseca : v 1,...,v n ): Indica una operación de reducción sobre las variables de la lista, que deben ser escalares declarados como SHARED Operador: +, *, -,.AND.,.OR.,.EQV., o.neqv. Intrínseca: MAX, MIN, IAND, IOR o IEOR La variable de reducción se usa en sentencias de la forma: x = x operador expr x = expr operador x (excepto resta) x = intrínseca (x,expr) x = intrínseca (expr,x) donde expr no contiene referencias del escalar x.

32 38 Paralelización de Programas Secuenciales: OpenMP Ejemplo: Cálculo PI Versión secuencial /* Cálculo del contadori */ cont=0 do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo /* Cálculo de PI */ pi=4*cont/n Versión OpenMP /* Cálculo del contadori */ cont=0!$omp PARALLEL!$OMP&PRIVATE(x,y)!$OMP&SHARED(cont)!$OMP DO REDUCTION(+:cont) do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo!$omp ENDDO!$OMP END PARALLEL /* Cálculo de PI */ pi=4*cont/n Problemas: Replicación de cálculos Race conditions: Variable compartida x Variable compartida y Variable compartida cont Manuel Arenaz, 2006 Programación con OpenMP

33 39 Paralelización de Programas Secuenciales: OpenMP Cláusulas Principales OpenMP (5/10) FIRSTPRIVATE(v 1,...,v n ): Las variables de la lista son privatizadas e inicializadas a sus valores previos a la ejecución del bucle. LASTPRIVATE(v 1,...,v n ): Al finalizar la ejecución paralela del bucle, se asigna a la variable el valor correspondiente al procesador que ejecutó la última iteración del bucle secuencial.

34 40 Paralelización de Programas Secuenciales: OpenMP Cláusulas Principales OpenMP (6/10) Warning: Puede producir resultados diferentes a la ejecución secuencial!$omp PARALLEL!$OMP DO!$OMP& LASTPRIVATE(I)!$OMP& LASTPRIVATE(X) DO I=1,N IF(...) THEN X=... END IF END DO!$OMP END DO!$OMP END PARALLEL DO PRINT*,I,X El procesador que realiza la última iteración no tiene porque coincidir con el que contiene el último valor actualizado de X!! Por defecto, las variables privadas no existen al terminar la ejecución del bucle, por lo que no conservan su valor!!

35 41 Paralelización de Programas Secuenciales: OpenMP Cláusulas Principales OpenMP (10/10) SCHEDULE(STATIC, chunk): Reparte un subconjunto de iteraciones en cada thread de modo circular El tamaño del subconjunto viene dado por chunk (chunk=1 reparto de trabajo cíclico) Si no se especifica ningún valor de chunk reparte las iteraciones uniformemente entre los procesadores por bloques (raparto de trabajo por bloques)

36 42 Paralelización de Programas Secuenciales: OpenMP Ejemplo: Cálculo PI Versión secuencial /* Cálculo del contador */ cont=0 do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo /* Cálculo de PI */ pi=4*cont/n Versión OpenMP /* Cálculo del contador */ cont=0!$omp PARALLEL!$OMP&PRIVATE(x,y)!$OMP&SHARED(cont)!$OMP DO REDUCTION(+:cont)!$OMP&SCHEDULE(STATIC,1) do i=1,n x=aleatorio() y=aleatorio() if( x 2 +y 2 1 ) cont++ enddo!$omp ENDDO!$OMP END PARALLEL /* Cálculo de PI */ pi=4*cont/n Problemas: Replicación de cálculos Race conditions: Variable compartida x Variable compartida y Variable compartida cont Manuel Arenaz, 2006 Programación con OpenMP

37 43 Paralelización de Programas Secuenciales: OpenMP Variables de entorno de OpenMP OMP_NUM_THREADS Especifica el número de threads a usar en una región paralela (el valor por defecto depende de la implementación). Si el ajuste dinámico del número de threads está habilitado, el valor de esta variable especifica el número máximo de threads a usar. OMP_NESTED Habilita o deshabilita el anidamiento de paralelismo (el valor por defecto es.false.). $ export OMP_NESTED=TRUE

38 44 Paralelización de Programas Secuenciales: OpenMP Variables de entorno de OpenMP OMP_DYNAMIC Habilita o deshabilita el ajuste dinámico del número de threads (el valor por defecto depende de la implementación). $ export OMP_DYNAMIC=TRUE

39 45 Paralelización de Programas Secuenciales: OpenMP Librería OpenMP (1/4) subroutine OMP_SET_NUM_THREADS(integer) Especifica el número de threads a usar con la siguiente región paralela. Tiene que ser llamada desde una región secuencial del programa. Cuando se utiliza el ajuste dinámico de threads esta subrutina establece el número máximo de threads. integer function OMP_GET_NUM_THREADS( ) Devuelve el número de threads que están ejecutando una región paralela. integer function OMP_GET_MAX_THREADS( ) Devuelve el número máximo de threads que puede ser devuelto por llamadas a la función OMP_GET_NUM_THREADS(). integer function OMP_GET_THREADS_NUM() integer function OMP_GET_THREADS_NUM() Devuelve el número del thread dentro del equipo (valor entre 0 y OMP_GET_NUM_THREADS( ) -1)

40 46 Paralelización de Programas Secuenciales: OpenMP Librería OpenMP (2/4) integer function OMP_GET_NUM_PROCS( ) Devuelve el número de procesadores disponibles logical function OMP_IN_PARALLEL( ) Devuelve.TRUE. si es llamada desde una región ejecutándose en paralelo y.false. en caso contrario!$omp PARALLEL DEFAULT(PRIVATE), SHARED(X,NPOINTS) IAM = OMP_GET_THREAD_NUM( ) NP = OMP_GET_NUM_THREADS( ) IPOINTS = NPOINTS/NP CALL SUBDOMAIN(X,IAM,IPOINTS)!$OMP END PARALLEL

41 47 Paralelización de Programas Secuenciales: OpenMP Librería OpenMP (3/4) subroutine OMP_SET_DYNAMIC(logical) Habilita o deshabilita el ajuste dinámico del número de threads disponible en las regiones paralelas (el valor por defecto depende de la implementación). Si está habilitada, el número de threads especificado por el usuario (a través de la función o la variable de entorno) pasa a ser un límite máximo. El número de threads siempre permanece constante dentro de cada región paralela y su número viene dado por la función OMP_GET_NUM_THREADS( ). La función tiene prioridad sobre la variable de entorno OMP_DYNAMIC logical function OMP_GET_DYNAMIC( ) Devuelve.TRUE. si el ajuste dinámico del número de threads está habilitado y.false. en otro caso.

42 48 Paralelización de Programas Secuenciales: OpenMP Librería OpenMP (4/4) subroutine OMP_SET_NESTED(logical) Habilita o deshabilita el anidamiento de paralelismo. Tiene prioridad sobre la variable de entorno OMP_NESTED El número de threads usado para ejecutar una región paralela anidada depende de la implementación (pudiendo ser 1). logical function OMP_GET_NESTED( ) Devuelve.TRUE. si el anidamiento de paralelismo está habilitado y.false. en otro caso.

43

44

45

46

47

48

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

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

OpenMP. Qué es OpenMP?

OpenMP. Qué es OpenMP? OpenMP Qué es OpenMP? Modelo de programación paralela Paralelismo de memoria compartida Soporta el paralelismo por datos Escalable Permite paralelización incremental Extensiones a lenguajes de programación

Más detalles

Es una API (Aplication Program Interface) que se usa para paralelismo basado en hilos múltiples en entornos de memoria compartida

Es una API (Aplication Program Interface) que se usa para paralelismo basado en hilos múltiples en entornos de memoria compartida Algo de OPENMP Memoria Compartida Threads O hilos, se definen como flujos de instrucciones independientes, que se ejecutan separadamente del programa principal. Con estos hilos se aprovecha mucho una máquina

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

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

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

1 Primitivas básicas de OpenMP

1 Primitivas básicas de OpenMP 1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas

Más detalles

Índice. 1. Introducción. 1. Introducción. Regiones Paralelas. Ejemplo

Índice. 1. Introducción. 1. Introducción. Regiones Paralelas. Ejemplo Arquitectura de Computadores: Práctica de Multiprocesadores Introducción a OpenMP Índice 2. Regiones Paralelas: a) For b) Sections 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización 6. Tareas

Más detalles

Programación paralela con OpenMP

Programación paralela con OpenMP Programación paralela con OpenMP Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento

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

TÉCNICAS DE CÁLCULO EN PARALELO: Directivas OpenMP y MPI (Message Passing Interface)

TÉCNICAS DE CÁLCULO EN PARALELO: Directivas OpenMP y MPI (Message Passing Interface) TÉCNICAS DE CÁLCULO EN PARALELO: Directivas OpenMP y MPI (Message Passing Interface) J. París, H. Gómez, X. Nogueira,F. Navarrina, I. Colominas, M. Casteleiro GMNI GRUPO DE MÉTODOS NUMÉRICOS EN INGENIERÍA

Más detalles

Adolfo J. Banchio. FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba. 27 04 10 Seminario de grupo 1

Adolfo J. Banchio. FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba. 27 04 10 Seminario de grupo 1 Paralelizar un Código usando OpenMP Adolfo J. Banchio FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba 27 04 10 Seminario de grupo 1 Contenido Introducción Paralelización: por qué OpenMP? Qué es OpenMP?

Más detalles

usando OpenMP (Parte I)

usando OpenMP (Parte I) (Parte I) Universidad Politécnica de Madrid, España 26 de abril de 2007 Estructura de la clase 1 de OpenMP 2 Características fundamentales de OpenMP 3 y regiones seriales 4 Conceptos generales y habitual

Más detalles

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 1. Herramientas de programación paralela I: Directivas OpenMP

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 1. Herramientas de programación paralela I: Directivas OpenMP 2º curso / 2º cuatr. 2º curso / 2º cuatr. Grado en Ing. Informática Arquitectura de Computadores Seminario 1. Herramientas de programación paralela I: Directivas OpenMP 2 Qué es OpenMP? De dónde viene

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

TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte).

TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte). TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte). SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC www.atc.us.es Dpto. de Arquitectura y Tecnología de Computadores. Universidad

Más detalles

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

CLUSTER FING: ARQUITECTURA Y APLICACIONES

CLUSTER FING: ARQUITECTURA Y APLICACIONES CLUSTER FING: ARQUITECTURA Y APLICACIONES Gerardo Ares, Pablo Ezzatti Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Conceptos

Más detalles

2. Regiones Paralelas: 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización. 7. Variables del entorno 8. Ejemplo Π

2. Regiones Paralelas: 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización. 7. Variables del entorno 8. Ejemplo Π Arquitectura de Computadores: Práctica de Multiprocesadores Introducción a OpenMP 1. Introducción 2. Regiones Paralelas: Índice 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización 6. Funciones

Más detalles

Programación Multihebra con OpenMP. José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada

Programación Multihebra con OpenMP. José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Programación Multihebra con OpenMP José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Contenidos Modelo de Programación e Introducción Paralelización de bucles Gestión

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

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

Francisco Javier Hernández López

Francisco Javier Hernández López Francisco Javier Hernández López fcoj23@cimat.mx http://www.cimat.mx/~fcoj23 Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Arquitecturas que hay

Más detalles

Programación en Memoria Compartida: OpenMP

Programación en Memoria Compartida: OpenMP Programación en Memoria Compartida: OpenMP Javier Cuenca Departamento de Ingeniería y Tecnología de Computadores Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo

Más detalles

Programación Paralela y Computación de Altas Prestaciones Programación con OpenMP

Programación Paralela y Computación de Altas Prestaciones Programación con OpenMP Programación Paralela y Computación de Altas Prestaciones Programación con OpenMP Javier Cuenca UniversidaddeMurcia Nociones básicas Modelo de programación fork-join, con generación de múltiples threads.

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

Paralelismo en monoprocesadores. Introducción

Paralelismo en monoprocesadores. Introducción Paralelismo en monoprocesadores Introducción Profesor: Mag. Marcelo Tosini Cátedra: Arquitectura Computadoras y técnicas Digitales Carrera: Ingeniería Sistemas Ciclo: 4º año 1 Técnicas para mejorar el

Más detalles

Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios

Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios > Máquinas y directorios Vamos a trabajar con el siguiente multiprocesador SMP: PowerEdge 6850 (DELL) 4 procesadores Intel Xeon 7100 de doble núcleo

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

Multiprocesamiento en lenguaje C Introducción a Open Multiprocessing (OpenMP)

Multiprocesamiento en lenguaje C Introducción a Open Multiprocessing (OpenMP) Multiprocesamiento en lenguaje C Introducción a Open Multiprocessing (OpenMP) Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías Algunas preguntas Qué es un proceso? Qué

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

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

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

Soluciones a ejercicios de paralelismo y concurrencia

Soluciones a ejercicios de paralelismo y concurrencia Soluciones a ejercicios de paralelismo y concurrencia J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores

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

Multiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas

Multiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Multiplicación de Matrices en Sistemas cc-numa Multicore Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Índice de Contenido 1. Introducción 2. Línea de Investigación 3. Sistemas Empleados

Más detalles

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS Programación en Fortran Valentín Moreno ÍNDICE 1. Subprogramas 2. Funciones 3. Subrutinas 2 3 1. SUBPROGRAMAS 1. SUBPROGRAMAS Si necesitamos usar con frecuencia

Más detalles

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

METODOLOGÍA DE LA PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela 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 Tipos de paralelismo

Más detalles

Subprogramas en Fortran 90. Seminario de Computación 2009

Subprogramas en Fortran 90. Seminario de Computación 2009 Seminario de Computación 2009 1. Algoritmos con nombre en Fortran 90 Un algoritmo con nombre es la generalización de un operador En Fortran 90 los algoritmos con nombre pueden ser: - Intrínsecos (propios

Más detalles

1. Introducción. 1. Introducción. Ejemplo. Regiones Paralelas. Modelo de paralelismo: Fork-Join Un maestro crea y gestiona threads según necesidad:

1. Introducción. 1. Introducción. Ejemplo. Regiones Paralelas. Modelo de paralelismo: Fork-Join Un maestro crea y gestiona threads según necesidad: Programación Paralela y Distribuida OpenMP Índice 1. Introducción 2. Regiones Paralelas: a) For b) Sections 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización 6. Afinidad 7. Tareas 8. Funciones

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

Javier Ibáñez González

Javier Ibáñez González Javier Ibáñez González Despacho 109 Edificio DSIC (1F) Tutorías bajo demanda e-mail: jjibanez@dsic.upv.es http://personales.upv.es/jjibanez Práctica P2 (OpenMP): sesiones 4 y 5 Práctica P3 (MPI): sesiones

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

Lección 3 Sentencias de control

Lección 3 Sentencias de control 3.1. INTRODUCCIÓN - Hasta aquí: ejecución secuencial de los programas. - Aquí vamos a ver: Lección 3 Sentencias de control Sentencias de control Sentencias condicionales: if- y switch-case Sirven para

Más detalles

Master SIA 2012/13. Programación de Sistemas Paralelos. OpenMP: Ejercicios prácticos. Facultad de Informática. Ejercicio 1.A. pi.c

Master SIA 2012/13. Programación de Sistemas Paralelos. OpenMP: Ejercicios prácticos. Facultad de Informática. Ejercicio 1.A. pi.c Master SIA 2012/13 Facultad de Informática Programación de Sistemas Paralelos OpenMP: Ejercicios prácticos En el directorio templates/practica de tu cuenta msiaxx tienes varios programas que hay que procesar

Más detalles

Programación con OpenMP

Programación con OpenMP Curso de Promoción Educativa Programación en el Supercomputador Ben Arabi Programación con OpenMP Javier Cuenca Universidad de Murcia Indice de la sesión Introducción. Nociones básicas Ejemplo inicial

Más detalles

Programación sobre sistemas de memoria compartida: programación con OpenMP

Programación sobre sistemas de memoria compartida: programación con OpenMP Programación sobre sistemas de memoria compartida: programación con OpenMP María J. Martín Grupo de Arquitectura de Computadores Universidad de A Coruña España Contenidos del curso Tema 1: Introducción

Más detalles

Computación Matricial y Paralela

Computación Matricial y Paralela Computación Matricial y Paralela Programación híbrida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia http://dis.um.es/~domingo

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Guía práctica de estudio 11 Introducción a OpenMP.

Guía práctica de estudio 11 Introducción a OpenMP. Guía práctica de estudio 11 Introducción a OpenMP. Elaborado por: Revisión: Ing. Laura Sandoval Montaño Facultad de Ingeniería U.N.A.M. Guía Práctica 11 Estructura de datos y Algoritmos II Introducción

Más detalles

Paralelización especulativa

Paralelización especulativa Sergio Aldea Departamento de Informática Universidad de Valladolid sergio@infor.uva.es MUI-TIC, curso 2013-2014 1 / 48 Índice Conceptos fundamentales Ejecución especulativa por software Especulación +

Más detalles

PARTE II PROGRAMACION CON THREADS EN C

PARTE II PROGRAMACION CON THREADS EN C PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.

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

Programación Multihilo

Programación Multihilo Proyecto Universidad-Secundaria Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas Facultad Informática, Universidad de Murcia e Instituto de Enseñanza Secundaria

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 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

INTRODUCCION A LA COMPUTACION PARALELA. 2nd Workshop: New Frontiers of Bioinformatics in Latin America Gridding Biology. Dr.

INTRODUCCION A LA COMPUTACION PARALELA. 2nd Workshop: New Frontiers of Bioinformatics in Latin America Gridding Biology. Dr. INTRODUCCION A LA COMPUTACION PARALELA 2nd Workshop: New Frontiers of Bioinformatics in Latin America Gridding Biology Dr. Pablo Guillén Universidad de Los Andes 22-26 de Noviembre de 2004 Qué es el Paralelismo?

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

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

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

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

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 0. Entorno de programación: atcgrid y gestor TORQUE

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 0. Entorno de programación: atcgrid y gestor TORQUE 2º curso / 2º cuatr. 2º curso / 2º cuatr. Grado en Ing. Informática Arquitectura de Computadores Seminario 0. Entorno de programación: atcgrid y gestor TORQUE 2 Contenidos Cluster de prácticas (atcgrid)

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

Cómputo en paralelo con OpenMP 1

Cómputo en paralelo con OpenMP 1 Cómputo en paralelo con OpenMP 1 Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/34 Velocidad de los procesadores de escritorio Recientemente, la

Más detalles

Introducción a Fortran

Introducción a Fortran mario.merino@upm.es Escuela Técnica Superior de Ingenieros Aeronáuticos Universidad Politécnica de Madrid 4 de marzo de 2011 Índice Introducción 1 Introducción 2 3 4 Fin? Qué es programar? Un ordenador

Más detalles

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C Laboratorio de Arquitectura de Redes Sentencias de control en lenguaje C Sentencias de control en lenguaje C Introducción Sentencia if-else Sentencia switch Sentencia while Sentencia do-while Sentencia

Más detalles

IMPLEMENTACIÓN DE COMPUTACIÓN DE ALTO RENDIMIENTO Y PROGRAMACIÓN PARALELA EN CÓDIGOS COMPUTACIONALES CARLOS ANDRÉS ACOSTA BERLINGHIERI

IMPLEMENTACIÓN DE COMPUTACIÓN DE ALTO RENDIMIENTO Y PROGRAMACIÓN PARALELA EN CÓDIGOS COMPUTACIONALES CARLOS ANDRÉS ACOSTA BERLINGHIERI IMPLEMENTACIÓN DE COMPUTACIÓN DE ALTO RENDIMIENTO Y PROGRAMACIÓN PARALELA EN CÓDIGOS COMPUTACIONALES CARLOS ANDRÉS ACOSTA BERLINGHIERI UNIVERSIDAD EAFIT ESCUELA DE INGENIERÍAS ÁREA DE DISEÑO MEDELLÍN 2009

Más detalles

Cómputo en paralelo con OpenMP 2

Cómputo en paralelo con OpenMP 2 Cómputo en paralelo con OpenMP 2 Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/30 Variables private y shared En el ejemplo del producto punto: double

Más detalles

ARQUITECTURA DE SISTEMAS PARALELOS 2. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PROGRAMACION PARALELA CON openmp.

ARQUITECTURA DE SISTEMAS PARALELOS 2. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PROGRAMACION PARALELA CON openmp. ARQUITECTURA DE SISTEMAS PARALELOS 2. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PROGRAMACION PARALELA CON openmp. 1. OBJETIVOS Y PREPARACIÓN. En la actualidad los multiprocesadores en un solo chip (denominados

Más detalles

Memoria compartida simétrica

Memoria compartida simétrica Memoria compartida simétrica Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento

Más detalles

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

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

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona

Más detalles

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

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

Middlewar Middlew es par ar a es par Sistemas de Alto Re R ndimiento José M. Peña

Middlewar Middlew es par ar a es par Sistemas de Alto Re R ndimiento José M. Peña Middlewares para Sistemas de Alto Rendimiento José M. Peña Contenidos Middlewares: Ejemplo lenguajes/entornos de programación: Lenguaje de programación paralela: OpenMP Ejemplos de servicios HPC: Sistemas

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

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Estructura de datos y Programación

Estructura de datos y Programación Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de

Más detalles

Introducción a la. Programación con

Introducción a la. Programación con Introducción a la Programación con C Objetivo El alumno comprendera los conceptos sobre cuales se rige la programación estructurada mediante una base teórica y un conjunto de prácticas, enfocando dichos

Más detalles

Prác%ca 1 Sesión 3 1

Prác%ca 1 Sesión 3 1 Prác%ca 1 Sesión 3 1 Obje%vo Paralelizar códigos mediante los iden%ficadores de hilos Paralelizar dos códigos secuenciales que calculen: 1. El mayor número primo del %po unsigned long long int 2. El número

Más detalles

Multiplicación de matrices dispersas

Multiplicación de matrices dispersas Multiplicación de matrices dispersas Alumno: Irene Sánchez Linares Índice Descripción del problema Representación Algoritmo secuencial Esquemas algorítmicos Elección del esquema OpenMP MPI Estudio experimental

Más detalles

Índice general 7. Presentación 15

Índice general 7. Presentación 15 ÍNDICE GENERAL Índice general 7 Presentación 15 1. Introducción 19 1.1. Antecedentes históricos de la computación................... 19 1.2. Definiciones previas............................... 24 1.3.

Más detalles

Introducción a la Programación

Introducción a la Programación 0,25 puntos cada pregunta 1. Observa el siguiente esquema de código. Cuándo se ejecuta Instrucción4? IF Condición1 THEN Instrucción1 ELSE IF Condición2 THEN Instrucción2 ELSE IF Condición3 THEN Instrucción3;

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

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP.

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP. SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP. 1. OBJETIVOS Y PREPARACIÓN. En la actualidad los multiprocesadores en un solo chip

Más detalles

Concurrencia Monitores. Guillermo Román Díez

Concurrencia Monitores. Guillermo Román Díez Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

ANX-PR/CL/ GUÍA DE APRENDIZAJE. ASIGNATURA Computacion de alto rendimiento. CURSO ACADÉMICO - SEMESTRE Segundo semestre

ANX-PR/CL/ GUÍA DE APRENDIZAJE. ASIGNATURA Computacion de alto rendimiento. CURSO ACADÉMICO - SEMESTRE Segundo semestre ANX-PR/CL/001-02 GUÍA DE APRENDIZAJE ASIGNATURA Computacion de alto rendimiento CURSO ACADÉMICO - SEMESTRE 2014-15 - Segundo semestre FECHA DE PUBLICACIÓN Enero - 2015 GA_10II_105000063_2S_2014-15 Datos

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

Ingeniería del software I 9 - Diseño detallado

Ingeniería del software I 9 - Diseño detallado Diseño detallado Ingeniería del software I 9 - Diseño detallado El diseño de alto nivel no especifica la lógica. Esto es incumbencia del diseño detallado. En este sentido, una notación textual provee mejor

Más detalles

Fundamentos de Informática

Fundamentos de Informática Fundamentos de Informática Tema 5 Estructuras de Control 1 Contenidos La estructura secuencial La estructura condicional Condicional simple Multicondicional Sentencia SELECT CASE Estructuras de control

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

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

Funciones y subrutinas

Funciones y subrutinas Algorítmica y Lenguajes de Programación Funciones y subrutinas Funciones y subrutinas. Introducción El diseño descendente permite obtener un programa que resuelva un problema dividiendo este en subproblemas

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Sentencias de control en lenguaje Sentencias de control en lenguaje Introducción Sentencia if-else Sentencia switch Sentencia while Sentencia

Más detalles

Ejercicios de jerarquía de memoria

Ejercicios de jerarquía de memoria Ejercicios de jerarquía de memoria J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores Grupo ARCOS Departamento

Más detalles