SAStruct

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.

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: The Map to translate into an SAStruct.

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.

source

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