A lightweight approach to performance portability with targetDP. (March 2018)