A Framework For Productive, Efficient And Portable Parallel Computing