Rethinking The Programming Interface In Future Heterogeneous Computers