In this first Part, we explore the following question: despite the seemingly fundamental fact that generic many-body quantum mechanical systems are exponentially costly to classically simulate, how far can we push it? While, as described in the Introduction (Chapter 1), classical simulation can actually be efficient for quantum systems with certain special properties like low entanglement, here we focus on instances in which this is not the case, and the best approach is truly to store and manipulate exponentially-large vectors of coefficients to represent quantum states. We apply the tools of modern supercomputing, including massive parallelism both via the distributed memory paradigm and also via acceleration on graphics processing units (GPUs), as well as cutting-edge algorithms for numerical linear algebra, to push our computations to as large system sizes as possible, enabling the numerical observation of new physics which was previously obscured by finite size effects.
In Chapter 2, we present the numerical package dynamite, which provides an easy-to-use and straightforward Python interface to highly-optimized, massively parallelizable numerics for many-body systems of quantum spin-1/2 particles with arbitrary interactions. In Chapter 3, we present a new numerical approach to the specific problem of exploring many-body localization in the Heisenberg model with disordered on-site fields. In particular, we apply a cutting-edge numerical algorithm called LOBPCG in combination with other algorithmic tricks and a hand-tuned software implementation to dramatically reduce the computer memory required to solve the problem.