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
rulesetnodesVector{N}: Container of nodes.channelsVector{L}: Container of edges.maptabledistancegridaddress_dataauxpathtabletasktable
Documentation
Datastructure for simulated annealing placement.
Important parameters:
A- The concrete Architecture type.
Constructor
Arguments:
m: TheMapto translate into anSAStruct.
Keyword Arguments:
distance: The distance type to use. Defaults:BasicDistanceenable_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 Bools.
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