pub enum TransferPath {
SameDevice,
Peer,
SharedMemory,
DeviceCopy,
HostStaging,
}Expand description
How bytes can move from one device to another. Backends advertise the paths they support as the source; Router consumes this to pick the cheapest available path between two specific devices.
Bandwidth + latency estimates land in A5 alongside Router integration; for A4 the variants exist as discriminators only.
Variants§
SameDevice
No transfer needed (same device instance).
Peer
Direct peer-to-peer (CUDA P2P, NVLink, AMD Infinity Fabric, GPUDirect). Requires explicit enablement on both ends.
Zero-copy via shared memory mapping (UMA, ResizableBAR, dma-buf). Common on integrated GPUs and Apple Silicon.
DeviceCopy
Bulk transfer engine (cudaMemcpy, vkCmdCopyBuffer + staging buffer). The default for cross-device GPU↔GPU on standard hardware.
HostStaging
Through CPU as intermediary. Universal fallback — every backend supports this. Highest latency but always available.
Trait Implementations§
Source§impl Clone for TransferPath
impl Clone for TransferPath
impl Copy for TransferPath
Source§impl Debug for TransferPath
impl Debug for TransferPath
impl Eq for TransferPath
Source§impl Hash for TransferPath
impl Hash for TransferPath
Source§impl PartialEq for TransferPath
impl PartialEq for TransferPath
impl StructuralPartialEq for TransferPath
Auto Trait Implementations§
impl Freeze for TransferPath
impl RefUnwindSafe for TransferPath
impl Send for TransferPath
impl Sync for TransferPath
impl Unpin for TransferPath
impl UnsafeUnpin for TransferPath
impl UnwindSafe for TransferPath
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.