GPU-Initiated On-Demand High-Throughput Storage Access in the BaM System Architecture — Detailed Summary

Zaid Qureshi, Vikram Sharma Mailthody (equal contribution), Isaac Gelado, Seungwon Min, Amna Masood, Jeongmin Park, Jinjun Xiong, C. J. Newburn, Dmitri Vainbrand, I-Hsin Chung, Michael Garland, William Dally, Wen-mei Hwu | NVIDIA / UIUC / AMD / University at Buffalo / IBM Research / Stanford | ASPLOS '23, Vancouver, BC, pp. 325–339 | DOI: 10.1145/3575693.3575748

Per-section summary organized by the paper's headings. Each section includes paragraph-level bullet points and exact quantitative results where the paper provides them. "BaM" stands for Big accelerator Memory.


Abstract


1. Introduction

Background and motivation:

The DRAM-only alternative and its cost:

Proposal and challenges:

Positioning in the GPUDirect Async family:

Prototype and contributions:


2. Background

2.1 Leveraging CPU or Pooled Multi-GPU Memory

2.2 Tolerating Storage Access Latency


3. BaM System and Architecture

3.1 BaM System Overview

3.2 Comparison With the CPU-Centric Approaches

3.3 High-Throughput I/O Queues

3.4 BaM Software Cache

3.5 BaM Abstraction and Software APIs


4. BaM Prototype

4.1 Enable Direct NVMe Access From GPU Threads

4.2 Scalable Hardware

4.3 BaM Raw Throughput

4.4 Discussion


5. Evaluation

5.1 Comparison With GDS and ActivePointers

5.2 Performance Benefit for Graph Analytics

5.3 I/O Amplification Benefit for Data Analytics

5.4 VectorAdd Workload

5.5 SM Resource Utilization


6.1 Optimized CPU-Centric Model

6.2 Prior Accelerator-Centric Systems

6.3 Hardware Extensions


7. Conclusion


8. System Architecture (synthesized)

        GPU                                         Storage (per SSD)
+---------------------------+    PCIe Gen4    +-----------------------+
|  GPU Thread               |  <----------->  |  Doorbell Reg (DB)    |
|   ❶ val = bam::array[tid] |   control path  |  DMA engine           |
|   ❷ offset / cache line   |   (doorbell)    |  Controller (CTRL)    |
|   ❸ warp coalescer        |                 |  Media (NAND/Optane)  |
|      __match_any_sync     |   data path     +-----------------------+
|      __shfl_sync (leader) |  <===========>  (peer-to-peer DMA)
|   ❹ probe cache metadata  |
+------------+--------------+
   HIT |     | MISS
       v     v
+---------------------------+   In GPU memory (GPUDirect RDMA pinned):
|  BaM Software Cache       |     - Queue metadata (head/tail, ticket,
|   write-back, clock evict |       turn_counter[], mark bit-vec, lock)
|   per-line: state, lock,  |     - SQ/CQ queue pairs
|   ref count, dirty bit    |     - Cache metadata
+------------+--------------+     - I/O buffers (DMA target)
       | MISS -> I/O Stack
       v
+---------------------------+   Enqueue protocol (lock-minimized):
|  Submission Queue (SQ)    |     ticket += 2 -> (entry, turn)
|   ❺ build NVMe cmd        |     poll turn_counter[entry]==turn
|   ❻ enqueue + set mark    |     write cmd, set mark bit
|   (A) move_tail: 1 thread |     move_tail -> reset_marks -> ring DB
|       rings doorbell once |
+---------------------------+
|  Completion Queue (CQ)    |   (B) ctrl fetches SQ  (C) processes
|   ❼ lock-free poll        |   (D) DMA to I/O buffer (E) post CQ entry
|   ❽ update cache + SQ/CQ  |   ctrl returns new SQ head via CQ entry
|   ❾ read data in GPU mem  |
+---------------------------+

9. Cross-Cutting Empirical Take-Aways

Take-away Quantitative evidence
Software stack, not the device, limits CPU-initiated I/O OS overhead up to 36.4% of latency; GDS only 23.6% of PCIe at 4KB
GPU parallelism can saturate storage 45.8M read / 10.6M write IOPs (10 Optane); 22.9 GBps = 90% of Gen4 ×16
GPU-initiated beats prior accelerator-centric by >10× BaM 17 MIOPS vs ActivePointers 823 KIOPs; 430 Gbps hits vs 11.2× lower
On-demand fetch removes I/O amplification RAPIDS advantage grows Q0→Q5; up to 5.3× over RAPIDS
Cheap SSDs are viable Samsung 980pro only 3.21×/2.68× slower than Optane at 21.8× lower $/GB
Storage-based ≈ DRAM-only at far lower cost 1.0×/1.49× vs host-memory T at up to 21.7× cost reduction
Locality + coalescing dominate naive cache 11.9×/12.65×; +coalescing/reuse 6.07×/11.24×

10. Limitations of BaM (stated by authors)


11. Future Work / Open Problems


12. Relation to NCCL / GPU Collective Communication / HPC