[−][src]Trait caminos_lib::routing::Routing
A routing algorithm to provide candidate routes when the Router
requires.
It may store/use information in the RoutingInfo.
A Routing
does not receive information about the state of buffers or similar. Such a mechanism should be given as a VirtualChannelPolicy
.
Required methods
pub fn next(
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
Compute the list of allowed exits.
pub fn initialize_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
Initialize the routing info of the packet. Called when the first phit of the packet leaves the server and enters a router.
pub fn update_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
rng: &RefCell<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.
pub fn initialize(
&mut self,
topology: &Box<dyn Topology>,
rng: &RefCell<StdRng>
)
[src]
&mut self,
topology: &Box<dyn Topology>,
rng: &RefCell<StdRng>
)
Prepares the routing to be utilized. Perhaps by precomputing routing tables.
Implementors
impl Routing for Mindless
[src]
pub fn next(
&self,
_routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
_routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
[src]
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
impl Routing for Shortest
[src]
pub fn next(
&self,
_routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
_routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
[src]
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
impl Routing for SumRouting
[src]
pub fn next(
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
topology: &Box<dyn Topology>,
rng: &RefCell<StdRng>
)
[src]
&mut self,
topology: &Box<dyn Topology>,
rng: &RefCell<StdRng>
)
impl Routing for Valiant
[src]
pub fn next(
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
[src]
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
impl Routing for WeighedShortest
[src]
pub fn next(
&self,
_routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
_routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
[src]
&mut self,
topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
impl Routing for DOR
[src]
pub fn next(
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
[src]
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
impl Routing for O1TURN
[src]
pub fn next(
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
_num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
_num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
[src]
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
impl Routing for OmniDimensionalDeroute
[src]
pub fn next(
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
[src]
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
impl Routing for ValiantDOR
[src]
pub fn next(
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
current_port: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
[src]
&mut self,
_topology: &Box<dyn Topology>,
_rng: &RefCell<StdRng>
)
impl<R: SourceRouting + Debug> Routing for R
[src]
pub fn next(
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
[src]
&self,
routing_info: &RoutingInfo,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
num_virtual_channels: usize,
_rng: &RefCell<StdRng>
) -> Vec<CandidateEgress>
pub fn initialize_routing_info(
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
[src]
&self,
routing_info: &RefCell<RoutingInfo>,
topology: &dyn Topology,
current_router: usize,
target_server: usize,
rng: &RefCell<StdRng>
)
pub fn update_routing_info(
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
[src]
&self,
_routing_info: &RefCell<RoutingInfo>,
_topology: &dyn Topology,
_current_router: usize,
_current_port: usize,
_target_server: usize,
_rng: &RefCell<StdRng>
)
pub fn initialize(
&mut self,
topology: &Box<dyn Topology>,
rng: &RefCell<StdRng>
)
[src]
&mut self,
topology: &Box<dyn Topology>,
rng: &RefCell<StdRng>
)