Struct caminos_lib::pattern::RemappedNodes
source · pub struct RemappedNodes { /* private fields */ }
Expand description
Apply some other Pattern over a set of nodes whose indices have been remapped according to a Pattern-given permutation.
A source x
chooses as destination map(pattern(invmap(x)))
, where map
is the given permutation, invmap
its inverse and pattern
is the underlying pattern to apply. In other words, if pattern(a)=b
, then destination of map(a)
is set to map(b)
. It can be seen as a Composition that manages building the inverse map.
Remapped nodes requires source and destination to be of the same size. The pattern creating the map is called once and must result in a permutation, as to be able to make its inverse.
For a similar operation on other types see RemappedServersTopology.
Example building a cycle in random order.
ⓘ
RemappedNodes{
/// The underlying pattern to be used.
pattern: Circulant{generators:[1]},
/// The pattern defining the relabelling.
map: RandomPermutation,
}
Trait Implementations§
source§impl Debug for RemappedNodes
impl Debug for RemappedNodes
source§impl Pattern for RemappedNodes
impl Pattern for RemappedNodes
source§fn initialize(
&mut self,
source_size: usize,
target_size: usize,
topology: &dyn Topology,
rng: &mut StdRng
)
fn initialize( &mut self, source_size: usize, target_size: usize, topology: &dyn Topology, rng: &mut StdRng )
Fix the input and output size, providing the topology and random number generator.
Careful with using topology in sub-patterns. For example, it may be misleading to use the dragonfly topology when
building a pattern among groups or a pattern among the routers of a single group.
Even just a pattern of routers instead of a pattern of servers can lead to mistakes.
Read the documentation of the traffic or meta-pattern using the pattern to know what its their input and output.
source§impl Quantifiable for RemappedNodes
impl Quantifiable for RemappedNodes
source§fn total_memory(&self) -> usize
fn total_memory(&self) -> usize
Get the total memory currently being employed by the implementing type. Both stack and heap.
source§fn print_memory_breakdown(&self)
fn print_memory_breakdown(&self)
Prints by stdout how much memory is used per component.
source§fn forecast_total_memory(&self) -> usize
fn forecast_total_memory(&self) -> usize
Get an estimation on how much memory the type could reach during the simulation.
Auto Trait Implementations§
impl !RefUnwindSafe for RemappedNodes
impl !Send for RemappedNodes
impl !Sync for RemappedNodes
impl Unpin for RemappedNodes
impl !UnwindSafe for RemappedNodes
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