Towards Enhancing Performance, Programmability, And Portability In Heterogeneous Computing