We propose a new set of OS abstractions to support GPUs and other accelerator devices as first class computing resources. These new abstractions, collectively called the PTask API, support a dataflow programming model. Because a PTask graph consists of OS-managed objects, the kernel has sufficient visibility and control to provide system-wide guarantees like fairness and performance isolation, and can streamline data movement in ways that are impossible under current GPU programming models.
Our experience developing the PTask API, along with a gestural interface on Windows 7 and a FUSE-based encrypted file system on Linux show that the PTask API can provide important systemwide guarantees where there were previously none, and can enable significant performance improvements, for example gaining a 5×improvement in maximum throughput for the gestural interface.
This paper proposes a new set of OS abstractions for accelerators such as GPUs called the PTask API. PTasks expose only enough hardware detail as is required to enable programmers to achieve good performance and low latency, while providing abstractions that preserve modularity and composability. The PTask API promotes GPUs to a general-purpose, shared compute resource, managed by the OS, which can provide fairness and isolation.
Christopher J. Rossbach, Jon Currey, Mark Silberstein, Baishakhi Ray, and Emmett Witchel. 2011. PTask: operating system abstractions to manage GPUs as compute devices. In Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles (SOSP ’11). ACM, New York, NY, USA, 233-248. [DOI: 10.1145/2043556.2043579][Free PDF]