  With the introduction of advanced heterogeneous computing architectures based
on GPU accelerators, large-scale production codes have had to rethink their
numerical algorithms and incorporate new programming models and memory
management strategies in order to run efficiently on the latest supercomputers.
In this work we discuss our co-design strategy to address these challenges and
achieve performance and portability with MARBL, a next-generation multi-physics
code in development at Lawrence Livermore National Laboratory. We present a
two-fold approach, wherein new hardware is used to motivate both new algorithms
and new abstraction layers, resulting in a single source application code
suitable for a variety of platforms. Focusing on MARBL's ALE hydrodynamics
package, we demonstrate scalability on different platforms and highlight that
many of our innovations have been contributed back to open-source software
libraries, such as MFEM (finite element algorithms) and RAJA (kernel
abstractions).
