This is the open-source repository for our paper: "Phoenix: A Refactored I/O Stack for GPU Direct Storage without Phony Buffers", which has been accepted for SC'25. This documentation explains how to build, configure and use this I/O stack.
phonix
|--benchmarks # artifact evaluation files
|--example # example for how to use phoenix
|--libphoenix # user library for phoenix
|--module # kernel module for phoenix
|--scripts # test scripts- OS: Ubuntu 22.04.2 LTS
- kernel: Linux 6.1.0-rc8
- NVIDIA driver: 550.54
- OFED driver: 24.10
- CUDA: 12.4
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo bash cuda_12.4.0_550.54.14_linux.run
# select nvidia-fs option and choose open driversudo ./mlnxofedinstall --with-nvmf --with-nfsrdma --enable-gds --add-kernel-support --dkms --skip-unsupported-devices-check
sudo update-initramfs -u -k `uname -r`
sudo rebootcd scripts
sudo bash nvme_of.sh <target|initiator> <setup|cleanup>cd scripts
sudo bash nfs.sh <server|client>mkdir -p build
cd build && cmake ../
make -j Note: this will compile all the benchmarks including the kernel module
cd build && sudo make insmodNote: must run nvidia-smi to modprobe nvidia driver before install phoenix kernel module.
We have provided a simple example to illustrate how to program using libphoenix
# see example/example.ccWe provide some scripts to execute the evaluation procedure.
Note: make sure to update the paths in the scripts.
We have integrated all experiment scripts and provided a Python script.
Users can run the corresponding experiment by specifying the artifact parameter. This script will also print all the corresponding execution commands.
Before running this Python script, users need to set the variables file_path, nvmeof_file_path, and model_dir to the paths specific to users’ own environment.
All results will be stored in the phoenix/sc25/results directory
cd phoenix/sc25
# `all` will run table3 and fig 3 ~ 12
sudo python run_all_benchmarks.py --artifact allIn addition, we also provide individual scripts for each experiment as follows:
cd scripts && sudo bash breakdown.shcd scripts
# see micro.py for detail
sudo python micro.py <0|1> <0|1|2> 0cd build/
sudo bin/end-to-end <file_path> <io_size> <mode>cd scripts
sudo bash kvcache.shcd scripts
sudo python load_safetensors.py@inproceedings {sc25Phoenix,
author = {Jianqin Yan, Shi Qiu, Yina Lv, Yifan Hu, Hao Chen, Zhirong Shen, Xin Yao, Renhai Chen, Jiwu Shu, Gong Zhang, and Yiming Zhang.},
title = {Phoenix:A Refactored I/O Stack for GPU Direct Storage without Phony Buffers.},
booktitle = {The International Conference for High Performance Computing, Networking, Storage and Analysis (SC ’25)},
year = {2025},
address = {St Louis, MO, USA},
publisher = {ACM}
}