1. The driver client, from the open kernel module's headers
libcuda is closed, but everything it does to the hardware goes through ioctls that the open kernel module defines in its public headers. We copied 67 of those headers unchanged (MIT) and wrote our own client against them: client, device, address space, memory, command ring, compute object, doorbell, completion.
Source on GitHub