  The conventional approach of moving data to the CPU for computation has
become a significant performance bottleneck for emerging scale-out
data-intensive applications due to their limited data reuse. At the same time,
the advancement in 3D integration technologies has made the decade-old concept
of coupling compute units close to the memory --- called near-memory computing
(NMC) --- more viable. Processing right at the "home" of data can significantly
diminish the data movement problem of data-intensive applications.
  In this paper, we survey the prior art on NMC across various dimensions
(architecture, applications, tools, etc.) and identify the key challenges and
open issues with future research directions. We also provide a glimpse of our
approach to near-memory computing that includes i) NMC specific
microarchitecture independent application characterization ii) a compiler
framework to offload the NMC kernels on our target NMC platform and iii) an
analytical model to evaluate the potential of NMC.
