Optimizing Emerging Applications Through Software Hardware Co-Design