Quicksilver is a open source proxy app that represents the key elements of the Mercury workload by solving a simplified dynamic Monte Carlo particle transport problem. Quicksilver attempts to replicate the memory access patterns, communication patterns, and the branching or divergence of Mercury for problems using multigroup cross sections. OpenMP and MPI are used for parallelization. A GPU version is available.

If you are interested in continuous energy cross sections you might want to look at XSBench or RSBench.

Quicksilver Absorption Scattering Fissure


Figure 1: Monte Carlo transport simulations sample the probabilities of the various interactions that a particle can have with its surroundings.  To keep the code simple, Quicksilver considers only three possible reactions: absorption, scattering, and fission.

What’s Included

Quicksilver provides:

  • 3-dimensional, hexahedral problem domain with reflective and vacuum boundary conditions.
  • Discretization of the problem domain with a 3D mesh.
  • Mesh elements will be generalized hexahedral elements with 8 corner nodes and 6 face nodes.
  • As shown in Figure 2 (below), each mesh element will have 24 triangular faces and will be treated by the tracking algorithm as a polyhedron.
  • Multiple material regions specified as collections of spheres or bricks.
  • Each material’s ability to have a different number of isotopes and reactions.
  • All isotopes will be equivalent.
  • Only three types of reactions are allowed: absorption, elastic scattering, and fission (approximate).
  • If more than three reactions are specified, these three reactions will be copied as many times as necessary.
  • Multigroup cross sections.
  • Simplified particle sources. Uniform distribution within the source region, with isotropic direction and uniform energy sampling.
  • Multigroup scalar flux tally per mesh element.
  • Multi-node capabilities via domain decomposition.
  • Data structures and algorithms tailored to represent Mercury program flow and data access patterns.
  • All physics data is artificial and generated internally by Quicksilver.

These capabilities will allow the user to specify a variety of possible use cases that will provide the flexibility needed to study scalability and probe sensitivity to hardware architecture.

A cube with triangular sections marked off by vertexes and edges on each side


Figure 2

A Quicksilver mesh element. Although the 14 nodes can be thought of as occupying the four corners and face centers of a hexahedra, there is no requirement for any set of four node to be coplanar. Hence, the element forms a polyhedron with 24 triangulated faces.

What’s Not Included

There will be no support in Quicksilver for the following Mercury features:

  • Combinatorial geometry
  • Checkpoint/restart
  • Complex load balancing

Download Quicksilver

Find Quicksilver on GitHub