Optimizing Emerging Graph Applications Using Hardware-Software Co-Design