TÉCNICAS DE CÁLCULO EN PARALELO: Directivas OpenMP y MPI (Message Passing Interface)
|
|
- María Rosario Aranda Godoy
- hace 6 años
- Vistas:
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 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 detallesProgramació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 detallesEs 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 detallesFrancisco 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 detallesComputació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 detallesSistemas 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 detallesMessage 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 detallesOpenMP. 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 detallesProgramació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 detallesCó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 detallesPROGRAMACIÓ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 detallesParadigma 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 detallesTEMA 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 detallesFrancisco 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 detallesModelo 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 detalles1 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 detallesFundamentos 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 detallesIntroducció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 detallesINTRODUCCIÓ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 detallesLENGUAJE 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 detallesParalelismo. 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 detallesLusitania. 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 detallesJavier 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 detallesINTRODUCCIÓ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 detallesJosé 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 detallesTaller 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 detallesMETODOLOGÍ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 detallesEsquemas 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 detallesAlgorí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 detallesCLUSTER 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 Í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 detallesSISTEMAS 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 detallesProgramació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 detallesusando 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 detallesUniversidad 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 detallesTEMA 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 detallesSubprogramas 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 detallesPARADIGMA 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 detalles2º 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 detallesTema 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 detallesProgramació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 detallesARQUITECTURA 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 detallesProcesamiento 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 detallesLENGUAJE 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 detallesEstructuras 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 detallesMultiprocesadores 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 detallesTodo 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 detallesEscalabilidad: 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 detallesTEMA 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 detallesIMPLEMENTACIÓ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 detallesSentencias 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 detallesEsquemas 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
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 detallesOperadores. 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 detallesLenguaje 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 detallesEntornos 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 detallesSistemas 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 detallesEsquemas 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 detallesModelos 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 detallesElementos 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 detallesIntroducció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 detallesInterfaz 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 detallesEstructuras 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 detallesDiseñ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 detallesPresentació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 detallesAná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 detallesDiagrama 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 detallesINTRODUCCIÓ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 detallesSISTEMAS 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 detalles2º 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 detallesCARACTERIZACION 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 detallesPresentació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 detallesMultiprocesamiento 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 detallesEs 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 detallesInformá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 detallesHerramientas 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 detallesMultiprocesamiento 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 detallesUna 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 detallesJava. 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 detallesFundamentos 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 detallesLABORATORIO 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 detallesCapí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 detallesParalelismo 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 detallesFicheros. 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 detallesAlgorí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 detallesLaboratorio 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 detallesTema 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 detallesArquitecturas 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 detallesParalelizació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 detallesProgramació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 detallesVARIABLES, 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 detallesIntroducció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 detallesGuí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 detallesTEMA 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 detallesDESCRIPCIÓ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 detallesAlgoritmo, 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 detallesBioingenierí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 detallesProgramació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