Skip to main content

sim_lib_compute_wgpu/
transfer.rs

1//! Transfer planning for segmented wgpu tensor payloads.
2
3use crate::WgpuSegmentPlan;
4
5/// One host-to-device or device-to-host copy span.
6#[derive(Clone, Debug, PartialEq, Eq)]
7pub struct WgpuTransferSpan {
8    /// Byte offset from the logical tensor start.
9    pub offset: u64,
10    /// Copy length in bytes.
11    pub bytes: u64,
12}
13
14/// Planned transfer spans for a segment plan.
15#[derive(Clone, Debug, PartialEq, Eq)]
16pub struct WgpuTransferPlan {
17    /// Copy spans.
18    pub spans: Vec<WgpuTransferSpan>,
19}
20
21impl WgpuTransferPlan {
22    /// Builds a transfer plan aligned to resident segments.
23    pub fn from_segments(plan: &WgpuSegmentPlan) -> Self {
24        Self {
25            spans: plan
26                .segments
27                .iter()
28                .map(|segment| WgpuTransferSpan {
29                    offset: segment.offset,
30                    bytes: segment.bytes,
31                })
32                .collect(),
33        }
34    }
35}