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