José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES

Documentos relacionados
Entornos de programación paralela basados en modelos/paradigmas

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

TEMA 2: PROGRAMACIÓN PARALELA (I)

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

Fecha de elaboración: Agosto de 2004 Fecha de última actualización: Julio de 2010

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos

Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso Presentación e introducción

Taller de Programación Paralela

Granularidad y latencia

Paralelismo _Arquitectura de Computadoras IS603

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

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

Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez.

Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas

Paralelismo Relajado Paralelismo Síncrono

Cómputo paralelo con openmp y C

Francisco J. Hernández López

PROGRAMA DE ESTUDIO Área de Formación : Fecha de elaboración: 28 de mayo de 2010 Fecha de última actualización:

Redes de Altas Prestaciones

Sistemas Operativos Distribuidos

Programación Gráfica de Altas Prestaciones

Paradigma de paso de mensajes

Algoritmos en Árbol y Grafo Computación Pipeline

Message Passing Interface (MPI)

Multiprocesadores de Memoria Compartida

Nociones básicas de computación paralela

Programación en Entornos Paralelos: MPI

Tema 1: PROCESADORES SEGMENTADOS

Algoritmos paralelos para la Multiplicación de Matrices

TEMA 4 PROCESAMIENTO PARALELO

Sistemas Complejos en Máquinas Paralelas

Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

CARACTERIZACION DE PROBLEMAS A SOLUCIONAR MEDIANTE PROGRAMACIÓN MULTIPROCESO DE MEMORIA COMPARTIDA. Autor ERIKA VIVIANA RIAÑO BEJAR

Procesamiento Paralelo

Balance Dinámico de Carga en Super-Cómputo

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

UNIVERSIDAD NACIONAL DE INGENIERÍA Departamento de Lenguajes y Simulación Guía de laboratorio I

Programación Concurrente Recopilación de teoría referente a la materia

Laboratorio de Paralelismo

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

CDI Arquitecturas que soportan la concurrencia. granularidad

Tema 3: Sistemas de Alta Velocidad

Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo

Sesión 7. Cálculo Paralelo en Elmer

Sistemas Operativos- Evolución Histórica

COMPARACIÓN DE MODELOS DE SINCRONIZACIÓN EN PROGRAMACIÓN PARALELA SOBRE CLUSTER DE MULTICORES

Introducción al Computo Distribuido

Sintonización Dinámica de Aplicaciones MPI

2EMHWLYRV 5HIHUHQFLDV. Procesadores vectoriales

Cilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS

PROCESAMIENTO DISTRIBUIDO

Relación de Ejercicios. Programación Paralela 4º de Grado en Ingeniería Informática.

COMPUTACIÓN DE ALTA PERFORMANCE

HERRAMIENTAS SOFTWARE PARA SISTEMAS DISTRIBUIDOS

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

MULTIPROCESADORES TIPOS DE PARALELISMO

Procesamiento Paralelo

UNIVERSIDAD AUTÓNOMA METROPOLITANA IZTAPALAPA

Diseño de algoritmos paralelos

Directora: Dra. Anna Morajko.

PLANIFICACIÓN DE LA DOCENCIA UNIVERSITARIA GUÍA DOCENTE. Introducción a la concurrencia

USO DE THREADS PARA LA EJECUCIÓN EN PARALELO SOBRE UNA MALLA COMPUTACIONAL

Procesamiento Paralelo

Diseño de los servicios del sistema

Ingeniería en Computación

Programación Concurrente

1 Primitivas básicas de OpenMP

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3: 3 - Paradigmas de Programación

Cómo abordamos la enseñanza de la programación?

CURSOS BIGDATA. Para más información y costos: Lic. Nayana Guerrero

Modelos de Programación Paralela Prof. Gilberto Díaz

Sesión 6. Cálculo Paralelo en Elmer

Arquitecturas de Altas Prestaciones y Supercomputación

GUÍA ESTUDIO TEMA 11. PROGRAMACIÓN de REDES DISTRIBUIDAS

Paralelización de Programas Secuenciales: OpenMP

PAP - Programación y Arquitecturas Paralelas

Diseño de Algoritmos Paralelos Prof. Gilberto Díaz

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

Taxonomía de las arquitecturas

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

CLUSTER FING: ARQUITECTURA Y APLICACIONES

Introduccion a Sistemas Operativos. Ej: Linux

Concurrencia y Paralelismo

Técnicas eficientes de programación en MATLAB para instrumentación

Arquitecturas: Clusters. Edgar Valderrama Lucio Mederos

Computación 1. Roles en la interconexión

Computación de Altas Prestaciones Sistemas computacionales

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

Concurrencia de Procesos

INTRODUCCIÓN A LA PROGRAMACIÓN PARALELA Y COMPUTACIÓN EN CLUSTER UAM+CSIC

Programación en Intel Xeon Phi

Programación Matlab En Paralelo Sobre Clúster Computacional: Evaluación De Prestaciones

Programación concurrente

Francisco Javier Hernández López

Javier Ibáñez González

Transcripción:

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 un lenguaje ampliamente usado para el prototipado y desarrollo de algoritmos. Como lenguaje de alto nivel con un entorno gráfico y de desarrollo integrado permite ser utilizado por todo tipo de usuarios desde expertos a principiantes. Paralelizando el codigo de MATLAB: - El algoritmo puede ser ejecutado sobre grandes volumenes de datos. - Podemos reducir el tiempo de ejecucion y esfuerzo de programacion considerablemente.

Introducción: Paralelismo local MATLAB Parallel Computing Toolbox: Permite al usuario ejecutar un trabajo en paralelo usando 4 labs ó workers (copias adicionales de MATLAB) que asisten a la copia principal (cliente). Si la máquina tiene multiples procesadores, los labs los activarán. Este tipo de computación en MATLAB es muy similar al paradigma de memoria compartida habilitada con OpenMP, pero en este caso desarrollado de forma mas sencilla e intuitiva.

Introducción: Paralelismo remoto MATLAB Distributed Computing Server ó DCS : Permite escalar la computación paralela en clusters. Podemos distribuir tareas en los distintos nodos ( workers ). Similar al paradigma de memoria distribuida MPI. Computer Cluster MATLAB Distributed Computing Server User side CPU Worker CPU Worker TOOLBOXES BLOCKSETS Parallel Computing Toolbox MATLAB Scheduler CPU Worker CPU Worker

MATLAB + MPI MATLAB paralelo usa una version de MPI (MPICH2). El usuario final no necesita programar de manera explícita el paso de mensajes mediante MPI. MATLAB incluye un amplio repertorio de llamadas que permiten al usuario emplear las actividades típicas de MPI de envío y recepción de mensajes, difusión de datos, sincronización, barreras, etc.

Sesiones interactivas paralelas Podemos ejecutarlas de dos maneras : - pmode. Dispone de GUI, sólo para sesiones interactivas. - matlabpool. Permite sesiones interactivas y batch. >> pmode start >> matlabpool open Starting matlabpool using the parallel configuration 'SGE'. Job output will be written to: /project/scv/kadin/matlab/pct/job1.mp iexec.out QSUB output: Your job 86069 ("Job1") has been submitted Waiting for parallel job to start... Connected to a matlabpool session with 4 labs. >>

Paradigmas paralelos: Spmd 1. Spmd (single program muntiple data). - Equivalente a pmode, pero sin la ventana individual para cada lab. Cada tarea asignada a cada procesador es numerada con un labindex.

Paradigmas paralelos: Spmd

Paradigmas paralelos: Spmd

Paradigmas paralelos: Drange 2. Drange. - Debe ser usado con pmode ó matlabpool + spmd. La distribución de tareas es controlada por el indice del bucle. Las variables o vectores predefinidas en el cliente son accesibles como locales en los workers.

Paradigmas paralelos: Drange

Paradigmas paralelos: Parfor 3. Parfor. - Es similar a drange en cuanto a que las tareas son distribuidas según el índice del bucle. Existen algunas diferencias: 1. Parfor no trabaja en el entorno de spmd. 2. Parfor permite operaciones de reduccion, como la suma, que requiere comunicacion entre los workers. Por ello, perfor se considera una operacion de datos paralelos mientras que drange es una operacion de tareas paralelas.

Paradigmas paralelos: Parfor

Paradigmas paralelos: Parfor La anterior llamada a parfor no es el patrón de uso normal. Es más usual emplearlo en operaciones más específicas donde el contador del bucle es mas grande. Podemos ilustrar esto con el siguiente fragmento de código: Estas operaciones son claramente dependientes del bucle. No obstante, en MATLAB, son operaciones legitimamente paralelas para parfor. Como se ha visto, parfor permite mas opciones de paralelización que drange y que dfeval.

Paradigmas paralelos: Dfeval 4. Dfeval. - Similar a drange y parfor, pero sin el uso explicito de un bucle for. El programador establece la distribución de los datos en lugar de hacerlo el bucle for. Al contrario que parfor o drange, dfeval solo opera con funciones intrinsecas, como rand, o funciones definidas por el usuario. - No se requiere matlabpool. - Dfeval se encuentra dentro de la categoría de trabajos distribuidos.

Paradigmas paralelos: Dfeval

Resumen En principio, crear y ejecutar trabajos en paralelo es similar a programar trabajos distribuidos: Encontrar un planificador. Crear un trabajo paralelo. Crear una tarea. Enviar el trabajo para ser ejecutado. Recibir los resultados.

Resumen Las diferencias entre trabajos distribuidos y paralelos se resumen en la siguiente tabla: Distributed Job Parallel Job Las sesiones MATLAB, llamadas workers, Las sesiones MATLAB, llamadas labs, pueden ejecutan las tareas pero no se comunican entre comunicarse unas con otras durante la ejecución ellos. de sus tareas. El usuario define el numero de tareas en un Se define solo una tarea en un trabajo. trabajo. Duplicados de esa tarea se ejecutan en todos los labs durante la ejecución del trabajo paralelo. Las tareas no necesitan ser ejecutadas simultáneamente. Las tareas son distribuidas a los workers conforme van estando disponibles, así que un worker puede ejecutar varias tareas de un mismo trabajo. Las tareas se ejecutan simultáneamente, así que sólo se puede ejecutar el trabajo en tantos labs como estén disponibles en tiempo de ejecución. El comienzo del trabajo se tendrá que posponer hasta que el número de labs necesarios esté disponible.