pub struct LinkPoint {
pub after: Option<usize>,
pub sends: Vec<TensorId>,
pub receives: Vec<TensorId>,
}Expand description
★ A HALT AT A SECTION BOUNDARY, FOR WHAT CROSSES THE LINK. One chip’s program of a program split over chips
(compile_program_to_chips) stops here so its tensors can
cross: first sends, which the sections before it have written and another chip reads, are taken from it; then
receives, which another chip writes and the sections after it read, are put into it; then it continues.
after is the section the halt follows — None before the first section, the last section at the program’s end,
where the chip has finished. Within the chip a halt orders nothing: it only delays a rendezvous’s release until the
link has moved its tensors, so the chip’s choreography, its certificate and its meaning are the same with it or
without it, its receives given.
Fields§
§after: Option<usize>§sends: Vec<TensorId>§receives: Vec<TensorId>Trait Implementations§
Source§impl<'de> Deserialize<'de> for LinkPoint
impl<'de> Deserialize<'de> for LinkPoint
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>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for LinkPoint
impl StructuralPartialEq for LinkPoint
Auto Trait Implementations§
impl Freeze for LinkPoint
impl RefUnwindSafe for LinkPoint
impl Send for LinkPoint
impl Sync for LinkPoint
impl Unpin for LinkPoint
impl UnsafeUnpin for LinkPoint
impl UnwindSafe for LinkPoint
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
Mutably borrows from an owned value. Read more
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.