Concurrency

Pascal pascalrs@cs.kun.nl
Wed, 17 Dec 1997 10:30:58 +0200


Dear Nick,

You had two questions which are related to my work. Unfortunately I wasn't
subscribed to the clean mailing list, so I did not see this message, therefore
my response is a bit late. I have changed this, so it won't happen again.

Your first question:

>When are the concurrency constructs to be supported?

Right now we have a local test version of a distributed implementation of
Concurrent Clean (which includes the concurrency annotations) for a network of
68000 Macs. There is no plan to realease for the public yet, but if someone
wants to use it, he or she can notice me. 

There is no possibility to do distributed graphical I/O, we are currently
working on that.

Versions for other platforms will appear in the future, but are not scheduled
yet, due to time limitations (I also have to work on my Ph.D.)

>    Is it possible to eliminate the constructs and have the compiler
>recognize the opportunities for Concurrency like Sisal does?

Sisal introduces parallellism with a limited but powerful technique called
loop parallelisation. It is mainly useful for numerical calculations as it
computes a number of independent iterations of a loop in parallel.

The concurrency annotations of Clean are much more flexible, but can also be
used to parallelise ZF-expressions (a Clean equivalent of a loop). In a recent
paper, presented on the IFL'97 workshop, I proposed a new annotation on
ZF-expressions. An annotated ZF-expression reduces the elements of the
resulting datatype concurrently. I think it is possible asking the compiler to
annotate ZF-expressions with this new annotation automatically, so that the
programmer does not have to alter his program to get a concurrent version.
This will give a similar automatic parallelisation as Sisal, however, it has
not been worked out.

Next to that one could use a library hiding the use of the concurrency
annotations. I have, for exmample, written an efficient implementation for
distributed arrays, where the elements of the array are distributed over the
processors. If you use this library in your program, you will get a parallel
program without (visible) annotations. I can imagine that you find this
cheating, but working with it is very comfortable, as it works just like any
other library.

Yours,
	Pascal Serrarens