new feature: Explore if OpenDAL can support KvikIO (aka Nvidia GPUDirect Storage)
- Dominant language
- Rust
- Stars
- 5.4k
- Forks
- 825
- Avg merge
- 1d 14m
- Merged PRs (30d)
- 127
Description
### Feature Description
## GPUDirect Storage
[Nvidia GPUDirect Storage](https://developer.nvidia.com/blog/gpudirect-storage/) is a technology introduced by Nvidia that enables GPUs to read files directly.

With GPUDirect Storage:
- Higher Bandwidth: GDS offers 2x-8x higher bandwidth by enabling direct data transfers between storage and GPU, bypassing CPU involvement.
- Lower Latency: Explicit and direct transfers reduce latency by 3.8x and ensure stable latency even as GPU concurrency increases.
- Reduced CPU Load: DMA engines near storage reduce CPU load, maintaining higher bandwidth with minimal CPU utilization, and GPU utilization remains near zero during data transfers.
- Superior IO Bandwidth: GPUs achieve higher IO bandwidth (215 GB/s) compared to CPUs (50 GB/s).
- Scalable Storage Access: GDS allows fast access to large data sets, whether stored locally or remotely, nearly saturating GPU bandwidth by combining data transfers from various sources (CPU memory, local storage, remote storage).
- Efficient Data Caching: Large distributed data sets can be cached in local storage, and working tables can be cached in CPU memory for collaborative use with the CPU, enhancing overall system performance.
## cuFile
Nvidia exposes GDS support via [cuFile](https://docs.nvidia.com/gpudirect-storage/api-reference-guide/index.html) which included in [CUDA toolkit](https://docs.nvidia.com/cuda/).
## KvikIO
KvikIO is a High Performance File IO lib.
KvikIO is a Python and C++ library for high performance file IO. It provides C++ and Python bindings to [cuFile](https://docs.nvidia.com/gpudirect-storage/api-reference-guide/index.html), which enables [GPUDirect Storage (GDS)](https://developer.nvidia.com/blog/gpudirect-storage/). KvikIO also works efficiently when GDS isn't available and can read/write both host and device data seamlessly. The C++ library is header-only making it easy to include in [existing projects](https://github.com/rapidsai/kvikio/blob/HEAD/cpp/examples/downstream/).
### Problem and Solution
Perhaps OpenDAL could implement a service based on `kvikio`, allowing our users to interact with GDS using the familiar OpenDAL API.
`kvikio` currently offers only C++ and Python APIs. Those interested should first create a Rust binding for `kvikio`. To explore the performance of GDS, one should also have the CUDA toolkit and a compatible graphics card.
### Additional Context
_No response_
### Are you willing to contribute to the development of this feature?
- [ ] Yes, I am willing to contribute to the development of this feature.
Contributor guide
Assessment
This issue has not been assessed yet.