A full-stack view of probabilistic computing with p-bits: devices, architectures and algorithms — arXiv2