pub struct EngineParams {Show 15 fields
pub rows: usize,
pub vector_rows: usize,
pub side_rows: usize,
pub pair_rows: usize,
pub store_beats: usize,
pub job_words: usize,
pub tensors: usize,
pub layers: usize,
pub ropes: usize,
pub formats: Vec<(GgmlType, usize)>,
pub delta: Option<(usize, StateFlush)>,
pub attend: Option<(usize, usize, usize, bool)>,
pub function_units: usize,
pub folds: bool,
pub streaming: Option<Streaming>,
}Expand description
What an engine is printed for: the most token-rows a step holds, the most beats a vector register holds and the most a Hadamard or rotary operand does, the store’s beats, the words of the step’s jobs, the tables’ entries, every block format its matrices are in with the most blocks a row of that format holds, and the function units its vector unit’s sixteen lanes share.
Fields§
§rows: usize§vector_rows: usize§side_rows: usizeThe beats the vector unit’s side holds a register to: the deepest vector job it cannot run a chunk at a time
(super::super::machine::VectorJob::chunked); a deeper job runs that many rows of its vectors at a time. The
reference engine’s own vector unit runs every job whole, as deep as EngineParams::vector_rows.
pair_rows: usizeThe beats of the vector unit’s pair copies: a far Hadamard stage’s partner rows and a rotary block’s rows are rows of the instruction’s operand, so they are within the longest operand a Hadamard or rotary job loads.
store_beats: usize§job_words: usize§tensors: usize§layers: usize§ropes: usize§formats: Vec<(GgmlType, usize)>§delta: Option<(usize, StateFlush)>The Gated-DeltaNet blocks’ head width and how their memories are carried (logged), or None for a model of
none.
attend: Option<(usize, usize, usize, bool)>The attention blocks’ query and value head widths, the most positions a sequence reaches, and whether the math
runs on the array, or None for a model of none.
function_units: usizeThe vector unit’s function units, a divisor of sixteen: a function’s row takes 16 / function_units cycles.
folds: boolWhether a matrix job folds its sums into its output slot (super::super::machine::Fold): a step lowered with
its residual adds and gated products folded (super::super::machine::fold).
streaming: Option<Streaming>The streaming unit a hybrid engine runs its matvec jobs on, or None for the reference engine, which reads each
job’s matrix a line at a time through its memory port.
Implementations§
Source§impl EngineParams
impl EngineParams
Sourcepub fn streaming_signature(&self) -> String
pub fn streaming_signature(&self) -> String
The name the build and its programs give its streaming unit, the step program refusing a program of another: the
unit’s own (Streaming::signature), and +behind<T> when its recurrence replays logs a window of T tokens
behind, its lanes built for that window; empty for an engine that streams nothing.
Sourcepub fn of(layout: &Layout, store: &StoreLayout, jobs: &[Job]) -> EngineParams
pub fn of(layout: &Layout, store: &StoreLayout, jobs: &[Job]) -> EngineParams
The engine jobs over layout need, the store laid out as store.
Sourcepub fn union(all: &[EngineParams]) -> Result<EngineParams, String>
pub fn union(all: &[EngineParams]) -> Result<EngineParams, String>
One engine that runs every engine of all: the most token-rows, vector rows, store beats, job words and table
entries any needs, every block format any reads at the most blocks a row of it holds in any, the most positions
any attends over. Engines whose recurrence or attention units differ in shape — head widths, a log’s tokens,
where the attention math runs —, whose vector units share a different number of function units, or that run
their matvec jobs on different streaming units have no union.
Trait Implementations§
Source§impl Clone for EngineParams
impl Clone for EngineParams
Source§fn clone(&self) -> EngineParams
fn clone(&self) -> EngineParams
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EngineParams
impl Debug for EngineParams
Source§impl PartialEq for EngineParams
impl PartialEq for EngineParams
impl StructuralPartialEq for EngineParams
Auto Trait Implementations§
impl Freeze for EngineParams
impl RefUnwindSafe for EngineParams
impl Send for EngineParams
impl Sync for EngineParams
impl Unpin for EngineParams
impl UnsafeUnpin for EngineParams
impl UnwindSafe for EngineParams
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.