El modelo linda Algoritmos y Programación Paralela

Anuncio
Algoritmos y Programación Paralela
El modelo linda
Raúl Rodríguez Cruz

Linda es un modelo que puede ser implementado para
cualquier lenguaje que provea herramientas para crear y
coordinar multiples procesos, algunas ejemplos de
implementación son CppLINDA para C++, Simple C-Linda
para C o PYLinda para Python.

El concepto principal de LINDA es el de “Espacio de Tuplas”
a través del cual los procesos se comunican.

Este espacio de tuplas es una abstracción de un espacio de
memoria compartida el cual se usa de manera asociativa.

El espacio de tuplas es donde se almacena la información
accesible para todos los procesos.

Las tuplas son colecciones de campos de algún tipo soportado
por el lenguaje para el que se esta implementando.

Estos campos pueden ser de dos tipos, valores de un tipo
soportado o variables para recibir la información obtenida del
espacio de tuplas, a las variables se les añade ? delante.
Primitivas

Linda sugiere 4 primitivas además de 2 opcionales.

Las primitivas out y eval para añadir datos al espacio de
tuplas.

Las primitivas rd e inn para obtener o eliminar elementos

Además de estas hay dos opcionales inp y rdp que son las
versiones predictivas de rd e inn
out


Añade la tupla al espacio de tuplas
Es una primitiva no bloqueante
Espacio de tuplas
Out(“x”,5)
(“x”, 5)
in




Retira una tupla del espacio de tuplas.
Es una primitiva bloqueante si no encuentra ninguna tupla
que cumpla los requisitos se bloquea esperando a que sea
añadida.
Es destructiva, al ejecutarse elimina la tupla obtenida del
espacio de tuplas.
Si hay mas de una tupla que coincida se obtiene una al azar
Espacio de tuplas
(“x”, 5)
in(“x”,?X)
rd

Similar a in pero no elimina la tupla del espacio de tuplas.

Al igual que in es una primitiva bloqueante si no encuentra
ninguna tupla que cumpla los requisitos se bloquea
esperando a que sea añadida.
Espacio de tuplas
(“x”, 5)
rd(“x”,?X)
inp

Es la version predictiva de in.

Funciona igual que in pero en vez de guardar en la variable X
el valor de la tupla guarda 1 si ha encontrado alguna tupla
coincidente y 0 si no.
Espacio de tuplas
(“x”, 5)
inp(“x”,?X)
rdp

Es la version predictiva de rd.

Funciona igual que rd pero en vez de guardar en la variable
X el valor de la tupla guarda 1 si ha encontrado alguna tupla
coincidente y 0 si no.
Espacio de tuplas
(“x”, 5)
inp(“x”,?X)
eval

Es similar a out con la diferencia de que los valores de la
tupla se evalúan antes de ser introducidos, esta evaluación
se hace en paralelo creando un proceso para cada valor.
Espacio de tuplas
eval(“x”,4!)
(“x”, 24)
Descargar