  QMCPACK has enabled cutting-edge materials research on supercomputers for
over a decade. It scales nearly ideally but has low single-node efficiency due
to the physics-based abstractions using array-of-structures objects, causing
inefficient vectorization. We present a systematic approach to transform
QMCPACK to better exploit the new hardware features of modern CPUs in portable
and maintainable ways. We develop miniapps for fast prototyping and
optimizations. We implement new containers in structure-of-arrays data layout
to facilitate vectorizations by the compilers. Further speedup and smaller
memory-footprints are obtained by computing data on the fly with the vectorized
routines and expanding single-precision use. All these are seamlessly
incorporated in production QMCPACK. We demonstrate upto 4.5x speedups on recent
Intel processors and IBM Blue Gene/Q for representative workloads. Energy
consumption is reduced significantly commensurate to the speedup factor.
Memory-footprints are reduced by up-to 3.8x, opening the possibility to solve
much larger problems of future.
