Parallel problem-solving

I’ve just put up Rexel (Remote Execution Environment for Linux) for download. Download the source tarball or the thesis from this website.

In short, Rexel allows the developer to write a single native-code C program that can execute on multiple computers concurrently. This is not the same as writing multiple programs which, via the clever passing of messages, allow all the programs to work on the same problem. Rexel allows a single C program to execute different parts of itself on remote computers.

One of the examples of Rexel usage is to run an unmodified Sqlite3 program within the Rexel environment. This allowed the Sqlite3 binary program to unknowingly perform replication when Rexel redistributed all the filesystem calls across a cluster. Whenever the program modified the file, those modifications were instantly replicated across the cluster.

Another example is the naive Lisp implementation within Rexel. This simple Lisp interpreter written to take advantage of Rexel facilities automatically offloads computations on to remote nodes (without the programmer specifying as such).

Anyway, download and play with it.

Remote Function Invocation

Full MSc thesis