Quicksilver is a open source proxy app that represents the key elements of the Mercury workload by solving a simpliﬁed 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.
- 3-dimensional, hexahedral problem domain with reﬂective 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 speciﬁed 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 ﬁssion (approximate).
- If more than three reactions are speciﬁed, these three reactions will be copied as many times as necessary.
- Multigroup cross sections.
- Simpliﬁed particle sources. Uniform distribution within the source region, with isotropic direction and uniform energy sampling.
- Multigroup scalar ﬂux tally per mesh element.
- Multi-node capabilities via domain decomposition.
- Data structures and algorithms tailored to represent Mercury program ﬂow 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 ﬂexibility needed to study scalability and probe sensitivity to hardware architecture.
What’s Not Included
There will be no support in Quicksilver for the following Mercury features:
- Combinatorial geometry
- Complex load balancing