Towards High Performance and Usability Programming Methodology for Heterogeneous HPC Architectures