There are three kinds of uses of parallelization here that I'd like
0 Parallelizing an experiment within a single machine.
1. Parallelizing a single experiment by spreading it across multiple
machines that work together. This commonly involves one or both of
the following tasks.
1.a Distribute the *space* of the world across multiple machines
because it's so big in memory
1.b Distribute the *agents* of the world because their
computational cost is too large
2. Using multiple machines to do multiple experiments, one experiment
#0 is trivial.
For #2, shell scripts and rsh do just fine for us; indeed use of PVM/
MPI etc., is just way too heavyweight, particularly since Java and
MPI don't play well together still. #2 is also very cleanly done on
grid computing solutions. If anyone's interested, there's a company
in my area (Parabon) which negotiates to borrow excess cycles on
organizations' PCs and then sells this time with a Java-only piece of
grid computing software. For a large NASA project they've adapted my
ECJ code to this system and I'm sure would be interested in tasks you
might have in MASON. Give 'em a call (parabon.com).
For #1, I'm very interested in knowing how people are adapting MASON
(or RePast) to distribute their experiment. Do you have 1.a as a
need? 1.b? How are you going about hacking MASON etc. to do it?
The reason I ask is that one of our grants may push us to look into
creating a version of MASON which does #1 cleanly. Note that MASON
was specifically designed for #2, and indeed *good*, efficient
architectures are very different between #1 designs and #2 designs.
So we're going to have to think about what kinds new data structures
will we need. Probably at least we'll need a distributed schedule
sync device, a way for agents to migrate, and several mechanisms for
distributing space. It's a lot of overhead.
I'm interested that some have mentioned RePast. RePast etc. weren't
designed for #1 *or* #2. I know people have been hacking
distribution onto RePast, and am interested in how they overcame the
issue of the schedule containing single-machine Java events (repaints
etc.). It might help inform us when we get to working on this.