mirror of
https://github.com/deepseek-ai/3FS.git
synced 2026-11-05 00:47:47 +00:00
[GH-ISSUE #395] [Feature Request] Any plan for official GDR support to enable zero-copy GPU IO ? #230
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/3FS#230
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @SimonCqk on GitHub (Feb 4, 2026).
Original GitHub issue: https://github.com/deepseek-ai/3FS/issues/395
As we deploy 3FS in production to accelerate both training and inference, currently, data loading involves a CPU bounce buffer, which consumes PCIe bandwidth and CPU cycles. Enabling GDR support would allow for direct DMA transfers between the storage backend and GPU memory, significantly improving throughput and reducing latency (also reduce cpu cycles).
Before move forward, I'd ask is there an official roadmap or ongoing internal effort to support GDR/GDS in 3FS? I have already developed a working PoC that implements end-to-end GDR support. The implementation touches the following key components:
usrbio: Extended the iov/ior structures to support device pointers and memory registration awareness, also introduced a new create API (and/or extended flag support) to facilitate proper GPU memory handle registration during file operations.If the community are open to this proposal, I would submit a design doc and break down implementations into individual PRs.
Looking forward to your feedback.
@ChenxingZhou777 commented on GitHub (Feb 12, 2026):
When you mention “memory registration awareness,” what is the concrete mechanism you use to pass the GPU memory handle to the FUSE daemon?
Is it done by extending the existing iov/ior structures, by overloading something like symlinks, or via a new control/side channel?
@SimonCqk commented on GitHub (Feb 27, 2026):
extending iov/ior structures to minimize upgrade overhead, we should aim for minimal API surface changes for our usrbio users.
@ChenxingZhou777 commented on GitHub (Mar 4, 2026):
How does your implementation handle this cross-process GPU memory registration? Specifically, which mechanism do you use to let the FUSE daemon obtain a valid MR for the user app's GPU memory?
@SimonCqk commented on GitHub (Mar 17, 2026):
@ChenxingZhou777 for more details, please refer #402 , feel free to chime in with any thoughts !