  Agent-based modeling (ABM) is a bottom-up modeling approach, where each
entity of the system being modeled is uniquely represented as an independent
decision-making agent. Large scale emergent behavior in ABMs is population
sensitive. As such, the number of agents in a simulation should be able to
reflect the reality of the system being modeled, which can be in the order of
millions or billions of individuals in certain domains. A natural solution to
reach acceptable scalability in commodity multi-core processors consists of
decomposing models such that each component can be independently processed by a
different thread in a concurrent manner. In this paper we present a
multithreaded Java implementation of the PPHPC ABM, with two goals in mind: 1)
compare the performance of this implementation with an existing NetLogo
implementation; and, 2) study how different parallelization strategies impact
simulation performance on a shared memory architecture. Results show that: 1)
model parallelization can yield considerable performance gains; 2) distinct
parallelization strategies offer specific trade-offs in terms of performance
and simulation reproducibility; and, 3) PPHPC is a valid reference model for
comparing distinct implementations or parallelization strategies, from both
performance and statistical accuracy perspectives.
