Taller de Programación Paralela

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

Paradigma de paso de mensajes

Nociones básicas de computación paralela

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

ARQUITECTURAS PARA PROCESAMIENTO PARALELO

UNIVERSIDAD DE GUADALAJARA

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

Message Passing Interface (MPI)

MINUTA: Taller en UAEMEX, Toluca. Construcción de Tecnología HPC

Sistemas Distribuidos. Soporte de Sistemas Operativos

4. Programación Paralela

Paralelización de Programas Secuenciales: OpenMP

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

PREPARATORIA OFICIAL NO. 82 JOSÉ REVUELTAS INFORMÁTICA & COMPUTACIÓN I UNIDAD II LAS TIC

Programación Híbrida e Introducción a la Programación de GPUs

Universidad de Costa Rica Sistema de Aplicaciones Estudiantiles SAE

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

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

MAGMA. Matrix Algebra on GPU and Multicore Architecture. Ginés David Guerrero Hernández

Tema 2 Introducción a la Programación en C.

CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA

UNIVERSIDAD DE GUADALAJARA

GUÍA DOCENTE Arquitecturas Avanzadas de Computadores

PR1: Programación I 6 Fb Sistemas Lógicos 6 Obligatoria IC: Introducción a los computadores 6 Fb Administración de

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

1 Software de una computadora 2 Sistemas operativos 3 Manejo avanzado y programación en ms-dos 4 Lenguajes de programación

28/08/ :52:22 Página 1 de 5

Interfaces. Carrera: SCF Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Memoria compartida simétrica

Tema V Generación de Código

Diseño arquitectónico 1ª edición (2002)

Módulo: Modelos de programación para Big Data

C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid

Curso de Computación Científica en Clusters

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

Programación concurrente

Tema: Clases y Objetos en C#. Parte II.

EVOLUCIÓN DE LOS PROCESADORES

TEMA 1. INTRODUCCIÓN A LA PROGR. DISTRIBUIDA Y PARALELA

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

SOMI XVIII Congreso de Instrumentación TECNOLOGIAS DE LA INFORMACION BSR18171

Arquitectura de Computadoras para Ingeniería

Nombre de la asignatura: Programación Básica. Créditos: Objetivo de aprendizaje

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

Objetos de aprendizaje: Computadora

TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

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

GUÍA DE APRENDIZAJE ARQUITECTURA DE COMPUTADORES

Introducción a la Informática Fundamentos de Programación Ingeniería del Software I Ingeniería del Software II 40866

Tecnología de software para sistemas de tiempo real

Análisis de rendimiento de algoritmos paralelos

Concurrencia. Concurrencia

Sesión 6: Cálculo paralelo en Code-Aster

Introducción a los Sistemas Operativos

Evolución del software y su situación actual

HORARIO DE LABORATORIOS , PRIMER SEMESTRE

ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES

Fundamentos de programación JAVA

Cómputo en paralelo con OpenMP 1

Paralelización del código Stampack v7.10. W.Castelló F. Flores

INSTITUCIÓN EDUCATIVA SAN CRISTÓBAL

CLUSTER FING: ARQUITECTURA Y APLICACIONES

FUNCIONAMIENTO DEL ORDENADOR

Universidad Católica de Santiago del Estero Facultad de Matemática Aplicada Carrera de Ingeniería en Electrónica

Sistemas Operativos. Procesos

Conceptos generales de sistemas distribuidos

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

INDICE Control de dispositivos específicos Diseño asistido por computadora Simulación Cálculos científicos

INDICE Programa Entrada Unidad de control Unidad aritmética y lógica (ALU)

Transcripción:

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 debe considerar aspectos tales como: 1. División del problema/solución 2. Acceso a datos compartidos 3. Sincronismo entre las tareas/eventos 4. Asincronismo (no determinismo) en tareas/eventos 5. Balance de carga 6. Deadlocks 7. Paradigma de programación (?) Programación paralela requiere programadores especializados que entiendan computación paralela La vida sería más fácil para programadores si gcc --Paralelize fem.c 3 / 11

Motivación (cont) Idealmente, un software paralelo debiera: ser fácil de usar proveer transparencia a la arquitectura del procesador proveer transparencia a la red de comunicación (si existe) ser portable acomodar heterogeneidad proveer escalabilidad proveer transparencia al paralelismo 4 / 11

Estrategias de paralelismo Exiten dos aproximaciones principales para abordar programación paralels Paralelismo impĺıcito El programador se abstrae de la paralelización misma. Uso de lenguajes y compiladores paralelos El programador no tiene control de cómo los datos y el cómputo es planificado. Codigo fuente Modificacion menor al codigo Paralelizacion automatica Aplicacion paralela 5 / 11

Estrategias de paralelismo Paralelismo semi expĺıcito El código es modificado para hacer uso de librerías y software paralelo Apoyo de librerías para sincronización de tareas y paso de mensajes para comunicación. Identificacion y reemplazo de rutinas Codigo fuente Relink Aplicacion paralela Desarrollo librerias paralelas 6 / 11

Estrategias de paralelismo (cont) Paralelismo expĺıcito El código original sufre modificaciones sustanciales El programador es responsable de la descomposición del problema, comunicación, mapeo de tareas aprocesadores, etc. Codigo fuente Modificacion mayor al codigo Paralelizacion asistida por compilador Aplicacion paralela 7 / 11

Niveles de paralelismo Se puede explotar paralelismo a varios niveles Cada nivel define un nivel de granularidad, es decir el tamaño del código que se paraleliza. En este curso nos concentramos en los dos niveles superiores Tarea i-1 Tarea i Tarea i+1 func1() func2() func3() Granularidad Entidad Paralelizado por Muy Fino Instrucción Procesador Fino Bloque de Compilador instrucción Medio Función Programador Grande Programa Programador a[i] = 4*i a[i+1] =.. a[i] = 4*i a[i+1] =.. * + / a[i] = 4*i a[i+1] =.. 8 / 11

Paso de Mensajes Modelo más popular para implementar paralelismo a nivel de tareas Las tareas no comparten el espacio de direcciones El programador especifica el particionamiento de los datos y el cómputo El programador especifica cuando las tareas deben intercambiar datos Cluster de computadores Memoria Compartida Modelo para paralelizar tareas que comparten la memoria Dependiendo de la herramienta usada, paralelización puede ser impĺıcita o no Comunicación es mediante variables compartidas y puede ser impĺıcita o no Sistemas multiprocesadores Híbridos Paralelismo de Datos 9 / 11

Memoria compartida main() { int A[100][100], B[100][100]; #pragma_omp parallel for num_threads(5) for (i=0; i < 10; i++) { for (j=0; j < 10; j++) A[i][j] = B[i][j]... } Programador inserta directivas para especificar regiones paralelas Compilador realiza la paralelización Es posible reusar mucho código secuencial OpenMP estándar desde 1997 10 / 11

Paso de mensajes main() { int A[20][20], B[20][20]; Programador responsable de distribución de datos y comunicación Uso de librerías (eficientes) Uso de compilador tradicional MPI (Message Passing Interface) estándar desde 1995 MPI_Receive(A,...); MPI_Receive(B,...); for (i=0; i < 20; i++) for (j=0; j < 20; j++) { A[i][j] = B[i][j]... MPI_Send(...); } MPI_send(...) 11 / 11