18
José Matías Cutillas Lozano PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES MÁSTER EN NUEVAS TECNOLOGÍAS EN INFORMÁTICA MÁSTER EN NUEVAS TECNOLOGÍAS EN INFORMÁTICA Diciembre 2010 Diciembre 2010

José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

  • Upload
    ngodang

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

José Matías Cutillas Lozano

PROGRAMACIÓN PARALELA Y COMPUTACIÓN DE ALTAS PRESTACIONES

MÁSTER EN NUEVAS TECNOLOGÍAS EN INFORMÁTICAMÁSTER EN NUEVAS TECNOLOGÍAS EN INFORMÁTICADiciembre 2010Diciembre 2010

Page 2: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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.

Page 3: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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.

Page 4: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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

CPU

CPU

CPU

CPU

MATLAB Distributed Computing Server

MATLABScheduler

Worker

Worker

Worker

Worker

User side

ParallelComputing Toolbox™

TOOLBOXES

BLOCKSETS

Page 5: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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.

Page 6: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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.mpiexec.out QSUB output: Your job 86069 ("Job1") has been submitted Waiting for parallel job to start... Connected to a matlabpool session with 4 labs. >>

Page 7: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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”.

Page 10: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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”.

Page 12: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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.

Page 14: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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.

Page 15: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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”.

Page 17: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

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.

Page 18: José Matías Cutillas Lozano ... - Universidad de Murciadis.um.es/~domingo/apuntes/PPCAP/1011/MATLAB.pdf · Introducción ¿Por qué utilizar Matlab paralelo? •MATLAB es un lenguaje

Resumen

Las diferencias entre trabajos distribuidos y paralelos se resumen en la siguiente tabla:

Distributed Job Parallel Job

Las sesiones MATLAB, llamadas workers, ejecutan las tareas pero no se comunican entre ellos.

Las sesiones MATLAB, llamadas labs, pueden comunicarse unas con otras durante la ejecución de sus tareas.

El usuario define el numero de tareas en un trabajo.

Se define solo una tarea en un 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.