Software/Hardware Co-Design to Improve Productivity, Portability, and Performance of Loop-Task Parallel Applications