Vats, Islands, and Collections: Finding cheap parallelism

Sam Adams ssadams at
Thu Jan 24 15:00:15 UTC 2008

Hi Matthew,
That's very cool that you are working on multicore Squeak.
Dave Ungar and I are just starting an effort in IBM Research on new VMs and
programming models for large scale multicore systems (100's-1000's of
We are putting together a 1024 core system based on 16 TIlera 64 chips as a
test bed. We are not anticipating ending up with a Squeak or Self VM, but
something likely quite different.
It would be interesting though to exchange ideas and approaches as you
proceed in your research.


Sam S. Adams, IBM Distinguished Engineer, IBM Research
Asst: Brenda Robinson, tie 444-1497, outside 919-254-1497
Mobile: 919-696-6064, email: ssadams at
<<Hebrews 11:6, Proverbs 3:5-6, Romans 1:16-17, I Corinthians 1:10>>

             Matthew Fulmer                                                
             <tapplek at                                             
             m>                                                         To 
             Sent by:                  The general-purpose Squeak          
             squeak-dev-bounce         developers list                     
             s at lists.squeakfou         <squeak-dev at lists.squeakfoundation. 
             01/24/2008 01:34                                      Subject 
             AM                        Vats, Islands, and Collections:     
                                       Finding cheap parallelism           
             Please respond to                                             
             Squeak developers                                             
             <squeak-dev at lists                                             

I'm going to be working on making squeak multi-core as part of
my grad work. I have a bit of work to do before I get to the
stage where I actually have to implement a parallel code model,
but I am thinking about it in the abstract as a mental exercise
for now. I will most likely use the vats/islands system used by
SqueakELib and Croquet, as it has been validated.

But I have a pressing concern: How could this be used to do what
seems (to me and my mentors) to be the cheapest, simplest, most
obvious parallelism extraction ever: get Collection>>do:,
collect:, etc. to run one element per native thread (= vat =

However, I may be overlooking copying costs (code, objects, or
both) that make this more a naive parallelization than I expect.
Assuming the elements are read-only for the duration of the
enumeration (the common case), they can be safely copied
willy-nilly to whatever vat they need to be in to run (or use
shared memory if it is available and fast).

Can this be done using vats? Does copying kill it? I get asked
about this problem every time I talk about vats. Everyone seems
to think this (loop-level parallelism) is the simplest, most
fool-proof way to make things faster on a multi-core system, and
give me funny looks when I don't have a quick answer on how this
works in the vats model.

Matthew Fulmer --
Help improve Squeak Documentation:

More information about the Squeak-dev mailing list