Systems And Algorithm Support For Efficient Heterogeneous Computing With Gpus