SAStruct
The central data structure for simulated annealing placement is the SAStruct
. Before placement, this data type will be created from the Map
and the main loop of placement will occur using this structure.
After placement, the final location of tasks will be recorded from the SAStruct
back into the parent Map
.
Mapper2.SA.SAStruct
— Type.struct SAStruct{T<:RuleSet, U<:Mapper2.SA.SADistance, D, N<:Mapper2.SA.SANode, L<:Mapper2.SA.SAChannel, M<:Mapper2.SA.AbstractMapTable, A<:Mapper2.SA.AddressData, Q}
Fields
ruleset
nodes
Vector{N}
: Container of nodes.channels
Vector{L}
: Container of edges.maptable
distance
grid
address_data
aux
pathtable
tasktable
Documentation
Datastructure for simulated annealing placement.
Important parameters:
A
- The concrete Architecture type.
Constructor
Arguments:
m
: TheMap
to translate into anSAStruct
.
Keyword Arguments:
distance
: The distance type to use. Defaults:BasicDistance
enable_flattness :: Bool
: Enable the flat architecture optimization if it is applicable. Default:true
.enable_address :: Bool
: Enable address-specific data to be incorporated into the struct. Default:false
.aux
: Auxiliary data struct to provide any extra information that may be needed for specializations of placement. Default:nothing
.
Method List
SAStruct(ruleset, nodes, channels, maptable, distance, grid, address_data, aux, pathtable, tasktable)
defined at /home/travis/build/hildebrandmw/Mapper2.jl/src/Place/SA/Struct.jl:171
.
SAStruct(m; enable_address, aux, kwargs...)
defined at /home/travis/build/hildebrandmw/Mapper2.jl/src/Place/SA/Struct.jl:344
.
Flat Architecture Optimization
In the general case, any given address in the TopLevel may have multiple mappable components. Simulated annealing placement completely supports this general case. However, doing so adds overhead as the available and valid slots within each address must be traced using Vectors, which addes extra pointer dereferencing during placement.
If this optimization is enabled and the TopLevel structure contains only a single mappable component per address, the "Flat Architecture Optimization" will be applied. Practically, this means that the locations of nodes in the SAStruct will be tracked using CartesianIndices
rather than Locations
, and some tracking vectors in the SAStruct's MapTable can be simplified to Bool
s.
Overall, it allows for much faster placement when this optimization can be applied without sacrificing the generality of placement when it cannot.
Construction Pipeline
SA.task_equivalence_classes