The features missing hardware support can fall back to software implementations.
In any case, ideally, the level of abstraction would be higher, with little application logic requiring GPU architecture awareness.