GPU4FS: The Fully GPU-Accelerated File System
In modern computer systems, accelerators like GPUs take over an increasing amount of increasingly complex computations. One major obstacle when growing GPU usage is found in the data transfer between the graphics card and the remaining system. Challenges include both data movement orchestration and organization, which we address with the GPU4FS project.
Traditionally, the complete data set to be worked on needs to be transferred to GPU memory before the actual computations starts. Additionally, most contemporary GPU software uses as much GPU memory (VRAM) in a computation as possible, which prevents background transfers for later computations. Therefore, while the actual computation happens, the limited bandwidth between CPU and GPU remains unused. With fine-grained control over the data movement and GPU progress, only the data used at a particular moment could dynamically be moved the GPU. However, in traditional systems where the CPU orchestrates data movement, high communication latency prohibits this optimization.
An example for a modern, complex, GPU-side application is large-scale text and image search. Here, the input data is quite varied, with inputs ranging vary from few kilobytes of text, to multiple terabytes of image or movie collections. When searching, the application may only need to load parts of the data corpus, e.g., a single frame from a movie. Additionally, to facilitate the search effort and the result sorting, the applications requires ways to organize the data, e.g., hierarchical in a tree. Lastly, an underlying system needs aid programmers in developing such applications, i.e., by supporting data discovery primitives and data passthrough for applications structured in pipelines.
To solve these problems, we propose GPU4FS, a full-scale file system running completely on the GPU. First, using the GPU as the orchestrator enables the fine-grained data transfer required for low latency accesses and maximizing both bandwidth and computational utilization. Second, a file system offers hierarchically organized data that can efficiently manage differently sized chunks of data and dynamically share persistent storage. In combination, we achieve an easy to use and deploy system that offers high performance without manual program and data flow optimizations while being familiar to programmers. Additionally, we can use the information from the file system to further inform the data movement orchestration, increasing the value of this combination.
We separate our research activity into four compartments that are integrated into our GPU4FS system: First, we explore the application behavior of GPU applications and the opportunities that GPU4FS offers here. Second, we investigate the modifications and optimizations that we need to employ to run the file system efficiently on the GPU. Third, we develop the necessary infrastructure to even run a file system on the GPU, like enabling direct NVMe storage access from the GPU. And fourth, we seek to broaden the use of GPU4FS for other fields, like offloading the file system from the CPU for CPU-heavy but storage-light application when a GPU is available.
Subprojects
GPU-Side File System Applications
We explore different kinds of applications to use with GPU4FS. We take two approaches in selecting applications. First, we investigate applications that are currently in high demand, like AI training and inference. Second, we explore application characteristics that can be exploited by GPU4FS, and select applications that exhibit many of these characteristics. Learn more about GPU applications, their storage usage patterns and how GPU4FS can accelerate these applications.
Modifying the File System for the GPU
Applications accessing GPU4FS expect certain functionality from the file system and its interface. We explore these expectations to offer fast, efficient and parallel access to the file system with minimal overhead, while keeping a familiar interface. To improve performance further, we investigate the on-disk and in-memory management data structures to match the GPUs strength. Learn more on how we modify the file system, its interface and its data structures.
GPU File System Infrastructure
GPU4FS needs additional infrastructure in both hardware and software to interface with both applications and storage. Given a lack of system calls, we offer a ring buffer based communication primitive for application communication. To access storage without CPU interaction, we develop a storage driver for NVMe SSDs running on the GPU. Additionally, we investigate the GPU memory subsystem to enable reliable communication between the different subsystems. Learn more about communication inside and outside of the GPU and how GPU4FS interfaces with the outside world.
Broadening the Use of GPU4FS
GPU4FS is a large system that enables use cases outside of low-latency GPU-side file system access. In particular, GPU4FS can enable more GPU features and can accelerate certain CPU-side applications. First, GPU4FS interfaces with the CPU-side kernel to enable features depending on page table access like dynamic memory management. Second, GPU4FS offloads file system accesses for CPU-bound parallel applications. Third, we reuse and extend the communication channels developed for GPU4FS to enable multi-GPU work stealing. Learn more on how parts of GPU4FS can be reused outside of a GPU-side file system application.
| Author | Title | Source |
|---|---|---|
Peter Maucher, Nick Djerfi, Lennard Kittner, Lukas Werling, Frank Bellosa |
Are Your GPU Atomics Secretly Contending? | PLOS ’25, 13th Workshop on Programming Languages and Operating Systems (October 13–16, 2025, Seoul, Republic of Korea |
Peter Maucher, Lennard Kittner, Nico Rath, Gregor Lucka, Lukas Werling, Yussuf Khalil, Thorsten Gröninger, Frank Bellosa |
Full-Scale File System Acceleration on GPU | Tagungsband des FG-BS Frühjahrstreffens 2024, Bochum, Germany, March 14 - 15, 2024 |