The design, implementation and optimization of a parallel, Monte Carlo particle
transport code is presented. MERCURY [1] is a modern Monte Carlo code being
developed at the Lawrence Livermore National Laboratory (LLNL). It is capable of
modeling the transport of neutrons, gammas, and five light ions through a variety of
problem geometries, both combinatorial and mesh based.
A key requirement which has driven the design and development of MERCURY is
the ability to run on various massively parallel computing platforms. To this end, we
have designed and implemented a multifaceted
approach to parallelism in MERCURY.
This parallel programming model employs both distributedmemory
message passing
and sharedmemory
threading techniques. This allows us to model particle transport
through very large meshes or geometries (spatial parallelism), as well as very large
particle counts (particle parallelism).
Following a detailed discussion of the parallel implementation of MERCURY, we
assess the parallel performance of the code on two criticality problems. Particleinduced
load imbalance will be shown to degrade the parallel efficiency of spatiallydecomposed
calculations. We will present the latest results of our efforts to minimize
the load imbalance by (a) varying the number of replicated domains in spatial
and
particledecomposed
calculations and (b) varying the size of each domain via spatial redecomposition.
Key Words: Monte Carlo, particle transport, parallel computation, MERCURY
REFERENCES
[1] R. J. Procassini and J. M. Taylor, MERCURY User Guide (Version b.6), Lawrence
Livermore National Laboratory, Report UCRLTM204296
(2004).