  We introduce a new high-performance design for parallelism within the Quantum
Monte Carlo code QMCPACK. We demonstrate that the new design is better able to
exploit the hierarchical parallelism of heterogeneous architectures compared to
the previous GPU implementation. The new version is able to achieve higher GPU
occupancy via the new concept of crowds of Monte Carlo walkers, and by enabling
more host CPU threads to effectively offload to the GPU. The higher performance
is expected to be achieved independent of the underlying hardware,
significantly improving developer productivity and reducing code maintenance
costs. Scientific productivity is also improved with full support for fallback
to CPU execution when GPU implementations are not available or CPU execution is
more optimal.
