Vats, Islands, and Collections: Finding cheap parallelism

Andreas Raab andreas.raab at
Thu Jan 24 19:38:26 UTC 2008

In which case I can't help but point out the Hydra VM which is a Squeak 
VM that will run on multiple cores ;-)

The base idea is to take a few steps forward to having both, some 
immediate benefits from being able to run multiple images in one process 
as well as having a breeding ground for new ideas.

   - Andreas

ungar at wrote:
> Sam and Jecel,
> Thank you both for forwarding this to me.
> And I wanted to second Sam's message to anyone out there working on 
> multicore models or models for massively parallel computation from a 
> Smalltalkish point of view.
> Let's exchange ideas and approaches as we explore this new territory!
> - David
> On Jan 24, 2008, at 7:00 AM, Sam Adams wrote:
>> 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
>> cores).
>> 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.
>> Regards,
>> Sam
>> 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.
>>                  org>
>>                                                                        cc
>>             01/24/2008 01:34                                      Subject
>>             AM                        Vats, Islands, and Collections:
>>                                       Finding cheap parallelism
>>             Please respond to
>>                    The
>>              general-purpose
>>             Squeak developers
>>                   list
>>             <squeak-dev at lists
>>             .squeakfoundation
>>                   .org>
>> 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 =
>> island).
>> 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