This one seems to be a very thin interface over raw buffers, with the CUDA runtime managing the hard parts of migrating to device(s) and back. Pretty neat to offer natural interfaces to that sort of managed memory, but necessarily low-level. Anything more expressive than (automagically-migrated) arrays of primitives is up to the programmer.