Operating System Support for High-Throughput Processors
Abstract: The processor landscape has fractured into latency-optimized CPUs, throughput-oriented GPUs, and soon, custom accelerators. Future applications will 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 I 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.
I 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 I 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 completes in about third of the time of an 8-CPU-core run.
Joint work with Idit Keidar (Technion), Bryan Ford (Yale) and Emmett Witchel (UT Austin)