pub struct NodeResources {
pub id: String,
pub vram_gb: f32,
pub system_memory_gb: f32,
pub compute_capability: String,
pub gpu_name: Option<String>,
pub rpc_port: Option<u16>,
pub rpc_build_id: Option<String>,
}Expand description
Node resources structure for discovery frames
Fields§
§id: StringUnique node identifier
vram_gb: f32GPU VRAM in GB (f32 for precision)
system_memory_gb: f32System memory in GB
compute_capability: StringCUDA compute capability string (e.g., “8.9”)
gpu_name: Option<String>GPU name/model
rpc_port: Option<u16>Port this node’s ggml-rpc-server is listening on, when it has opted
in to contributing compute to the cluster (see
ghost_link::rpc_cluster). None means this node either isn’t
running one or the peer that sent this frame predates this field —
both are indistinguishable and both correctly mean “don’t route
distributed inference through this node.”
rpc_build_id: Option<String>Short commit-hash fingerprint of this node’s local llama.cpp build
(see ghost_link::native_engine::NativeEngineClient::get_llama_build_id),
e.g. "da296d6". None means this node either couldn’t determine its
own build id or the peer that sent this frame predates this field —
both are indistinguishable, and both are treated as “unknown, can’t
verify” rather than “mismatched” by rpc_cluster::discover_rpc_peers
(mismatched-but-unknown must not be treated the same as a confirmed
mismatch, or every not-yet-updated peer becomes unroutable overnight).
Used to refuse routing distributed inference through a peer whose
llama.cpp build doesn’t match the local one — version-mismatched
ggml-rpc peers have been confirmed on real hardware to silently
corrupt output for larger models while reporting healthy status the
whole time (see docs/BENCHMARKS.md’s native two-machine entry).
Implementations§
Source§impl NodeResources
impl NodeResources
Sourcepub fn new(
id: impl Into<String>,
vram_gb: f32,
system_memory_gb: f32,
compute_capability: impl Into<String>,
gpu_name: Option<String>,
) -> Self
pub fn new( id: impl Into<String>, vram_gb: f32, system_memory_gb: f32, compute_capability: impl Into<String>, gpu_name: Option<String>, ) -> Self
Create new node resources
Sourcepub fn with_rpc_port(self, port: u16) -> Self
pub fn with_rpc_port(self, port: u16) -> Self
Builder-style setter so adding this field didn’t require touching
every existing NodeResources::new(...) call site across the
workspace’s tests and CLI commands.
Sourcepub fn with_rpc_build_id(self, build_id: impl Into<String>) -> Self
pub fn with_rpc_build_id(self, build_id: impl Into<String>) -> Self
Builder-style setter, same rationale as with_rpc_port.
Sourcepub fn encode_payload_into(
&self,
buffer: &mut Vec<u8>,
max_size: usize,
) -> Result<usize, &'static str>
pub fn encode_payload_into( &self, buffer: &mut Vec<u8>, max_size: usize, ) -> Result<usize, &'static str>
Serialize node resources into an existing binary buffer.
Returns the length of the written payload on success, or an Error on validation failure.
Sourcepub fn encode_payload(&self, max_size: usize) -> Vec<u8> ⓘ
pub fn encode_payload(&self, max_size: usize) -> Vec<u8> ⓘ
Serialize node resources to fixed-width binary payload
Format: [id_len(1) + id + vram_f32_le + mem_f32_le + cc_len(1) + cc]
Sourcepub fn decode_payload(payload: &[u8]) -> Result<Self, String>
pub fn decode_payload(payload: &[u8]) -> Result<Self, String>
Deserialize node resources from binary payload
Trait Implementations§
Source§impl Clone for NodeResources
impl Clone for NodeResources
Source§impl Debug for NodeResources
impl Debug for NodeResources
Auto Trait Implementations§
impl Freeze for NodeResources
impl RefUnwindSafe for NodeResources
impl Send for NodeResources
impl Sync for NodeResources
impl Unpin for NodeResources
impl UnsafeUnpin for NodeResources
impl UnwindSafe for NodeResources
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<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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