The processor landscape has fractured into latency-optimized CPUs, throughput-oriented GPUs, and soon, custom accelerators. Future applications wwill need to cohesively use a variety of hardware to achieve their performance and power goals. However building efficient systems that use accelerators today is incredibly difficult.
In this talk we will argue that the root cause of this complexity lies in the lack of adequate operating system support for accelerators. While operating systems provide optimized resource management and Input/Output (I/O) services to CPU applications, they make no such services available to accelerator programs.
We propose GPUfs - an operating system layer which enables access to files directly from programs running on throughput-oriented accelerators, such as GPUs. GPUfs extends the constrained GPU-as-coprocessor programming model, turning GPUs into first-class computing devices with full file I/O support. It provides a POSIX-like API for GPU programs, exploits parallelism for efficiency, and optimizes for access locality by extending a CPU buffer cache into physical memories of all GPUs in a single machine.
Using real benchmarks we show that GPUfs simplifies the development of efficient applications by eliminating the GPU management complexity, and broadens the range of applications that can be accelerated by GPUs. For example, a simple self-contained GPU program which searches for a set of strings in the entire tree of Linux kernel source files runs about 7 times faster than an 8-CPU-core run.
Joint work with Bryan Ford (Yale), Idit Keidar (Technion) and Emmett Witchel (UT Austin)