The 2017 documentation says: Texture variables may be accessed only in device subprograms, and can only be read, not written.
But do I understand correctly that they are also writable now?
These lines suggest so:
real, texture, pointer :: aTex(:)
real, managed, dimension(N), target :: a_dev
a_dev=0.0
aTex => a_dev
! later in kernel code:
aTex(i) = aTex(i)+c
! works, and updates the a_dev values