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

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

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

Transcripción

1 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 Departmento de Métodos Matemáticos y de Representación E. T. S. de Ingeniería de Caminos, Canales y Puertos Universidade da Coruña, España jparis@udc.es página web:

2 ÍNDICE Introducción al cálculo en paralelo Arquitecturas de memoria compartida y distribuida Cálculo en paralelo mediante directivas OpenMP Cálculo en paralelo mediante Message Passing Interface (MPI)

3 ÍNDICE Introducción al cálculo en paralelo Arquitecturas de memoria compartida y distribuida Cálculo en paralelo mediante directivas OpenMP Cálculo en paralelo mediante Message Passing Interface (MPI)

4 Introducción al cálculo en paralelo (I) Introducción Cálculo estándar secuencial: Instrucciones por orden (no en paralelo) Cálculo distribuído: Instrucciones se ejecutan en varios procesadores sin interacción entre los mismos. Cálculo en paralelo: instrucciones se calculan simultáneamente en varios procesadores Objetivo: Realizar el mismo cálculo en un menor tiempo de ejecución. Niveles de paralelismo: Nivel de programa dentro de una aplicación Nivel de procedimiento dentro de un programa (entre subrutinas de código) Nivel de bucle dentro de un procedimiento (entre iteraciones de un mismo bucle)

5 Introducción al cálculo en paralelo (II) Medidas de rendimiento del cálculo en paralelo: Aceleración (Speed-up): S(p) = T cpu(1) T cpu (p), p = 2,..., n Eficiencia: E(p) = S(p) p 100 %, p = 2,..., n Ejemplo: Tiempo con 1 CPU = 120 s Tiempo con 32 CPU = 6 s S(32) = T cpu(1) T cpu (32) = = 20 Eficiencia: E(32) = = 62.5 %

6 Introducción al cálculo en paralelo (III) Rendimiento del cálculo en paralelo: Ley de Amdahl: La parte secuencial de un cálculo en paralelo limita su eficiencia Ejemplo: Código 5 % secuencial: Utilizando p procesadores: T cpu (1) = T paralelo cpu T cpu (p) = 95 p + 5 > 5 + T secuencial cpu = S(p) = T cpu(1) T cpu (p) = /p + 5 < 20 E(p) = S(p) p = p p 0 Si p aumenta, S(p) está acotado (p.ej. p = 256 S(256) Si p aumenta, E(p) tiende a 0 (p. ej. p = 256 E(256) 7.27 % Solución: Reducir la parte secuencial de los códigos

7 ÍNDICE Introducción al cálculo en paralelo Arquitecturas de memoria compartida y distribuida Cálculo en paralelo mediante directivas OpenMP Cálculo en paralelo mediante Message Passing Interface (MPI)

8 Arquitecturas de memoria compartida y distribuida (I) Tipos de arquitecturas para cálculo en paralelo: Memoria compartida (UMA,NUMA): Memoria distribuida: Una memoria única para todos los procesadores Accesible desde todos los procesadores Facilidad de implementación Escalabilidad más reducida (Hasta p 128 en 2012) (Hasta aprox. 512 Gb en 2012) Tantas memorias locales como procesadores Cada procesador sólo tiene acceso a su memoria local Facilidad de implementación Escalabilidad muy elevada (Hasta p = en ) (Hasta Gb en ) 1 Fuente: TOP500 (

9 Arquitecturas de memoria compartida y distribuida (II) Memoria compartida: Memoria distribuida: PLACA MADRE (MotherBoard) CLUSTER DE COMPUTACION P1 PM1 M1 P1 P2 PM2 M2 P2 P3 BUS DE CONEXIÓN MEMORIA PM3 M3 P3 RED DE CONEXIÓN Pp-1 PMp-1 Mp-1 Pp-1 Pp PMp Mp Pp

10 Arquitecturas de memoria compartida y distribuida (II) Memoria compartida-distribuída: CLUSTER DE COMPUTACION PLACA MADRE (MotherBoard) PLACA MADRE (MotherBoard) PLACA MADRE (MotherBoard) P1,1 P1,2 P1,m P2,1 BUS DE CONEXIÓN MEMORIA P2,2 BUS DE CONEXIÓN MEMORIA P2,m BUS DE CONEXIÓN MEMORIA Pp,1 Pp,2 Pp,m RED DE CONEXIÓN

11 Arquitecturas de memoria compartida y distribuida (IIa) Memoria compartida: Memoria distribuida: Placa base con 2 CPUs Placa base con 4 CPUs Red de comunicaciones entre equipos U NIVERSIDADE DA C ORU N A G RUPO DE M E TODOS N UM E RICOS EN I NGENIER I A

12 Arquitecturas de memoria compartida y distribuida (IIb) Memoria compartida: Memoria distribuida: Placa base con 2 CPUs Placa base con 4 CPUs Red de comunicaciones entre equipos U NIVERSIDADE DA C ORU N A G RUPO DE M E TODOS N UM E RICOS EN I NGENIER I A

13 Arquitecturas de memoria compartida y distribuida (IIc) Memoria compartida: Memoria distribuida: Placa base con 2 CPUs Red de comunicaciones entre equipos Placa base con 4 CPUs U NIVERSIDADE DA C ORU N A G RUPO DE M E TODOS N UM E RICOS EN I NGENIER I A

14 Arquitecturas de memoria compartida y distribuida (III) Memoria compartida (UMA,NUMA): Programación mediante directivas OpenMP Necesario añadir líneas de directivas No altera el código secuencial original Implementación más rápida y portable Menos eficiente Lenguajes de programación: Fortran, C, C++,... Memoria distribuida: Programación mediante Message Passing Interface (MPI) Necesario añadir comandos de sincronización y comunicación Reestructuración completa del código original Implementación compleja y rígida. Más eficiente Lenguajes de programación: Fortran, C, C++,...

15 ÍNDICE Introducción al cálculo en paralelo Arquitecturas de memoria compartida y distribuida Cálculo en paralelo mediante directivas OpenMP Cálculo en paralelo mediante Message Passing Interface (MPI)

16 Cálculo en paralelo mediante directivas OpenMP (I) OpenMP: OpenMP es un conjunto de directivas, librerías y variables de entorno para programas en Fortran, C y C++, por ejemplo. Es en la actualidad el estándar para programación en paralelo en sistemas de memoria compartida Las directivas son sentencias de programación que sólo se activan al utilizar una opción de compilación específica Proporcionan instrucciones para ejecución en paralelo Funcionamiento: La ejecución comienza en modo secuencial con un thread 1 maestro Al llegar a una región paralela se activan los restantes threads El trabajo se reparte entre todos los threads, incluido el maestro Cuando finaliza la región paralela, continúa la ejecución el thread maestro 1 Aunque su traducción literal es hilo, se suele asociar con un núcleo de cálculo

17 Cálculo en paralelo mediante directivas OpenMP (II) Directivas OpenMP Se utilizan normalmente para paralelización a nivel de bucle Se buscan los bucles más costosos y se reparten sus iteraciones entre los procesadores La comunicación de información entre threads se realiza a través de variables compartidas Las variables compartidas pueden crear conflictos debido al acceso simultáneo por varios procesadores Para evitarlo hay que utilizar directivas de sincronización La creación de regiones paralelas y las directivas de sincronización son muy costosas Recomendación: reducir el número de regiones paralelas creadas y el número de directivas de sincronización.

18 Cálculo en paralelo mediante directivas OpenMP (III) Directivas de paralelización: Sintaxis general (en Fortran) Centinela nombre directiva (cláusulas)!$omp PARALLEL DEFAULT(SHARED) Las directivas comienzan en la columna 1 (formato fijo) Las cláusulas se pueden separar por espacios o comas La columna 6 debe ser un espacio salvo que la línea sea continuación de la anterior, en cuyo caso será un &!$OMP PARALLEL!$OMP&SHARED(A, B, C) Columna 6 Si la línea comienza con!$ sólo se ejecuta con OpenMP activado.!$ write(6,*) Calculando en paralelo

19 Cálculo en paralelo mediante directivas OpenMP (IV) Directiva PARALLEL!$OMP PARALLEL (cláusulas) Sentencias de ejecución!$omp END PARALLEL Crea una región paralela que se ejecutará por todos los threads Uno de ellos se convierte en master thread con identificador 0 Las sentencias de ejecución no pueden desviar la ejecución a otras líneas de código fuera de la región paralela Las subrutinas pueden formar parte de las sentencias y se ejecutarán en paralelo Hay una barrera implícita (sincronización de threads) al final de la región paralela Cláusulas más habituales: PRIVATE(lista de variables privadas) SHARED(lista de variables compartidas) DEFAULT (SHARED) por defecto todas las variables compartidas, (NONE) nada por defecto FIRSTPRIVATE(lista de variables privadas). Mantienen su valor anterior

20 Cálculo en paralelo mediante directivas OpenMP (V) PRIVATE(lista) Declara privadas para cada thread las variables de la lista Cada thread genera una copia local de la variable Esta variable local es invisible para los restantes threads Las variables son locales de la región paralela, se crean al principio y se eliminan al finalizar ésta SHARED(lista) Declara compartidas para todos los threads las variables de la lista Sólo existe una variable compartida por todos los threads Todos los threads acceden a la misma posición de memoria cuando la modifican No evita la posibilidad de acceso simultáneo (lo tiene que evitar el programador) Uso de variables compartidas: Acceso a las mismas para sólo lectura Acceso a diferentes localizaciones (componentes) de la variable Comunicar información entre diferentes threads

21 Cálculo en paralelo mediante directivas OpenMP (VIa) Distribución de trabajo (Paralelización a nivel de bucle):!$omp DO[ cláusulas ] Bucle do secuencial!$omp END DO Distribuye el número de repeticiones de las instrucciones entre los threads Introduce una barrera de sincronización al final de forma automática La mayor parte de las variables son compartidas (por defecto) salvo: El índice del bucle (que siempre es privada) Las variables definidas como privadas

22 Cálculo en paralelo mediante directivas OpenMP (VIb) Distribución de trabajo (Paralelización a nivel de bucle): Cláusulas adicionales (optativas): REDUCTION( operador(+,-,*,/,max): lista de variables) Aplica el operador sobre variables compartidas evitando accesos simultáneos (pero perdiendo eficiencia) SCHEDULE(clase, tamaño del bloque) (STATIC,3) Indica asignación estática de 3 pasos del bucle para cada thread de forma recursiva Lo más recomendable normalmente es (STATIC,n/p) si n es el número de iteraciones (DYNAMIC,3) Indica asignación dinámica de pasos del bucle de 3 en 3 a medida que finalizan (GUIDED,3) asigna n/(2p) a cada thread y luego por orden de finalización asigna 3 iteraciones como mínimo

23 Cálculo en paralelo mediante directivas OpenMP (VIIa) Directivas de secuencialización: Directiva SINGLE!$OMP SINGLE Sentencias a desarrollar de modo secuencial!$omp END SINGLE El bloque de código es ejecutado por un único thread del equipo Introduce una barrera de sincronización al final Directiva MASTER!$OMP MASTER Sentencias a desarrollar de modo secuencial!$omp END MASTER El bloque de código es ejecutado únicamente por el master thread No hay barreras implícitas ni al principio ni al final

24 Cálculo en paralelo mediante directivas OpenMP (VIIb) Directivas de secuencialización: Directiva CRITICAL!$OMP CRITICAL Sentencias a desarrollar sin accesos simultáneos!$omp END CRITICAL Crea un bloque de código que sólo puede ser ejecutado por un thread simultáneamente Se crea una cola de acceso para la realización de este bloque!$omp BARRIER Introduce una barrera de sincronización

25 Cálculo en paralelo mediante directivas OpenMP (VIII) Si se añade además la librería omp_lib como:!$ use omp_lib Se pueden utilizar además las siguientes instrucciones:!$ OMP_SET_NUM_THREADS( n threads) Indica el número de threads (n threads) de la siguiente región paralela Tiene prioridad sobre la variable del sistema OMP_NUM_THREADS si se habilita el ajuste dinámico!$ n_threads = OMP_GET_NUM_THREADS() Devuelve el número de threads utilizados en la región paralela en ejecución!$ nthread = OMP_GET_THREAD_NUM() Devuelve el número que identifica a cada thread en el rango [0, OMP GET NUM THREADS()-1]

26 Cálculo en paralelo mediante directivas OpenMP (IX) Ejemplo: Cálculo de b a f(x)dx mediante el método del Trapecio Compuesto (Serie) program trapecio serie IMPLICIT NONE real*8 a, b, h, x, parcial, integral, f! h = ancho de trapecios integer*4 i, n! n = número de trapecios print*, Indique los valores de a, b, n read(5,*)a,b,n h = (b - a) / dfloat(n) integral = ( f(a) + f(b) ) / 2.0 parcial = 0. do i =1, n-1! Numeramos los puntos desde 0 a n x = a + dfloat(i) * h parcial = parcial + f(x) enddo integral = integral + parcial integral = integral * h print*, El area calculada con,n, intervalos es:,integral end!******************************* real*8 function f(x) IMPLICIT NONE real*8 x f = x*x return end

27 Cálculo en paralelo mediante directivas OpenMP (IX) Ejemplo: Cálculo de b a f(x)dx mediante el método del Trapecio Compuesto (OpenMP) program trapecio OpenMP!$ use omp lib IMPLICIT NONE real*8 a, b, h, x, parcial, integral, f! h = ancho de trapecios integer*4 i, n! n = número de trapecios print*, Indique los valores de a, b, n read(5,*)a,b,n h = (b - a) / dfloat(n) integral = ( f(a) + f(b) ) / 2.0!$OMP PARALLEL DEFAULT (SHARED), PRIVATE(parcial, x) parcial = 0.!$OMP DO do i =1, n-1! Numeramos los puntos desde 0 a n x = a + dfloat(i) * h parcial = parcial + f(x) enddo!$omp END DO!$OMP CRITICAL integral = integral + parcial!$omp END CRITICAL!$OMP END PARALLEL integral = integral * h print*, El area calculada con,n, intervalos es:,integral end!******************************* real*8 function f(x) IMPLICIT NONE real*8 x f = x*x return end

28 Cálculo en paralelo mediante directivas OpenMP (IX) Ejemplo: Cálculo de b a program trapecio serie IMPLICIT NONE real*8 a, b, h, x, parcial, integral, f! h = ancho de trapecios integer*4 i, n! n = número de trapecios print*, Indique los valores de a, b, n read(5,*)a,b,n h = (b - a) / dfloat(n) integral = ( f(a) + f(b) ) / 2.0 parcial = 0. do i =1, n-1! Numeramos los puntos desde 0 a n x = a + dfloat(i) *h parcial = parcial + f(x) enddo integral = integral + parcial integral = integral * h print*, El area calculada con,n, intervalos es:,integral end!******************************* real*8 function f(x) IMPLICIT NONE real*8 x f = x*x return end f(x)dx mediante el método del Trapecio Compuesto (OpenMP) program trapecio OpenMP!$ use omp lib IMPLICIT NONE real*8 a, b, h, x, parcial, integral, f! h = ancho de trapecios integer*4 i, n! n = número de trapecios print*, Indique los valores de a, b, n read(5,*)a,b,n h = (b - a) / dfloat(n) integral = ( f(a) + f(b) ) / 2.0 parcial = 0.!$OMP PARALLEL DEFAULT (SHARED), PRIVATE(parcial, x)!$omp DO do i =1, n-1! Numeramos los puntos desde 0 a n x = a + dfloat(i) *h parcial = parcial + f(x) enddo!$omp END DO!$OMP CRITICAL integral = integral + parcial!$omp END CRITICAL!$OMP END PARALLEL integral = integral * h print*, El area calculada con,n, intervalos es:,integral end!******************************* real*8 function f(x) IMPLICIT NONE real*8 x f = x*x return end

29 Cálculo en paralelo mediante directivas OpenMP (X) Compilado: Se compila normalmente con la opción que activa las directivas OpenMP Compilador Gfortran (GNU): Opción -fopenmp Compilador Intel Fortran: Opción -openmp Para algunas funciones puede ser necesario incluir al principio del código fuente:!$ use omp_lib! librerías específicas de OpenMP Ejecución en paralelo: Basta con indicar el número de threads a utilizar y lanzar la ejecución Unix/Linux (sh, bash): export OMP_NUM_THREADS=16 Windows: set OMP_NUM_THREADS=16 Más información en:

30 ÍNDICE Introducción al cálculo en paralelo Arquitecturas de memoria compartida y distribuida Cálculo en paralelo mediante directivas OpenMP Cálculo en paralelo mediante Message Passing Interface (MPI)

31 Cálculo en paralelo mediante MPI (I) Paradigma SPMD (Single Program Multiple Data): Se ejecuta el mismo programa en diferentes procesadores con distintos datos de partida. Para diferenciar los datos que ejecuta cada programa se utiliza el identificador de cada thread (rank) durante el cálculo. i thread [0,..., n threads 1] La memoria está físicamente distribuída y todas las variables son locales a cada thread. Si es necesario compartir valores de variables se envían mensajes de comunicación a todos los threads y se actualizan las variables locales. Es recomendable evitar en la medida de lo posible el envío de mensajes porque ralentizan el cálculo.

32 Cálculo en paralelo mediante MPI (II) Creación de un programa con MPI: Todo programa en mpi debe comenzar con la directiva de preproceso: include mpif.h Esta directiva contiene definiciones, macros y prototipos de funciones de MPI. El cálculo en paralelo comienza con: call MPI INIT ( ierr ) Y finaliza con : call MPI FINALIZE(ierr)

33 Cálculo en paralelo mediante MPI (III) CALL MPI COMM RANK ( COMM, RANK, IERR ) INTEGER COMM, RANK, IERR Envía un mensaje a los procesadores para que indiquen el número de proceso que se les ha asignado y comprueba su funcionamiento antes de comenzar la ejecución. El comando COMM más habitual es MPI COMM WORLD, que envía mensajes de comprobación del funcionamiento de todos los procesadores antes de comenzar la ejecución en paralelo. La variable entera RANK indica el índice del procesador que ha realizado la comunicación IERR es una variable que indica que esta subrutina ha funcionado correctamente CALL MPI COMM SIZE ( COMM, P, IERR ) INTEGER COMM, P, IERR P es una variable que indica cuantos threads están ejecutando el comunicador indicado IERR es una variable que indica que esta subrutina ha funcionado correctamente

34 Cálculo en paralelo mediante MPI (IV) Coordinación entre procesos: MPI Send: Envía un mensaje a un proceso predeterminado MPI Recv: Recibe un mensaje de un proceso determinado Estas instrucciones requieren además la información: 1. Rango del proceso que recibe el mensaje 2. Rango del proceso que envía el mensaje 3. Una etiqueta (tag) que identifica la variable enviada (en el caso de múltiples envíos simultáneos). Es un entero en el intervalo [0, 32767]. 4. Un comunicador

35 Cálculo en paralelo mediante MPI (V) Ejemplos: MPI SEND ( MESSAGE, COUNT, DATATYPE, DEST, TAG, COMM, IERROR ) MPI RECV ( MESSAGE, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR ) El contenido del mensaje se almacena en el bloque de memoria referenciado por el argumento message. A priori el tamaño del mensaje se desconoce cuando se recibe. El bloque message debe tener espacio suficiente para almacenarlo. De lo contrario, overflow COUNT indica el número de argumentos enviados/recibidos

36 Cálculo en paralelo mediante MPI (VI) DATATYPE indica el tipo de argumentos de MPI enviados/recibidos (junto con COUNT determina la longitud del mensaje) Tipo de datos MPI MPI INTEGER4 MPI REAL4 MPI REAL8 MPI DOUBLE PRECISION MPI COMPLEX MPI LOGICAL MPI CHARACTER MPI BYTE Equivalente en Fortran INTEGER*4 REAL*4 REAL*8 DOUBLE PRECISION COMPLEX LOGICAL CHARACTER(1) MPI BYTE: es un tipo de variable que envía la codificación binaria sin alterar. (Se utiliza cuando los mensajes se envían entre diferentes tipos de equipos con diferentes codificaciones de las variables) DEST y SOURCE son respectivamente los identificadores de los procesos de envío y de recepción del mensaje. El valor de SOURCE puede ser un comodín (wildcard). En MPI el habitual es MPI ANY SOURCE El valor de DEST tiene que ser especificado. No se pueden utilizar comodines.

37 Cálculo en paralelo mediante MPI (VII) TAG es una variable entera. En el caso de MPI RECV también se puede utilizar el comodín MPI ANY TAG COMM es el comunicador. Al igual que al inicio el más habitual es MPI COMM WORLD. En este caso no se pueden utilizar comodines. En el envío de un mensaje el comunicador del MPI SEND debe coincidir con el comunicador del MPI RECV STATUS devuelve información sobre el mensaje recibido.

38 Cálculo en paralelo mediante MPI (VIII) Ejemplo: Cálculo de b a f(x)dx mediante el método del Trapecio Compuesto program trapecio serie IMPLICIT NONE real*8 a, b, h, x, integral, f! h es el ancho de los trapecios integer*4 i, n! número de trapecios data a, b, n / 0.0, 1.0, 1024 /! Se fijan por simplicidad h = (b - a) / dfloat(n) integral = ( f(a) + f(b) ) / 2.0 do i =1, n-1! Numeramos los puntos desde 0 a n x = a + dfloat(i) *h integral = integral + f(x) enddo integral = integral * h print*, El area calculada con,n, intervalos es:,integral end!******************************* real*8 function f(x) IMPLICIT NONE real*8 x f = x*x return end

39 Ejemplo: Cálculo de b a Cálculo en paralelo mediante MPI (IX) f(x)dx mediante el método del Trapecio Compuesto (MPI) program trapecio mpi IMPLICIT NONE include mpif.h integer*4 my rank, p, n! p=2 k procesadores, n trapecios real*8 a, b, h! h es el ancho de los trapecios integer*4 local n! variables locales de cada proceso real*8 local a, local b real*8 integral, total! Resultados finales integer*4 source, dest! Proceso que envía/recibe integer*8 tag, status(mpi STATUS SIZE), ierr data a, b, n, dest, tag / 0.0, 1.0, 1024, 0, 50 / real*8 Trapecio! Función que calcula cada subintegral call MPI INIT(ierr)! Iniciamos el entorno MPI! Obtenemos el índice de cada proceso en my rank call MPI COMM RANK( MPI COMM WORLD, my rank, ierr )! Obtenemos el número de procesos en paralelo en p call MPI COMM SIZE( MPI COMM WORLD, p, ierr ) h = (b - a) / dfloat(n)! Todos los procesos lo calculan local n = dfloat(n) / dfloat(p)! Numero trapecios por proceso local a = a + dfloat(my rank * local n) * h local b = local a + dfloat(local n) * h integral = Trapecio ( local a, local b, local n, h ) if ( my rank.eq. 0 ) then! El proceso 0 suma todos total = integral! los resultados parciales do source = 1, p-1 call MPI RECV(integral, 1, MPI REAL8, source, tag, & MPI COMM WORLD, status, ierr) total = total + integral enddo print*, El area calculada con,n, intervalos es:,total else! El resto de procesos envían sus resultados al 0 call MPI SEND ( integral, 1, MPI REAL8, dest, & tag, MPI COMM WORLD, ierr ) endif call MPI FINALIZE( ierr )! Finalizamos MPI end!******************************* real*8 function Trapecio ( l a, l b, l n, h ) IMPLICIT NONE real*8 l a, l b, h, integral, x, f integer*4 l n, i integral = ( f(l a) + f(l b) ) / 2.0 do i =1, l n - 1! Numeramos los puntos desde 0 a l n x = l a + dfloat(i) *h integral = integral + f(x) enddo integral = integral * h Trapecio = integral return end!******************************* real*8 function f(x) IMPLICIT NONE real*8 x f = x*x return end

40 Cálculo en paralelo mediante MPI (X) Lectura y escritura de datos (I/O) en paralelo Cada instrucción la realizan todos los procesos salvo especificación contraria No se establece ningún criterio automático sobre este aspecto El orden de lectura/escritura en paralelo no está definido Para evitar un mal funcionamiento se impone de forma rigurosa: Se indicará qué proceso lee/escribe la información y en qué orden En el caso de variables comunes a todos los procesos, uno se encarga de la lectura y posteriormente lo distribuye a todos los demás procesos... if ( my rank.eq. 0 ) then print*, Enter a, b, n read *, a, b, n! Leemos los datos & & &! Elegimos el proceso do dest = 1, p-1! Los enviamos al resto de procesos tag = 0! Envío a call MPI SEND(a, 1, MPI REAL, dest, tag, MPI COMM WORLD, ierr) tag = 1! Envío b call MPI SEND(b, 1, MPI REAL, dest, tag, MPI COMM WORLD, ierr) tag = 2! Envío n call MPI SEND(n, 1, MPI INTEGER, dest, tag, MPI COMM WORLD, ierr) else! El resto de procesos reciben la información tag = 0 call MPI RECV(a, 1, MPI REAL, source, tag,! Recibo a & MPI COMM WORLD, status, ierr) tag = 1 call MPI RECV(b, 1, MPI REAL, source, tag,! Recibo b & MPI COMM WORLD, status, ierr) tag = 2 call MPI RECV(n, 1, MPI INTEGER, source, tag,! Recibo n & MPI COMM WORLD, status, ierr) endif... Se puede utilizar para que cada proceso lea o escriba un fichero de datos distinto

41 Cálculo en paralelo mediante MPI (XI) Otras instrucciones: Broadcast: Un único proceso envíe el mismo mensaje a todos los procesos. MPI BCAST ( BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR ) Ej.: call MPI BCAST ( a, 1, MPI REAL, 0, MPI COMM WORLD, ierr ) Reduce: Permite que operaciones que afectan a variables locales se traten conjuntamente en un sólo proceso MPI Reduce ( PARTIAL RES, TOTAL RES, COUNT, DATATYPE, OPERATION, ROOT, COMM, IERROR) Ej: MPI Reduce ( integral, total, 1,MPI REAL, MPI SUM, 0, MPI COMM WORLD, ierr ) Realiza de forma automática la suma (MPI SUM) de las variables locales integral en la variable total del proceso ROOT

42 Cálculo en paralelo mediante MPI (XII) Otras instrucciones: AllReduce: Permite que operaciones que afectan a variables locales se realicen en un único proceso y se actualice el resultado en todos los procesos MPI AllReduce(PARTIAL RES, TOTAL RES, COUNT, DATATYPE, OPERATION, COMM, IERROR) Ej: MPI AllReduce ( integral, total, 1,MPI REAL, MPI SUM, MPI COMM WORLD, ierr ) Realiza de forma automática la suma (MPI SUM) de las variables locales integral en la variable total y actualiza su valor a todas las variables total locales Barrier: Establece barreras de sincronización de todos los procesos MPI BARRIER ( COMM, IERROR ) Los procesos se detienen hasta que todos han alcanzado esta instrucción.

43 Cálculo en paralelo mediante MPI (XIII) Compilado: Se requiere un compilador (GNU, Intel, Pathscale,...) y librerías y aplicaciones MPI (OPENMPI, MPICH,...). Ejecución: GNU+OPENMPI: mpif77 ó mpif90 Ej.: mpif90 -O3 programa_mpi.f -o programa_mpi.exe Más información: man mpif90 en sistemas Linux Cada compilador suele tener su herramienta de ejecución en MPI. GNU+OPENMPI: mpirun Ej.: mpirun -np 16 programa_mpi.exe Más información: man mpirun en sistemas Linux Más info en:

Paralelización de Programas Secuenciales: OpenMP

Paralelización de Programas Secuenciales: OpenMP Paralelización de Programas Secuenciales: OpenMP http://www.openmp.org Manuel Arenaz arenaz@udc.es Índice Introducción a la programación paralela Programación con OpenMP Directivas de compilación Librería

Más detalles

Programación en Entornos Paralelos: MPI

Programación en Entornos Paralelos: MPI 1-11 Marzo de 2017 FACET -UNT Programación en Entornos Paralelos: MPI Graciela Molina mgracielamolina@gmailcom TRADICIONALMENTE Procesamiento secuencial 2 TRADICIONALMENTE Procesamiento secuencial Si ya

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

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

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

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

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

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

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

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

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

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

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

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

Modelo de paso de mensajes

Modelo de paso de mensajes Modelo de paso de mensajes Miguel Alfonso Castro García mcas@xanum.uam.mx Universidad Autónoma Metropolitana - Izt 17 de noviembre de 2016 Contenido 1 Comunicación punto a punto 2 3 Comunicación punto

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

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación COMENTARIOS Microsoft Visual Basic interpreta que todo lo que está a la derecha del carácter ( ) en una línea cualquiera de programa es un comentario y no ejecuta acción alguna.

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

INTRODUCCIÓN A LA PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI SISTEMAS PARALELOS Y DISTRIBUIDOS

INTRODUCCIÓN A LA PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI SISTEMAS PARALELOS Y DISTRIBUIDOS INTRODUCCIÓN A LA PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI 1 Y DISTRIBUIDOS GRADO EN INGENIERÍA INFORMÁTICA INGENIERÍA DE COMPUTADORES ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA

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

Paralelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas

Paralelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas Paralelismo MPI Paso de mensajes Francisco García Sánchez Departamento de Informática y Sistemas Contenido Introducción 1) Uso de MPI 2) Multiplicación de matrices 3) Ordenación por mezcla 4) Programación

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

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

INTRODUCCIÓN A FORTRAN 77

INTRODUCCIÓN A FORTRAN 77 INTRODUCCIÓN A FORTRAN 77 José G. López, Gloria Moyano Teoría de la Dinámica de Reacciones Químicas Instituto de Química Universidad de Antioquia Medellín, Colombia Reglas para un Archivo de Fortran 77

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

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

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

Esquemas repetitivos en Fortran 90

Esquemas repetitivos en Fortran 90 Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,

Más detalles

Algorítmica y Lenguajes de Programación. Punteros Introducción a estructuras dinámicas

Algorítmica y Lenguajes de Programación. Punteros Introducción a estructuras dinámicas Algorítmica Lenguajes de Programación Punteros Introducción a estructuras dinámicas Punteros estructuras dinámicas. Introducción! Las variables globales pertenecen al programa princil eisten desde que

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

Í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

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 9 Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 9 Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 9 Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI. PREPARACIÓN

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

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

Universidad Autónoma de San Luis Potosí Facultad de Ingeniería Programas Analíticos del Área Mecánica y Eléctrica 5727 PROGRAMACION EN PARALELO

Universidad Autónoma de San Luis Potosí Facultad de Ingeniería Programas Analíticos del Área Mecánica y Eléctrica 5727 PROGRAMACION EN PARALELO A) CURSO Clave Asignatura 5727 PROGRAMACION EN PARALELO Horas de teoría Horas de práctica Horas trabajo Créditos Horas por semana por semana adicional estudiante Totales 3 0 3 6 48 B) DATOS BÁSICOS DEL

Más detalles

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

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

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

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

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

Tema 3. Estructuras de control

Tema 3. Estructuras de control Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)

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

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

Procesamiento Paralelo

Procesamiento Paralelo Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar http://www.frbb.utn.edu.ar/hpc/

Más detalles

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS BÁSICAS Programación en Fortran Valentín Moreno ÍNDICE 1. Introducción al lenguaje Fortran 2. Estructura de un programa 3. Variables y constantes 4. Tipos de

Más detalles

Estructuras de Control

Estructuras de Control Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas

Más detalles

Multiprocesadores de Memoria Compartida

Multiprocesadores de Memoria Compartida Arquitectura (10/11) Multiprocesadores Memoria Compartida Características MMC Res Interconexión para MMC Programación MMC Tipos MMC 1 Arquitectura (10/11) Características MMC Prestaciones (MMC) = f (coste

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

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

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

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

Sentencias iterativas

Sentencias iterativas Sentencias iterativas 1. Objetivos Al finalizar esta actividad, serás capaz de: 1. Utilizar adecuadamente la sentencia while para generar la repetición en la ejecución de grupos de sentencias 2. Motivación

Más detalles

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,

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

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas

Más detalles

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados

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

Sistemas distribuidos Message Passing Interface

Sistemas distribuidos Message Passing Interface Sistemas Operativos, primer cuatrimestre de 2013 Sistemas distribuidos N procesos corriendo en M equipos físicamente separados. Se acabó la memoria compartida en el caso general. Podría haberla en ciertos

Más detalles

Esquemas de comunicación

Esquemas de comunicación Esquemas de comunicación tipos de comunicación Maestro-esclavo o comunicación global Esquema SPMD o comunicación local Maestro-esclavo o comunicación global Consiste en la implementación de un componente

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

Elementos básicos de cómputo paralelo

Elementos básicos de cómputo paralelo Elementos básicos de cómputo paralelo Grandes paradigmas Máquinas de memoria compartida Todos los procesadores ven toda la memoria al mismo tiempo. La filosofía es básicamente dividir las tareas. EL estándar

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

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

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

Diseño Computarizado 15023

Diseño Computarizado 15023 Diseño Computarizado 15023 PROGRAMACIÓN: FORTRAN Profesor: Claudio García Herrera Departamento de Ingeniería Mecánica Universidad de Santiago de Chile Índice 1 Introducción 2 Estructura 3 Sentencias y

Más detalles

Presentación de Open MPI

Presentación de Open MPI Presentación de Open MPI Qué es Open MPI? Se trata de una API de código abierto desarrollada para facilitar la programación paralela y/o distribuida que: Implementa el estándar MPI. Permite la distribución

Más detalles

Análisis y Programación

Análisis y Programación Análisis Numérico y Programación Facultad de Ingeniería Química Primavera 2009 Dra. Lilia Meza Montes Instituto de Física 1 Conceptos Básicos 1. Varios 2. Estructuras de programación 3. Lenguaje Fortran

Más detalles

Diagrama de una computadora. Unidad Central de procesamiento (CPU)

Diagrama de una computadora. Unidad Central de procesamiento (CPU) 2008 FORTRAN 90/95 Diagrama de una computadora Memoria principal Memoria secundaria Memoria interna (registros) Periféricos de entrada Unidad de control Periféricos de salida Unidad aritmética y lógica

Más detalles

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN Métodos Numéricos 2008 - Carlos Zotelo Introducción a Fortran 77 / 90 1. El lenguaje Fortran 77 / 90 2. Tipos de datos básicos 3. Constantes y variables 4. Entrada

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

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

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

Presentación del Curso Presencial. Programación en Java Nivel Básico

Presentación del Curso Presencial. Programación en Java Nivel Básico Presentación del Curso Presencial Programación en Java Nivel Básico Tabla de contenido Presentación del curso... 3 Objetivos de aprendizaje... 6 Contenidos del curso... 7 Competencias previas... 9 Recursos...

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

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos. Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es

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

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

Multiprocesamiento en lenguaje C Introducción a MPI

Multiprocesamiento en lenguaje C Introducción a MPI Multiprocesamiento en lenguaje C Introducción a MPI Message Passing Interface Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías MPI MPI es un estándar de programación

Más detalles

Una función es un miniprograma dentro de un programa. Las funciones contienen varias

Una función es un miniprograma dentro de un programa. Las funciones contienen varias TEMA 6. FUNCIONES. Una función es un miniprograma dentro de un programa. Las funciones contienen varias sentencias bajo un solo nombre, que un programa puede utilizar una o más veces para ejecutar dichas

Más detalles

Java. Introducción a la Programación Orientada a Objetos

Java. Introducción a la Programación Orientada a Objetos Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

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

LABORATORIO DE GESTIÓN DE REDES (I)

LABORATORIO DE GESTIÓN DE REDES (I) UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE GESTIÓN DE REDES (I) 1. PRESENTACIÓN El laboratorio de Gestión de Redes constará de un conjunto de prácticas

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

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

Ficheros. Introducción. Apertura y cierre de ficheros

Ficheros. Introducción. Apertura y cierre de ficheros s Introducción Podemos deir un fichero o archivo como una unidad de información almacenada en memoria secundaria, un disco, a la que se asigna un identificador único; los ficheros nos ofrecen la posibilidad

Más detalles

Algorítmica y Lenguajes de Programación. Ficheros

Algorítmica y Lenguajes de Programación. Ficheros Algorítmica y Lenguajes de Programación Ficheros Ficheros. Introducción Un fichero es una unidad de información almacenada en disco a la que se asigna un identificador único. Los ficheros nos ofrecen la

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

Tema 2: Lenguajes de Programación de Sistemas: C

Tema 2: Lenguajes de Programación de Sistemas: C Tema 2: Lenguajes de Programación de Sistemas: C SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla

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

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

Programación Multiproceso

Programación Multiproceso 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

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

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

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

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

DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0

DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0 DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0 Este documento define los elementos de programación del lenguaje P-0, basado en un subconjunto del lenguaje de programación Arduino. 1.- PROGRAMA Un programa

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

Bioingeniería I Algoritmos Genéticos en paralelo

Bioingeniería I Algoritmos Genéticos en paralelo Bioingeniería I Algoritmos Genéticos en paralelo Ing. Leandro D. Vignolo, Ing. E. Marcelo Albornoz 2 de mayo de 2007 1. Cálculo distribuido y paso de mensajes El cálculo paralelo es el uso de múltiples

Más detalles

Programación II Recursividad Dr. Mario Rossainz López

Programación II Recursividad Dr. Mario Rossainz López 5. RECURSIVIDAD 5.1. Introducción La recursividad es una técnica en la que una función o método se hace llamadas a sí misma en el proceso de la realización de sus tareas. La recursividad da al programador

Más detalles