Vats, Islands, and Collections: Finding cheap parallelism
Jecel Assumpcao Jr
jecel at merlintec.com
Fri Jan 25 22:12:18 UTC 2008
> Let's exchange ideas and approaches as we explore this new territory!
We should find a good place for this discussion as it will tend to get
more and more off-topic for the squeak-dev list. There is now a
squeak-hardware list, but for parallel implementations on existing
hardware that probably isn't the best place.
There is one significant difference between my current work and what I
did in the 1990s. Back then I started out with the model of one thread
per object and then first relaxed that by allowing read-only objects to
execute in their sender's thread (and to be replicated freely among all
nodes). The plan was that besides the PICs the optimizing compiler would
also have access to information gathered by the "future objects". By
knowing which message sends are effectively causing parallel execution,
it can decide which ones to inline (converting from parallel to
sequential). So objects would be gathered into fewer and fewer threads
over time until the best match between the number of nodes/cores and the
number of "vats" was reached.
In my current project the programmer manually distributes the objects
among the vats/islands and that distribution does not change at run
time. This was done to make it simpler for children to understand the
system (the same object grouping is used for several unrelated purposes:
virtual memory, concurrency, protection, reflection and so on), but it
is more limiting than the previous design.
More information about the Squeak-dev