Vats, Islands, and Collections: Finding cheap parallelism

Janko Mivšek janko.mivsek at
Fri Jan 25 18:51:33 UTC 2008

ungar at wrote:

> 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!

And don't forget that there is many years the multi-code Smalltalk 
already out there: Gemstone Smalltalk, production ready, 64bit, 1000nds 
of CPUs/cores etc. I think many Gemstone approaches handling parallelism 
can be used more broadly too. And now when Gemstone Smalltalk is 
becoming more and more like Squeak, even more.


> 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>>

>> 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:

Janko Mivšek
Smalltalk Web Application Server

More information about the Squeak-dev mailing list