Nothing about GPUs technically forces you to code for specific architectures. It’s really no different than optimizing your code for a specific CPU.
To summarize my gripe, it's is that the abstractions on GPUs seem broken, and we still don't have a good model for how to write high performance GPU code that just works and keeps getting faster as GPUs get faster.