Struct Mindless

Source
pub struct Mindless {}
Expand description

Mindless routing Employ any path until reaching a router with the server atached. The interested may read a survey of random walks on graphs to try to predict the time to reach the destination. For example “Random Walks on Graphs: A Survey” by L. Lovász. Note that every cycle the request is made again. Hence, the walk is not actually unform random when there is network contention.

Implementations§

Trait Implementations§

Source§

impl Debug for Mindless

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Routing for Mindless

Source§

fn next( &self, _routing_info: &RoutingInfo, topology: &dyn Topology, current_router: usize, target_router: usize, target_server: Option<usize>, num_virtual_channels: usize, _rng: &mut StdRng, ) -> Result<RoutingNextCandidates, Error>

Compute the list of allowed exits. routing_info contains the information in the packet being routed. current_router is the index of the router in the topology that is performing the routing. target_router is the index of the router towards which we are routing. If target_server is not None it is the server destination of the packet, which must be attached to target_router. A routing that works without this can be more simply used as part of other routing algorithms, as it may be used to route to intermediate routers even on indirect topologies. num_virtual_channels is the number of virtual channels dedicated to this routing. rng is the global generator of random numbers.
Source§

fn statistics(&self, _cycle: Time) -> Option<ConfigurationValue>

To optionally write routing statistics into the simulation output.
Source§

fn reset_statistics(&mut self, _next_cycle: Time)

Clears all collected statistics
Source§

fn initialize_routing_info( &self, _routing_info: &RefCell<RoutingInfo>, _topology: &dyn Topology, _current_router: usize, _target_touter: usize, _target_server: Option<usize>, _rng: &mut StdRng, )

Initialize the routing info of the packet. Called when the first phit of the packet leaves the server and enters a router.
Source§

fn update_routing_info( &self, _routing_info: &RefCell<RoutingInfo>, _topology: &dyn Topology, _current_router: usize, _current_port: usize, _target_router: usize, _target_server: Option<usize>, _rng: &mut StdRng, )

Updates the routing info of the packet. Called when the first phit of the packet leaves a router and enters another router. Values are of the router being entered into.
Source§

fn initialize(&mut self, _topology: &dyn Topology, _rng: &mut StdRng)

Prepares the routing to be utilized. Perhaps by precomputing routing tables.
Source§

fn performed_request( &self, _requested: &CandidateEgress, _routing_info: &RefCell<RoutingInfo>, _topology: &dyn Topology, _current_router: usize, _target_router: usize, _target_server: Option<usize>, _num_virtual_channels: usize, _rng: &mut StdRng, )

To be called by the router when one of the candidates is requested.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V