  We present a port of the numerical relativity code SpEC which is capable of
running on NVIDIA GPUs. Since this code must be maintained in parallel with
SpEC itself, a primary design consideration is to perform as few explicit code
changes as possible. We therefore rely on a hierarchy of automated porting
strategies. At the highest level we use TLoops, a C++ library of our design, to
automatically emit CUDA code equivalent to tensorial expressions written into
C++ source using a syntax similar to analytic calculation. Next, we trace out
and cache explicit matrix representations of the numerous linear
transformations in the SpEC code, which allows these to be performed on the GPU
using pre-existing matrix-multiplication libraries. We port the few remaining
important modules by hand. In this paper we detail the specifics of our port,
and present benchmarks of it simulating isolated black hole spacetimes on
several generations of NVIDIA GPU.
