pub enum CertifyFault {
NotScheduled,
Invalid(IrViolation),
Starved {
transition: usize,
place: PlaceKind,
},
Deadlock {
cycle: Vec<DeadlockNode>,
},
Bounds {
buffer: BufferId,
},
ActivationOrder {
tensor: TensorId,
writer: Option<usize>,
reader: usize,
reason: &'static str,
},
StateOrder {
tensor: TensorId,
reader: Option<usize>,
writer: Option<usize>,
reason: &'static str,
},
UnreducedShard {
tensor: TensorId,
chips: usize,
},
TripCasesExceed {
limit: usize,
},
Eval(ChoreoFault),
}Variants§
NotScheduled
Invalid(IrViolation)
Starved
A transition consumes a place nobody produces and that carries no initial token.
Deadlock
A token-free cycle: the ring of waits that could never all fire, each named by the op that waits and the place it waits on. A deadlock is only actionable if you can see WHICH hand-off closed the ring, so the fault carries the ring rather than an index list.
Fields
cycle: Vec<DeadlockNode>Bounds
ActivationOrder
An ACTIVATION is not ordered: the section that writes it is not strictly before every section that reads it, or a barrier between them is missing. Without that order the reader takes whatever is in the tensor, which on a hundred-section forward is the whole answer.
StateOrder
STATE is not ordered: more than one section writes it, one section both reads and writes it, or a barrier between the reader and the writer is missing. Unlike an activation a state tensor is FULL at the start of a run, so an unordered read yields last step’s value instead of faulting — which is exactly the silent wrong answer this obligation exists to make impossible.
UnreducedShard
A TENSOR-PARALLEL SHARD REACHES AN OUTPUT WITHOUT BEING SUMMED. Each chip of a row-parallel shard
computes a partial over its slice of the contraction — correctly shaped, fully written, and
missing every term the other chips hold. Nothing about that partial looks wrong: the program runs,
the store lands, the run reports success, and the number is 1/chips of the answer. This is the
one obligation that cannot be recovered by inspecting the output, which is why it is checked here.
TripCasesExceed
A part of the program runs to trips whose windows multiply past what one proof may hold.
Eval(ChoreoFault)
Trait Implementations§
Source§impl Clone for CertifyFault
impl Clone for CertifyFault
Source§fn clone(&self) -> CertifyFault
fn clone(&self) -> CertifyFault
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CertifyFault
impl Debug for CertifyFault
Source§impl PartialEq for CertifyFault
impl PartialEq for CertifyFault
impl StructuralPartialEq for CertifyFault
Auto Trait Implementations§
impl Freeze for CertifyFault
impl RefUnwindSafe for CertifyFault
impl Send for CertifyFault
impl Sync for CertifyFault
impl Unpin for CertifyFault
impl UnsafeUnpin for CertifyFault
impl UnwindSafe for CertifyFault
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.