LinuxTuples 1.03

LinuxTuples project is an open-source tuple space server.

  Add it to your Download Basket!

 Add it to your Watch List!


Rate it!
send us
an update
GPL (GNU General Public License) 
2.6/5 19
Will Ware
ROOT \ System \ Clustering and Distributed Networks
LinuxTuples project is an open-source tuple space server, with associated code for writing clients, designed to run on a networked cluster of Linux/Intel boxes. The tuple space is maintained on one machine on the the network.

Tuples offer a convenient and intuitive way to write parallel programs. A tuple space represents a shared communication channel allowing processes anywhere on the network to communicate with one another.

A tuple space is a database of ordered lists of typed values. For instance, the tuple (2, 5.439, "abc") is made of an integer, a float, and a string.

A tuple space functions like a community bulletin board. Anybody can post a message, or take a message away, or read a message and leave it for others to read. If somebody is waiting for a particular message and doesn t find it immediately, he can go do something else, or wait to see if the message arrives. If nobody removes a message, it will remain on the bulletin board indefinitely.

The meaning of a tuple's elements is a convention agreed upon by the client programs. Tuples will often represent requests for computations or the results of computations. They can also represent public knowledge shared by all the programs in the entire system, such as the values of physical constants, or the trading prices of commodities.

LinuxTuples is written in C, with a client API for Python. It should be fairly easy to write client APIs for other languages, as long as they have a representation for ordered lists of different-typed values.

Tuple operations

There is a short list of legal interactions that a client can have with the tuple space. (Where tuple space literature normally vavors "in" and "out", I have chosen to use "put" and "get" to avoid a conflict with the Python "in" keyword.)
PUT - The client constructs a tuple and puts it into the tuple space.

GET - The client constructs a template to match a subset of tuples, using wildcards for some fields, and removes the first tuple from the tuple space that matches the template. If no matching tuple can be found, the client is blocked until a match exists.

READ - Like GET, the client builds a template and waits for a matching tuple, but takes a copy, leaving the tuple in the tuple space.

GET_NB - A non-blocking version of GET; in the event that a matching tuple is not found, a NULL pointer is returned instead.

READ_NB - A non-blocking version of READ.

There are a few additional operations that are really conveniences more than fundamental pieces of the system.
DUMP - Get a list of the tuples currently in the space. Optionally, get a list of only those tuples that match at least one of a set of templates.

LOG - The client receives a continuous log of what the tuple server is doing.

Templates and wildcards

A template is used for a GET or READ operation, to put wildcards in some fields. Doing this in C is easy. We specify the form of a tuple or template using a printf-like format string, and then fill in the fields that need values.

struct tuple *s, *t;
s = make_tuple("sid???", "will work for electrons", 1234, 2.71828);
t = get_tuple(s);

Python's tuples are naturally mapped to LinuxTuples tuples, using None as a wildcard.

import linuxtuples
conn = linuxtuples.connect()
t = conn.get( ("will work for electrons", 1234, 2.71828, None, None, None) )

What's New in This Release:

Thanks to Michael Hill for fixing a typo in fft.c and adding "make install" to the Makefile.

Last updated on September 22nd, 2007

#tuple space #networked cluster #tuple server #tuple #space #server #network

Add your review!