  The simulation of the two-dimensional Ising model is used as a benchmark to
show the computational capabilities of Graphic Processing Units (GPUs). The
rich programming environment now available on GPUs and flexible hardware
capabilities allowed us to quickly experiment with several implementation
ideas: a simple stencil-based algorithm, recasting the stencil operations into
matrix multiplies to take advantage of Tensor Cores available on NVIDIA GPUs,
and a highly optimized multi-spin coding approach. Using the managed memory API
available in CUDA allows for simple and efficient distribution of these
implementations across a multi-GPU NVIDIA DGX-2 server. We show that even a
basic GPU implementation can outperform current results published on TPUs and
that the optimized multi-GPU implementation can simulate very large lattices
faster than custom FPGA solutions.
