MASON-INTEREST-L Archives

May 2010

MASON-INTEREST-L@LISTSERV.GMU.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Sean Luke <[log in to unmask]>
Reply To:
MASON Multiagent Simulation Toolkit <[log in to unmask]>
Date:
Wed, 12 May 2010 21:38:13 -0400
Content-Type:
text/plain
Parts/Attachments:
text/plain (36 lines)
On May 12, 2010, at 3:34 PM, Steven Saul wrote:

> After looking at HeatBugs and the ThreadedDiffuser class, I was  
> wondering
> if there was a way to use ParallelSequence to split the processing of
> agents (in this case the actual heat bugs) in each time step.  For
> example, if you have 800 heatbugs in any given time step, a computer  
> with
> 8 cores would process 100 bugs on each core simultaneously in that  
> time
> step.

Sort of.  You just schedule a ParallelSequence on the schedule.  In
the ParallelSequence you put, say, eight RandomSequences.  Each of the  
RandomSequences
holds 1/8 of all your bugs.

However you have to be careful there.  Each HeatBug reads information,  
moves, and writes information. This presents opportunities for race  
conditions.  First, if one HeatBug is reading a location while another  
is writing the same location, you'll get messed up results.  Second,  
if two HeatBugs access the SparseGrid2D at the same time to move,  
they'll break the hash table.  This means that realistically you can  
only do the read portion of these operations in parallel.  So you'd  
have the parallel sequence call step() methods which do the reads and  
internal computation for each bug in parallel; but after that you'd  
have to schedule the bugs serially (as before, maybe in a later  
priority) to move themselves and then write to the heat array.

This is advanced threading stuff for people who are really familiar  
with the perils of threaded coding.  If the above paragraph causes you  
to say "huh?", then the answer is NO, you SHOULD NOT parallelize your  
agents.  :-)

Sean

ATOM RSS1 RSS2