We are working on a programming model for GPUs. It looks like the best construct to use is DO CONCURRENT with a BLOCK construct for defining variables. The ROSE transformations will strip off the DO CONCURRENT and generate OpenCL nearly line for line with the example code attached.
program demonstrating GPU programming model in Fortran