pub struct NodeCaps {
pub addr: String,
pub os: String,
pub cores: usize,
pub ram_total: u64,
pub ram_avail: u64,
pub disk_free: u64,
pub devices: Vec<DeviceInfo>,
pub gflops: f64,
pub io_mbps: f64,
}Expand description
A node’s measured hardware profile.
Fields§
§addr: StringAddress the coordinator reaches this node’s worker at (host:port).
os: StringOS string (macos, linux).
cores: usizeLogical CPU cores.
ram_total: u64Total / currently-available host RAM (bytes).
ram_avail: u64§disk_free: u64Free disk at the checkpoint location (bytes).
devices: Vec<DeviceInfo>Compute devices, CPU first.
gflops: f64Rough sustained matmul throughput (GFLOP/s, f32) from a micro-bench.
io_mbps: f64Rough disk read throughput (MB/s) from a micro-bench (0 if not measured).
Implementations§
Source§impl NodeCaps
impl NodeCaps
Sourcepub fn accel_mem(&self) -> u64
pub fn accel_mem(&self) -> u64
Best (non-CPU) accelerator memory ceiling, else host RAM — the largest a
stage can occupy on this node’s device. A GPU that reports a positive
mem_bytes (discrete VRAM, or an APU’s GTT / GPU-addressable system RAM)
caps the stage even when it is “unified”: an amdgpu APU shares system RAM
but the kernel bounds GPU access at GTT, so we must honor it. Devices with
no meaningful ceiling (Apple Metal, mem_bytes == 0) fall through to RAM.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for NodeCaps
impl<'de> Deserialize<'de> for NodeCaps
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for NodeCaps
impl RefUnwindSafe for NodeCaps
impl Send for NodeCaps
impl Sync for NodeCaps
impl Unpin for NodeCaps
impl UnsafeUnpin for NodeCaps
impl UnwindSafe for NodeCaps
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more