Programming models for next generation HPC systems