  In many scientific domains, researchers are turning to large-scale behavioral
simulations to better understand important real-world phenomena. While there
has been a great deal of work on simulation tools from the high-performance
computing community, behavioral simulations remain challenging to program and
automatically scale in parallel environments. In this paper we present BRACE
(Big Red Agent-based Computation Engine), which extends the MapReduce framework
to process these simulations efficiently across a cluster. We can leverage
spatial locality to treat behavioral simulations as iterated spatial joins and
greatly reduce the communication between nodes. In our experiments we achieve
nearly linear scale-up on several realistic simulations.
  Though processing behavioral simulations in parallel as iterated spatial
joins can be very efficient, it can be much simpler for the domain scientists
to program the behavior of a single agent. Furthermore, many simulations
include a considerable amount of complex computation and message passing
between agents, which makes it important to optimize the performance of a
single node and the communication across nodes. To address both of these
challenges, BRACE includes a high-level language called BRASIL (the Big Red
Agent SImulation Language). BRASIL has object oriented features for programming
simulations, but can be compiled to a data-flow representation for automatic
parallelization and optimization. We show that by using various optimization
techniques, we can achieve both scalability and single-node performance similar
to that of a hand-coded simulation.
