Descargar

Herramientas para la programación de aplicaciones paralelas

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    ? Como sabemos, los sistemas paralelos MIMD presentan dos arquitecturas diferenciadas: memoria compartida y memoria distribuida. ? El modelo de memoria utilizado hace que la programación de aplicaciones paralelas para cada caso sea esencialmente diferente. Programación aplicaciones paralelas

    edu.red

    ? Para los sistemas de memoria distribuida (MPP), el “estándar” de programación, mediante paso de mensajes, es MPI. ? Para los sistemas de memoria compartida tipo SMP, la herramienta más utilizada es OpenMP. ? Otras opciones: UPC (Unified Parallel C) shrmem (Cray) Tarjetas gráficas: CUDA / OpenCL Programación aplicaciones paralelas

    edu.red

    Earth Simulator Programación aplicaciones paralelas

    edu.red

    OpenMP una pequeña introducción

    edu.red

    ? OpenMP es el estándar actual para programar aplicaciones paralelas en sistemas de memoria compartida. Introducción ? No se trata de un nuevo lenguaje de programación, sino de un API (application programming interface) formado por: ? directivas para el compilador (C) #pragma omp < directiva>

    ? unas pocas funciones de biblioteca ? algunas variables de entorno

    edu.red

    ? El modelo de programación paralela que aplica OpenMP es Fork – Join.

    En un determinado momento, el thread master genera P threads que se ejecutan en paralelo. (Gp:) thread master

    FORK JOIN (Gp:) región paralela

    (Gp:) thread master

    Introducción

    edu.red

    ? Todos los threads ejecutan la misma copia del código (SPMD). A cada thread se le asigna un identificador (tid). ? Para diferenciar las tareas ejecutadas por cada thread:

    ? if (tid == 0) then … else … ? constructores específicos de reparto de tareas (work sharing). Introducción

    edu.red

    ? En resumen, partiendo de un programa serie, para obtener un programa paralelo OpenMP hay que añadir: ? directivas que especifican una región paralela (código replicado), reparto de tareas (específicas para cada thread), o sincronización entre threads. ? funciones de biblioteca (include < omp.h>): para gestionar o sincronizar los threads.. Introducción

    Partes: 1, 2
    Página siguiente