Programming Abstractions And Synthesis-Aided Compilation For Emerging Computing Platforms