Abstract
We introduce a high-performance simulation framework that permits
semi-independent, task-based solution of sets of partial differential
equations, typically manifesting as updates to a collection of 'patches' in
space-time. A hybrid MPI/OpenMP execution model is adopted, where work tasks
are generated by a rank-local 'dispatcher', which selects, from a set of tasks
generally much larger than the number of physical cores (or hardware threads),
tasks that are ready for updating. The definition of a task can vary, for
example, with some solving the equations of ideal magnetohydrodynamics (MHD),
others non-ideal MHD, radiative transfer, or integrating particle trajectories,
and yet others applying particle-in-cell (PIC) methods. Tasks do not have to be
grid-based, while tasks that are may use either Cartesian or curvilinear
meshes. Patches may be stationary or moving, with geometrical size and
orientation fixed or variable. Mesh refinement can be static or dynamic. A
feature of decisive importance for the overall performance of the framework is
that time steps are determined and applied locally, this allows large
reductions in the total number of updates required, and therefore a
corresponding reduction in computing time, in cases when the signal speed
varies greatly across the computational domain. Another important feature is a
load balancing algorithm that operates 'locally' and aims to simultaneously
minimize load and communication imbalance. The framework generally relies on
already existing solvers, whose performance is augmented when run under the
framework, due to more efficient cache usage, vectorization, local time
stepping, and near-linear and, in principle, unlimited OpenMP and MPI scaling.
Users
Please
log in to take part in the discussion (add own reviews or comments).