TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte).
|
|
- Samuel Paz Correa
- hace 7 años
- Vistas:
Transcripción
1 TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte). SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC Dpto. de Arquitectura y Tecnología de Computadores. Universidad de Sevilla 1
2 5.1. Conceptos básicos. INDICE 5.2. Taxonomía y modelos de procesamiento paralelo Multiprocesadores con memoria centralizada Multiprocesadores con memoria distribuida Caracterización de las aplicaciones y Modelos de programación paralela Redes y topologías de interconexión Sincronización y consistencia de memoria Sistemas multicomputadores para HPC Sistemas distribuidos para servicios y almacenamiento de datos (WSC). SPD. Tema 5. 2
3 ESQUEMA DE MULTIPROCESADOR Multiprocesador: término general Remoto Local SPD. Tema 5. 3
4 Componentes del tiempo de ejecución Hallar Areal, Aideal SPD. Tema 5. 4
5 Argumentos a favor de Multiprocesadores Single Processor Performance Move to multi-processor RISC CISC SPD. Tema 5. 5
6 Puntos débiles de Multiprocesadores (I) Recordar Ley de Amdahl Ej: queremos conseguir una aceleración de 80, con 100 procesadores Qué fracción del programa debe ser paralela? F 99,75 EJ : Un compilador intenta paralelizar un código, y lo consigue en la mitad del programa A 1 F 1 F N * N 2N N 1 2 SPD. Tema 5. 6
7 Puntos débiles de Multiprocesadores (II) Difícil extracción de paralelismo: Artesanal Automática sólo si es evidente Difícil analizar si una aplicación es paralelizable. Lentitud en las comunicaciones Si un procesador necesita un dato remoto alta latencia, del orden de microsegundos (Latencia a memoria local es del orden de pocos ns) SPD. Tema 5. 7
8 5.2. Taxonomía y modelos de procesamiento paralelo Clasificación de Flynn (años 60) Single / Multiple Instruction / Data (flows) SISD SIMD MISD MIMD PUNTOS CLAVE EN EL DISEÑO: Red de interconexión La forma de organizar la jerarquía de memoria SPD. Tema 5. 8
9 5.2. Taxonomía y modelos de procesamiento paralelo Según Organización de la memoria principal Disposición física Disposición lógica Espacio direcc. compartido Espacio disjunto de direcc. Memoria centralizada UMA No tiene sentido Memoria distribuida NUMA MPM Igual software, Procesos distinto hardware. en Paralelo Threads en Paralelo SPD. Tema 5. 9
10 UMA (Uniform Memory Access) Tiempo de acceso uniforme para toda dirección Tb.llamados SMP s (Multiprocesadores simétricos) Ej: casi todos los multicore actuales Cuello de botella: acceso a memoria principal : Grandes cachés en cada procesador AB solicitado por cada procesador crece cada vez más Número de procesadores no puede ser alto. Hoy N 32. P1 P2 P3 P4 Caché: 1 ó más niveles Caché: 1 ó más niveles Caché: 1 ó más niveles Caché: 1 ó más niveles Subsistema de interconexión simple: latencia baja y constante Memoria Principal E/S SPD. Tema 5. 10
11 NUMA (NonUniform Memory Access) Tiempo de acceso a memoria No uniforme Ventaja: compatibles con UMA (se aprovecha el código) Hace 10 años poco habituales: supercomputadores investigación Hoy: Intel Core con QuickPath Interconnect, AMD Opteron con HyperTransport Otros diseños posibles: COMA (Caché Only Memory Architecture) y mixtos (investigación) P1 P2 P3 P4 Cachés y memoria Cachés y memoria Cachés y memoria Cachés y memoria Subsistema de interconexión complejo: latencia alta SPD. Tema 5. 11
12 Coherencia entre cachés Comunicación implícita (variables compartidas) Una misma línea replicada en varios procesadores Hard adicional para solucionarlo. En UMA: Protocolos de husmeo (snooping): Protocolo ISX (y otros): similar al de Copy Back Línea Inválida (Invalid) Línea Compartida (Shared) Línea exclusiva (exclusive) 2 cores ejecutan: P1 P2 a[0]++; a[0]++; a[1]++; a[2]++; En NUMA: coherencia más difícil de mantener en hard: directorios CUIDADO: falsas comparticiones (false sharing). SPD. Tema 5. 12
13 MPM (Message Passing Machines) Espacio de direcciones de memoria distribuido Cada procesador es un computador independiente del resto: multicomputador Fácilmente escalable (excepto AB red) Comunicación explícita a través de mensajes (igual que la comunicación entre procesos del S.O.). P1 P2 P3 P4 Cachés y memoria Cachés y memoria Cachés y memoria Cachés y memoria Subsistema de interconexión complejo: paso de mensajes (latencia muy alta) SPD. Tema 5. 13
14 Herramientas de programación Muchos intentos (y siguen ) Lenguaje de programación paralelo: No es factible: Difícil de imponer Espacio de direcciones compartido OpenMP: estándar (varios fabricantes importantes: HP, IBM, SUN, SG...) de directivas del precompilador. Espacio de direcciones disjuntos: clusters de computación. Librería Message Passing Interface (MPI): especificación para librerías de paso de mensajes SPD. Tema 5. 14
15 OpenMP: descripción (I) Espacio de direcciones compartido Permite paralelismo incremental Modelo de programación paralela SPMD (Single Program Multiple Data) Todos los threads ejecutan la misma copia del código. A cada thread se le asigna un identificador (tid) Para diferenciar lo ejecutado por cada thread: if (tid == 0) then... else... constructores específicos de reparto de tareas (work sharing). SPD. Tema 5. 15
16 OpenMP : descripción (II) No es un nuevo lenguaje, sino API con: directivas para el compilador facilita la portabilidad y la paralelización incremental. unas pocas funciones de biblioteca algunas variables de entorno Un programa puede ser compilado por compiladores que no soportan OpenMP Las directivas son tratadas como comentarios e ignoradas. ATENCIÓN: No olvidar Compatibilidad OpenMP en el compilador SPD. Tema 5. 16
17 Sintaxis de OpenMP Pragma en C y C++: #pragma omp construct [clause [clause] ] En Fortran, directivas : C$OMP construct [clause [clause] ]!$OMP construct [clause [clause] ] *$OMP construct [clause [clause] ] SPD. Tema 5. 17
18 Claves del diseño de una aplicación (I) 1. directivas que especifican una región paralela (código replicado) 2. reparto de tareas (específicas para cada thread) 3. sincronización entre threads Fácil para bucles (paralelizables directa o indirectamente) Sólo paso 1 (2 y 3 los introduce el compilador) SPD. Tema 5. 18
19 Claves del diseño de una aplicación (II) 1. Partiendo de un programa serie, buscar partes del código paralelizables: estructuras de control paralelo (bucles for) reparto de tareas 2. Incluir la comunicación entre hilos a través de variables compartidas (Cuidado con ámbito de las variables) 3. Sincronizar exclusión mutua barreras SPD. Tema 5. 19
20 Programa sencillo Programa Secuencial void main() { double a[1000],b[1000],c[1000]; for (int i = 0; i< 1000; i++){ a[i] = b[i] + c[i]; Programa Paralelo void main() { double a[1000],b[1000],c[1000]; #pragma omp parallel for for (int i = 0; i< 1000; i++){ a[i] = b[i] + c[i]; SPD. Tema 5. 20
21 Programa sencillo: explicación (I) void main() { double a[1000],b[1000],c[1000]; /*Un único pragma, pero el compilador debe previamente crear tantos hilos P como permita en paralelo el procesador */ /* debe decidir que hacer con las variables a[],b[],c[],i: crea copias y las replica? no crea copias:son compartidas?*/ #pragma omp parallel for /*aquí debe trocear en bucle en P hilos */ for (int i = 0; i< 1000; i++){ a[i] = b[i] + c[i]; SPD. Tema 5. 21
22 Programa sencillo: explicación (II) #pragma omp parallel for /*Troceado por defecto (existen otros)*/ //Supongamos P=4 //Hilo 0 for (int i = 0; i< 250; i++){ a[i] = b[i] + c[i]; //Hilo 1 for (int i = 250; i< 500; i++){ a[i] = b[i] + c[i]; //Hilo 2 for (int i = 500; i< 750; i++){ a[i] = b[i] + c[i]; //Hilo 3 for (int i = 750; i< 1000; i++){ a[i] = b[i] + c[i]; SPD. Tema 5. 22
23 Regiones paralelas y críticas El modelo de programación paralela es Fork - Join. El master thread genera P threads que se ejecutan en paralelo. Critical regions SPD. Tema 5. 23
24 OpenMP runtime library omp_get_num_threads() devuelve el número actual de threads omp_get_thread_num() devuelve el identificador de ese thread omp_set_num_threads(n) activa el número de threads Qué parte le corresponde al hilo 0 de este bucle (usar estas func.)? Y al hilo k? for (int i = 0; i< n; i++){ SPD. Tema 5. 24
25 Declarando Ámbito de datos (I) shared: variable es compartida por todos los procesos. Ej: vectores del proceso. private: Cada proceso tiene una copia #pragma omp parallel for shared(a,b,c,n) private(i, temp) for (i = 0; i < n; i++) { temp = a[i]/b[i]; a[i] = b[i] + temp * c[i]; Hay reglas para decidir por defecto el ámbito, pero mejor no arriesgarse Qué pasa si n=2; Lo peligroso son las escrituras float a[2], b[2], c[2];? CUIDADO: false sharing SPD. Tema 5. 25
26 Declarando Ámbito de datos (II) Variables REDUCTION: operaciones colectivas sobre elementos de un array Operadores: + * - & ^ && asum = 0.0; aprod = 1.0; #pragma omp parallel for reduction(+:asum) reduction(*:aprod) for (i = 0; i < n; i++) { asum = asum + a[i]; aprod = aprod * a[i]; SPD. Tema 5. 26
27 Planificación de Tareas: SCHEDULE (I) Diferentes formas de asignar iteraciones a threads schedule(static [,chunk]) chunk iteraciones se asignan de manera estática a los threads en round-robin schedule (dynamic [,chunk]) Cada thread toma chunk iteraciones cada vez que está sin trabajo schedule (guided [,chunk]) Cada thread toma progresivamente menos iteraciones (dinámicamente) SPD. Tema 5. 27
28 Planificación de Tareas: SCHEDULE (II) igual num iteraciones para static, dynamic. exponencialm. decreciente para guided Hilo a b c a b c d g e h f e g d h i f a b c d e g f i Static Dynamic Guided SPD. Tema 5. 28
29 Planificación de Tareas: SCHEDULE (III) RECUERDA: Static : menos coste / mejor localidad datos Dynamic: más coste / carga más equilibrada Static: bucles simples Dynamic: si carga varía según la iteración SPD. Tema 5. 29
30 Regiones Paralelas #pragma omp parallel { /* Bloque básico replicado (ejecutado) por cada thread */ Reparto de tareas en f(tid). Pag 15 Pero carrera entre todos Qué se imprime? SPD. Tema 5. 30
31 Work Sharing (reparto de tareas) 1. Directiva for, para repartir la ejecución de las iteraciones de un bucle entre todos los threads (bloques básicos y número de iteraciones conocido). Se suele usar junto a omp parallel for 2. Directiva sections, para definir manualmente trozos o secciones de una región paralela a repartir entre los threads en función del tid. 3. Directiva single, para definir un trozo de código que sólo debe ejecutar un thread. SPD. Tema 5. 31
32 Secciones (una por hilo) #pragma omp parallel sections { #pragma omp section { printf ("id s1=%d,\n,omp_get_thread_num()); for (i=0; i<tam/2; i++) y[i] = a*x[i] + y[i]; #pragma omp section { printf ("id s2=%d,\n,omp_get_thread_num()); for (i=tam/2; i<tam; i++) y[i] = a*x[i] + y[i]; Escribir esto con #pragma omp parallel (ver 2 pag. antes) SPD. Tema 5. 32
33 #pragma omp parallel {... ; #pragma omp single inicializar(a); Directiva single #pragma omp for // todos // los threads deben alcanzar // la directiva paralela for(i=0; i<n; i++) A[i] = A[i] * A[i] + 1; parallel for single... ; #pragma omp single copiar(b,a); SPD. Tema single
34 Regiones paralelas y críticas Los threads se comunican utilizando variables compartidas. El uso inadecuado de variables compartidas origina carreras (data-race) Uso de sincronización o exclusión para evitarlas NOTA: sincronización es muy costosa en tiempo: usar lo menos posible SPD. Tema 5. 34
35 Exclusión Mutua: Sección Crítica #pragma omp parallel shared(x,y) { #pragma omp critical (section1) actualiza(x); //only one thread usa(x); #pragma omp critical(section2) actualiza(y); //only one thread usa(y); Qué ocurre si no se declara la sección crítica? SPD. Tema 5. 35
36 Exclusión Mutua: Sección Crítica EJ. Qué pasa si cnt++ no se declara como crítico? SPD. Tema 5. 36
37 Sincronización: Barreras Los threads se detienen hasta que alcancen la barrera nt=omp_get_num_threads(); #pragma omp parallel private (i, id) { id=omp_get_thread_num(); for (i=id*tam/nt; i<(id+1)*tam/nt; i++) { y[i] = a*x[i] + y[i]; #pragma omp barrier // aquí seguro que todo y[] está actualizado for (i=id*tam/nt; i<(id+1)*tam/nt; i++) { z[i] = b + y[tam-i-1]; Se pueden fusionar los bucles? Y si fuera y[i]? SPD. Tema 5. 37
38 Cálculo de PI: Secuencial static long num_steps = ; double step; void main () { int i; double x, pi, sum = 0.0; step = 1.0/(double) num_steps; for (i=1;i<= num_steps; i++){ x = (i-0.5)*step; sum = sum + 4.0/(1.0+x*x); pi = step * sum; arctg ( x) 1 1 arctg(1) 4 arctg(0) 0 x x 0 2 arctg( x) SPD. Tema 5. 38
39 Cálculo de PI: Omp Reduction #include <omp.h> static long num_steps = ; double step; void main () { int i; double x, pi, sum = 0.0; step = 1.0/(double) num_steps; omp_set_num_threads(2); #pragma omp parallel for reduction(+:sum) private(x) for (i=1;i<= num_steps; i++){ x = (i-0.5)*step; sum = sum + 4.0/(1.0+x*x); pi = step * sum; SPD. Tema 5. 39
40 Cálculo de PI: Omp manualmente #include <omp.h> static long num_steps = ; double step; void main () { int i; double x, pi, sum[2]; step = 1.0/(double) num_steps; omp_set_num_threads(2); #pragma omp parallel { double x; int id; id = omp_get_thread_num(); Qué le pasa al for comentado? Hilo 0 Hilo 1 //for (i=id+1, sum[id]=0.0;i<= num_steps; i=i+2){ for (i=id* num_steps/2, sum[id]=0.0; i<= (id+1)* num_steps/2; i++ ) { x = (i+0.5)*step; sum[id] += 4.0/(1.0+x*x); for(i=0, pi=0.0;i<2;i++) pi+=sum[i]*step; SPD. Tema 5. 40
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 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 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 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 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 detallesMemoria compartida simétrica
Memoria compartida simétrica Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento
Más detallesTaxonomía de las arquitecturas
Taxonomía de las arquitecturas 1 INTRODUCCIÓN 2 2 CLASIFICACIÓN DE FLYNN 3 2.1 SISD (SINGLE INSTRUCTION STREAM, SINGLE DATA STREAM) 3 2.2 SIMD (SINGLE INSTRUCTION STREAM, MULTIPLE DATA STREAM) 4 2.2.1
Más detallesCon estas consideraciones, Flynn clasifica los sistemas en cuatro categorías:
Taxonomía de las arquitecturas 1 Introducción Introducción En este trabajo se explican en detalle las dos clasificaciones de computadores más conocidas en la actualidad. La primera clasificación, es la
Más detallesParalelizació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 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 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 detallesArquitectura de Computadoras. Clase 9 Procesamiento paralelo
Arquitectura de Computadoras Clase 9 Procesamiento paralelo Introducción al procesamiento paralelo Sea cual sea el nivel de prestaciones, la demanda de máquinas de mayor rendimiento seguirá existiendo.
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 detallesLaboratorio de Paralelismo OpenMP: ejemplos y ejercicios
Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios > Máquinas y directorios Vamos a trabajar con el siguiente multiprocesador SMP: PowerEdge 6850 (DELL) 4 procesadores Intel Xeon 7100 de doble núcleo
Más detallesMULTIPROCESADORES TIPOS DE PARALELISMO
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesEjecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez.
Paralelismo Conceptos generales Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez. Ejecución paralela: varias tareas/instrucciones de un programa
Más detallesIntroducción a los sistemas de Multiprocesamiento Prof. Gilberto Díaz
Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Introducción a los sistemas de Multiprocesamiento Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas,
Más detallesProgramación Multihebra con OpenMP. José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada
Programación Multihebra con OpenMP José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Contenidos Modelo de Programación e Introducción Paralelización de bucles Gestión
Más detallesINTRODUCCION A LA COMPUTACION PARALELA. 2nd Workshop: New Frontiers of Bioinformatics in Latin America Gridding Biology. Dr.
INTRODUCCION A LA COMPUTACION PARALELA 2nd Workshop: New Frontiers of Bioinformatics in Latin America Gridding Biology Dr. Pablo Guillén Universidad de Los Andes 22-26 de Noviembre de 2004 Qué es el Paralelismo?
Más 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 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 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 detallesArquitectura de Computadoras para Ingeniería
Arquitectura de Computadoras para Ingeniería (Cód. 7526) 1 Cuatrimestre 2016 Dra. DCIC - UNS 1 Multiprocesadores 2 Clasificación de Flynn Clasificación de 1966 En función del flujo de instrucciones y datos
Más detallesProcesamiento Paralelo
Procesamiento Paralelo Arquitecturas de Computadoras Paralelas Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar
Más detallesComputación de Alta Performance Curso 2009 ARQUITECTURAS PARALELAS ARQUITECTURAS PARALELAS
Computación de Alta Performance Curso 2009 CONTENIDO Arquitecturas secuenciales y paralelas. Clasificación de Flynn. Modelo SIMD. GPUs. Modelo SISD. Modelo SIMD. Arquitectura MIMD MIMD con memoria compartida.
Más detallesTEMA 10 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS. Introducción Hardware Software Aspectos de diseño
TEMA 10 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS Introducción Hardware Software Aspectos de diseño 1 Introducción Aparecen en los 80 Desarrollo de Microprocesadores LAN Sistemas Distribuidos:
Más detallesTEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS
TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS Introducción Hardware Software Aspectos de diseño 1 Introducción Aparecen en los 80 Desarrollo de Microprocesadores LAN Sistemas Distribuidos: Gran nº de procesadores
Más detallesCDI Arquitecturas que soportan la concurrencia. granularidad
granularidad Se suele distinguir concurrencia de grano fino es decir, se aprovecha de la ejecución de operaciones concurrentes a nivel del procesador (hardware) a grano grueso es decir, se aprovecha de
Más detallesProgramación Concurrente y Paralela. Unidad 1 Introducción
Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el
Más detallesFactores de Rendimiento en Entornos Multicore
Factores de Rendimiento en Entornos Multicore César Allande Álvarez callande@caos.uab.es Computer Architecture & Operating Systems Department (CAOS) Barcelona, Spain Director: Eduardo César Galobardes
Más detallesSoluciones a ejercicios de paralelismo y concurrencia
Soluciones a ejercicios de paralelismo y concurrencia J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores
Más detallesTEMA 1: CONCEPTOS BÁSICOS DE PARALELISMO Y ANÁLISIS DE PRESTACIONES
TEMA 1: CONCEPTOS BÁSICOS DE PARALELISMO Y ANÁLISIS DE PRESTACIONES SISTEMAS PARALELOS Y DISTRIBUIDOS www.atc.us.es Dpto. de Arquitectura y Tecnología de Computadores. Universidad de Sevilla 1 Arquitectura:
Más detallesArquitecturas Paralelas Examen de Febrero 24 Enero 2005
Universidad del País Vasco Facultad de Informática Dpto. de Arquitectura y Tecnología de Computadores Arquitecturas Paralelas Examen de Febrero 24 Enero 2005 Apellidos: Nombre: Grupo: Firma: 1 / 2 / 3
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 detallesTaller de Programación Paralela
Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile March 17, 2008 Qué es paralelismo? Una estrategia compuesta de elementos de hardware y software para
Más detallesProcesamiento Paralelo
Procesamiento Paralelo Arquitecturas de Computadoras Paralelas Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar
Más detallesGranularidad y latencia
Niveles de paralelismo y latencias de comunicación Niveles de paralelismo. Granularidad o tamaño de grano. Latencia de comunicación. Particionado de los programas. Empaquetado de granos. Planificación
Más detallesMaster SIA 2012/13. Programación de Sistemas Paralelos. OpenMP: Ejercicios prácticos. Facultad de Informática. Ejercicio 1.A. pi.c
Master SIA 2012/13 Facultad de Informática Programación de Sistemas Paralelos OpenMP: Ejercicios prácticos En el directorio templates/practica de tu cuenta msiaxx tienes varios programas que hay que procesar
Más detallesCómputo en paralelo con OpenMP 1
Cómputo en paralelo con OpenMP 1 Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/34 Velocidad de los procesadores de escritorio Recientemente, la
Más detallesDiseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso Presentación e introducción
Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso 2016-2017 Presentación e introducción Félix García Carballeira Grupo de Aruitectura de Computadores felix.garcia@uc3m.es
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 detallesClasificación de las Arquitecturas
Clasificación de las Arquitecturas MIA José Rafael Rojano Cáceres Arquitectura de Computadoras I Por la taxonomía de Flynn 1 Flynn Flujo de datos Simple Múltiple Flujo de datos Simple Múltiple SISD MISD
Más detallesModelos de computadores paralelos
Modelos de computadores paralelos Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo Universidad de Murcia 1 Contenido Programación paralela Modelos
Más detallesProceso. Threads, SMP, and Microkernels. Multithreading. Proceso
Proceso Threads, SMP, and Microkernels Capítulo 4 Propiedad de Recurso el proceso se ubica en un espacio de direccionamiento virtual que tiene la imagen del proceso Planificación/ejecución sigue un camino
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 detallesEVOLUCIÓN DE LOS PROCESADORES
EVOLUCIÓN DE LOS PROCESADORES Lecturas recomendadas: * Tanembaum, A. Organización de computadoras. Cap. 1 * Stallings, W. Organización y arquitectura de computadores. Cap. 2 Arquitectura de una computadora
Más detallesAdolfo J. Banchio. FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba. 27 04 10 Seminario de grupo 1
Paralelizar un Código usando OpenMP Adolfo J. Banchio FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba 27 04 10 Seminario de grupo 1 Contenido Introducción Paralelización: por qué OpenMP? Qué es OpenMP?
Más 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 detallesTema 1: PROCESADORES SEGMENTADOS
Tema 1: PROCESADORES SEGMENTADOS Tema 1: PROCESADORES SEGMENTADOS 1.1. Procesadores RISC frente a procesadores CISC. 1.2. Clasificación de las arquitecturas paralelas. 1.3. Evaluación y mejora del rendimiento
Más detallesPlataformas paralelas
Plataformas paralelas Curso 2011-2012 Elementos de un computador paralelo Hardware: Múltiples procesadores Múltiples memorias Redes de interconexión Software: Sistemas Operativos paralelos Programas orientados
Más detallesAspectos avanzados de arquitectura de computadoras Multiprocesadores (II) Facultad de Ingeniería - Universidad de la República Curso 2016
Aspectos avanzados de arquitectura de computadoras Multiprocesadores (II) Facultad de Ingeniería - Universidad de la República Curso 2016 Distributed Shared Memory (1/3) Imagen tomada del libro Computer
Más detallesde Gran Canaria Centro de Tecnología Médica Programación Concurrente
Universidad de Las Palmas de Gran Canaria Centro de Tecnología Médica http://www.ctm.ulpgc.es Tema 1: Introducción a la Escuela Técnica Superior de Ingenieros de Telecomunicación Conceptos Fundamentales
Más detallesIndice 1. Introducción al procesamiento paralelo 2. Estructura de los multiprocesadores de memoria compartida
Tema 8: Multiprocesadores de memoria compartida y distribuida Indice 1. Introducción al procesamiento paralelo 2. Estructura de los multiprocesadores de memoria compartida 3. Medio de interconexión de
Más detallesProgramación en Intel Xeon Phi
Programación en Intel Xeon Phi David Corbalán Navarro Máster en Nuevas Tecnologías de la Informática Índice Introducción al paralelismo Niveles de paralelismo Paradigmas de programación paralela Manycores
Más detallesParalelismo en el procesador
2017 Paralelismo en el procesador ARQUITECTURA DE COMPUTADORAS ING. ELMER PADILLA AUTOR: GERARDO ROBERTO MÉNDEZ LARIOS - 20111013326 Ciudad universitaria, Tegucigalpa M.D.C., 04 de mayo del 2017. Contenido
Más detallesMemoria compartida distribuida
Memoria compartida distribuida 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 detallesDepartamento de Automática
Departamento de Automática Tema 1 Introducción al paralelismo Prof. Dr. José Antonio de Frutos Redondo Dr. Raúl Durán Díaz Curso 2010-2011 Tema 1: Introducción Necesidad del paralelismo Rendimiento de
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 detallesArquitectura de Computadores: Exámenes y Controles
2º curso / 2º cuatr. Grado en Ing. Informática Doble Grado en Ing. Informática y Matemáticas Arquitectura de Computadores: Exámenes y Controles Examen de Prácticas AC 05/07/2013 resuelto Material elaborado
Más detallesThreads, SMP y Microkernels. Proceso
Threads, SMP y Microkernels Proceso Propiedad de los recursos a un proceso se le asigna un espacio de dirección virtual para guardar su imagen Calendarización/ejecución sigue una ruta de ejecución la cual
Más detallesHPC 101 Introducción a la computación de alto rendimiento
HPC 101 Introducción a la computación de alto rendimiento Costa Rica HPC School 2018 Prof. Alvaro de la Ossa Osegueda, Dr.rer.nat. alvaro.delaossa@ucr.ac.cr Escuela de Ciencias de la Computación e Informática,
Más detallesTrabajo de investigación Paralelismo en el procesador
Universidad Nacional Autónoma de Honduras Facultad de Ingeniería Departamento de Ingeniería en Sistemas Trabajo de investigación Paralelismo en el procesador Saúl Armando Laínez Girón 20101006758 IS603
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 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 detallesConceptos básicos de procesamiento paralelo (1)
Conceptos básicos de procesamiento paralelo (1) Paralelismo: En un sistema computador hay paralelismo cuando, al menos, durante algunos instantes de tiempo ocurren varios eventos similares Ejecución concurrente
Más detallesDISEÑO E IMPLEMENTACIÓN DE UN CLUSTER TIPO BEOWULF PARA EL DESARROLLO DE CÓMPUTO CIENTÍFICO AVANZADO
INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD ZACATENCO DISEÑO E IMPLEMENTACIÓN DE UN CLUSTER TIPO BEOWULF PARA EL DESARROLLO DE CÓMPUTO CIENTÍFICO AVANZADO
Más detallesProgramación Paralela y Distribuida
Capítulo 1 Programación Paralela y Distribuida Domingo Giménez 1, Murilo Boratto 2 y Leandro Coelho 3 Abstract The following text is the material of the class sessions of the Laboratory of Parallel and
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 detallesGRADO EN INGENIERÍA DE COMPUTADORES
GRADO EN INGENIERÍA DE COMPUTADORES Departamento Arquitecturas de Paralelas Automática Prof. Dr. José Antonio de Frutos Redondo Curso 2013-2014 Tema 4. Arquitecturas Paralelas Arquitecturas paralelas.
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 detallesMódulo: Modelos de programación para Big Data
Program. paralela/distribuida Módulo: Modelos de programación para Big Data (título original: Entornos de programación paralela basados en modelos/paradigmas) Fernando Pérez Costoya Introducción Big Data
Más detallesARQUITECTURAS PARA PROCESAMIENTO PARALELO
1 de 6 27/11/11 13:08 ARQUITECTURAS PARA PROCESAMIENTO PARALELO Facultad de Ingeniería de Sistemas Información para el Proyecto REYCYT RESUMEN Se presenta información general relativa a las diferentes
Más detallesCOMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES
COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES Autor: A.P.U. Enzo Rucci Director: Ing. Armando E. De Giusti Co-Director: Lic. Franco Chichizola Tesina de
Más 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 detallesIntroducción a las arquitecturas paralelas
Capítulo 4 Introducción a las arquitecturas paralelas Hasta este momento se ha estudiado el procesamiento a nivel del procesador. Se ha visto ya que la segmentación es un primer mecanismo de paralelismo,
Más detallesPROGRAMACIÓN CONCURRENTE
PROGRAMACIÓN CONCURRENTE Lenguajes de Programación - Progr. Concurrente 1 Introducción El concepto fundamental de la programación concurrente es la noción de Proceso. Proceso: Cálculo secuencial con su
Más detallesModelos de programación paralela y concurrente
Modelos de programación paralela y concurrente J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores Grupo
Más detallesProcesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad
Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional (PCB) adicional (PCB) Preparado Preparado
Más detalles1. Introducción 2. S.O. de Red. NFS 3. S.O. Distribuidos 4. Características de Diseño. Tema5: Sistemas Operativos Distribuidos
Tema 5: Sistemas Operativos Distribuidos 1. Introducción 2. S.O. de Red. NFS 3. S.O. Distribuidos 4. Características de Diseño 1 1. Introducción Sistema Informático Distribuido: Colección de S.I. autónomos
Más detallesEstructuración del programa en partes más pequeñas y sencillas
Introducción Estructuración del programa en partes más pequeñas y sencillas Modularización Propósito único Identificable Reusable Mayor claridad: programación, depuración, etc. Construcción de librerías
Más detallesFUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )
FUNCIONES Las funciones son el medio básico de que se vale C para construir programas. Un Programa es, básicamente, una colección de funciones entre las que se incluye una especial llamada main(), la función
Más detallesMULTIPROCESADORES EL SOFTWARE EN LOS MULTIPROCESADORES
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más 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 detalles07 y 08 Sistemas distribuidos y paralelos y tarea 02
07 y 08 Sistemas distribuidos y paralelos y tarea 02 Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo A. Franco)
Más detallesTema 05: Elementos de un programa en C
Tema 05: Elementos de un programa en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
Más detallesSistemas Operativos. Curso 2016 Introducción
Sistemas Operativos Curso 2016 Introducción Agenda Introducción a los sistemas operativos. Evolución histórica de los sistemas operativos: Sistemas por lotes. Sistemas por lotes multiprogramados. Sistemas
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 detalles2EMHWLYRV 5HIHUHQFLDV. Procesadores vectoriales
7HPD0XOWLSURFHVDGRUHV 2EMHWLYRV 5HIHUHQFLDV,QWURGXFFLyQ $UTXLWHFWXUDVFHQWUDOL]DGDVGHPHPRULDFRPSDUWLGD $UTXLWHFWXUDVGLVWULEXLGDVGHPHPRULDFRPSDUWLGD 6LQFURQL]DFLyQ 0XOWLFRPSXWDGRUHV 1 esadores vectoriales
Más detallesDepartamento Ingeniería en Sistemas de Información
ASIGNATURA: ARQUITECTURA DE MODALIDAD: COMPUTADORAS DEPARTAMENTO: ING. EN SIST. DE INFORMACION HORAS SEM.: Anual 4 horas AREA: COMPUTACIÓN HORAS/AÑO: 128 horas BLOQUE TECNOLOGÍAS BÁSICAS HORAS RELOJ 96
Más detallesSistemas Operativos. Procesos
Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso
Más detallesIntroducción a las Arquitecturas Paralelas. Arquitectura de Computadoras II Fac. Cs. Exactas UNCPBA Prof. Marcelo Tosini 2015
Introducción a las Arquitecturas Paralelas Arquitectura de Computadoras II Fac. Cs. Exactas UNCPBA Prof. Marcelo Tosini 2015 Procesamiento Paralelo Uso de muchas unidades de proceso independientes para
Más detallesModelado de los computadores paralelos
Modelado de los computadores paralelos Francisco Almeida, Domingo Giménez, José Miguel Mantas, Antonio M. Vidal: Introducción a la rogramación aralela, araninfo Cengage Learning, 2008 Figuras tomadas directamente
Más detallesSESIÓN DE EJERCICIOS E1
SESIÓN DE EJERCICIOS E1 Primera parte: ejercicios test (soluciones al final) A resolver antes de comenzar la sesión en el aula Ejercicio 1 Qué definición de constantes es la correcta en lenguaje C? a)
Más detallesBases de Datos Paralelas. Carlos A. Olarte BDII
Carlos A. Olarte (carlosolarte@puj.edu.co) BDII Contenido 1 Introducción 2 Paralelismo de I/O 3 Paralelismo entre Consultas 4 OPS Introducción Por qué tener bases de datos paralelas? Tipos de arquitecturas:
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 detallesEl Bueno, el Malo y el Feo
El Bueno, el Malo y el Feo Mejorando la Eficiencia y Calidad del Software Paralelo Ricardo Medel Argentina Systems & Tools SSG-DPD Basado en un guión de Eric W. Moore - Senior Technical Consulting Engineer
Más detallesMultiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas
Multiplicación de Matrices en Sistemas cc-numa Multicore Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Índice de Contenido 1. Introducción 2. Línea de Investigación 3. Sistemas Empleados
Más detallesTEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA
Relación de Ejercicios Programación Distribuida y Paralela. 4 o de Ingeniería Superior en Informática. Departamento de Lenguajes y Sistemas Informáticos TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA
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 detallesComputación Matricial y Paralela
Computación Matricial y Paralela Programación híbrida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia http://dis.um.es/~domingo
Más detalles