Exploring Distributed Parallel Computing with Easy-ISLisp

Kenichi Sasagawa
3 min readJun 25, 2024

--

Distributed Parallel Lisp Computing Experiment

Easy-ISLisp is planning to incorporate distributed parallel functionality towards version 5.0. In version 4.20, we have added the capability for communication between the parent Lisp and child Lisp machines via TCP/IP.

Basic Functions

  • (dp-create x1 x2 … xn): Takes the IP addresses of child machines as arguments.
  • (dp-close): Instructs the child machines to terminate network mode.
  • (dp-let forms body): Executes let syntax in a distributed parallel manner.
  • (eisl-test ch sexp): Sends S-expression sexp to the child machine on channel ch. This is a provisional function for conducting computing experiments.

Machines

We will use 3 PCs connected via LAN.

Computing Experiment

We will compute Fibonacci numbers in parallel. The child machines will have pre-compiled programs for computing Fibonacci numbers, and they will be started in network mode, waiting using the -n option.

On the parent machine, we connect to the child machines using the dp-create syntax. We load the pre-compiled Fibonacci calculation program using eisl-test.

On the parent machine, we load the program for parallel Fibonacci number calculation using dp-let.

Now, let’s start the computing experiment.

It seems to be successful. There appears to be minimal latency with TCP/IP. It looks promising.

Child Lisp with network mode

Improvements

We plan to add the following features:

  • Automatic restart of child machines and recovery of communication with the parent machine in case of a bug-induced stoppage.
  • File transfer from the parent machine to the child machine via FTP.
  • Capability to issue compile and load instructions simultaneously from the parent machine to the child machine.

Integration with Multi-processes

Since each child machine can operate in multi-core, multi-process environments, utilizing them fully should enable computation like an 18-core machine across several PCs. We want to explore the potential of parallel computing.

The implementation is available on GitHub as open-source software (OSS). Please feel free to use it as you wish. sasagawa888/eisl: ISLisp interpreter/compiler (github.com)

--

--