How rocm/hipfile works
hipFile is a GPU-direct file I/O library exposing a cuFile-compatible C API. An application initializes the driver, registers GPU buffers and file handles, then submits synchronous, asynchronous, stream, or batch reads/writes; the selected AMD or NVIDIA implementation transfers data between storage and GPU memory while reporting status and statistics. Sampled code confirms fallback async orchestration, batch validation, context initialization, and NVIDIA translation. Several AMD entry points and statistics internals were not sampled, so those links remain conservative.
Components 22
Public API
- hipFile API
include/hipfile.h - Common API
src/common/hipfile-common.cpp
AMD Runtime
- AMD Entry Points
src/amd_detail/hipfile.cpp - Runtime Contexts
src/amd_detail/context.cpp - Driver State
src/amd_detail/state.cpp - File Buffer Registry
src/amd_detail/file.cpp - AMD I/O
src/amd_detail/io.cpp - I/O Backends
- Fallback Transfers
src/amd_detail/backend/fallback.cpp - Async Operations
src/amd_detail/async.cpp - Batch I/O
src/amd_detail/batch/batch.cpp - HIP Streams
src/amd_detail/stream.cpp - Runtime Configuration
src/amd_detail/configuration.cpp
NVIDIA Compatibility
- NVIDIA Entry Points
src/nvidia_detail/hipfile.cpp - cuFile Adapter
src/nvidia_detail/hipfile-cufile.cpp
Observability
- Statistics API
src/amd_detail/include_internal/hipfile-stats.h - Statistics Tool
tools/ais-stats/ais-stats.cpp
Other components
- Application
- NVIDIA cuFile
- GPU Runtime
- Storage System
- Target Process
Connections 24
- Application → hipFile API: calls API
- hipFile API → AMD Entry Points: dispatches AMD
- hipFile API → NVIDIA Entry Points: dispatches NVIDIA
- hipFile API → Common API: gets errors
- AMD Entry Points → Runtime Contexts: gets contexts
- Runtime Contexts → Driver State: initializes state
- AMD Entry Points → File Buffer Registry: registers resources
- AMD Entry Points → AMD I/O: submits I/O
- AMD I/O → I/O Backends: selects backend
- I/O Backends → Fallback Transfers: uses fallback
- Fallback Transfers → Async Operations: queues operations
- Async Operations → HIP Streams: uses streams
- AMD Entry Points → Batch I/O: submits batches
- AMD Entry Points → Runtime Configuration: reads configuration
- Fallback Transfers → GPU Runtime: copies GPU data
- AMD I/O → Storage System: reads and writes
- NVIDIA Entry Points → cuFile Adapter: translates calls
- cuFile Adapter → NVIDIA cuFile: calls cuFile
- NVIDIA cuFile → GPU Runtime: transfers GPU data
- NVIDIA cuFile → Storage System: accesses storage
- Application → Statistics API: collects statistics
- Statistics Tool → Statistics API: uses statistics
- Statistics Tool → Target Process: monitors process
- Statistics API → Target Process: polls statistics