Co-design at Lawrence Livermore National Lab
The "Monte Carlo Benchmark" (MCB) is intended for use in exploring the computational performance of Monte Carlo algorithms on parallel architectures. It models the solution of a simple heuristic transport equation using a Monte Carlo technique. The MCB employs typical features of Monte Carlo algorithms such as particle creation, particle tracking, tallying particle information, and particle destruction. Particles are also traded among processors using MPI calls.
The heuristic transport equation models the behavior of particles that are born, travel with a constant velocity, scatter, and are absorbed.
The heuristic transport equation in MCB ignores a number of effects that are important in real world problems. The particles in the MCB simulation do not interact with material by depositing energy, do not use physical cross sections, and do not model real transport effects such as frequency dependent properties or material motion corrections. The MCB is implemented on a simple orthogonal grid. Because of these limitations, the MCB is solely intended to serve as a benchmark and is not intended to model real physics.
The MCB is designed to confirm correct hybrid MPI + OpenMP performance, single CPU performance, and parallel scaling on new computers.
The MCB achieves parallelism through domain decomposition and threading. Domain decomposition means that the physical space simulated by the code is cut up into distinct sections (domains), each of which is simulated by a different MPI process. When particles hit the boundary of a domain, they are buffered. The buffers are sent using a non-blocking MPI call to the processor simulating the domain on the other side of the boundary.
OpenMP threads can be used within an MPI task to cooperatively track the particles in its domain.