Programming models, compilers, and runtime systems for accelerator computing