Descargar

Programación de Sistemas de Memoria Compartida

Enviado por Pablo Turmero


Partes: 1, 2, 3

    edu.red ? 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.

    edu.red ? Alternativas: • usar un lenguaje paralelo nuevo, o modificar la sintaxis de uno secuencial (HPF, UPC… / Occam, Fortran M…). • usar un lenguaje secuencial junto con directivas al compilador para especificar el paralelismo. • usar un lenguaje secuencial junto con rutinas de librería.

    edu.red ? En el caso de memoria compartida, tenemos más opciones: > trabajar con procesos (UNIX) > usar threads: Pthreads (POSIX), Java, OpenMP…

    edu.red (Gp:) heap (Gp:) pila (Gp:) IR (Gp:) proceso j (Gp:) rutinas interrup. (Gp:) código (Gp:) ficheros

    ? procesos concurrentes: Fork / Join ? gran overhead, son muy “caros”

    edu.red (Gp:) heap (Gp:) rutinas interrup. (Gp:) código (Gp:) ficheros

    (Gp:) pila (Gp:) IR (Gp:) thread 1

    (Gp:) pila (Gp:) IR (Gp:) thread 2

    ? los threads son más “ligeros” ? la sincronización (variables compartidas) es sencilla ? habitual en el S.O. (solaris, windows XP…)

    edu.red ? Para los sistemas de memoria distribuida, el estándar actual de programación, mediante paso de mensajes, es MPI. ? Para los sistemas de memoria compartida, de tipo SMP, la herramienta más extendida es OpenMP. ? En ambos casos hay más opciones, y en una máquina más general utilizaremos probablemente una mezcla de ambos.

    edu.red ? Qué esperamos de una “herramienta” para programar aplicaciones en máquinas de memoria distribuida (MPI): • un mecanismo de identificación de los procesos. • una librería de funciones de comunicación punto a punto: send, receive… • funciones de comunicación global: broadcast,, scatter, reduce… • alguna función para sincronizar procesos.

    edu.red ? Qué esperamos de una “herramienta” para programar aplicaciones en máquinas de memoria compartida: • un mecanismo de identificación de los threads. • un método para declarar las variables como privadas (private) o compartidas (shared). • un mecanismo para poder definir “regiones paralelas”, bien sea a nivel de función o a nivel de iteración de bucle. • facilidades para sincronizar los threads.

    edu.red ? Qué no esperamos de una “herramienta” para programar aplicaciones paralelas: • un analizador de dependencias entre tareas (queda en manos del programador).

    edu.red Introducción ? OpenMP es el estándar actual para programar aplicaciones paralelas en sistemas de memoria compartida tipo SMP.

    Entre otras características, es portable, permite paralelismo “incremental”, y es independiente del hardware.

    Participan en su desarrollo los fabricantes más importantes: HP, IBM, SUN, SG…

    Partes: 1, 2, 3
    Página siguiente