CGRA-ME Mappers

This page outlines the available mappers in CGRA-ME, and how to use them.

CGRA-ME includes the following mappers:

  • BothSmallTimeThenHeurFullTime (Default) In parallel, runs both ILPHeuristicMapper and ILPMapper with a short timeout, then ILPHeuristicMapper with the full timeout while running ILPMapper with a capped timeout. Any successful & correct mapping is returned.

  • AnnealMapper Simulated annealing based mapping. Initially presented in ‘CGRA-ME: A Unified Framework for CGRA Modelling and Exploration’ (DAC 2017).

  • ClusteredMapper Clustered mapping.

  • ILPHeuristicMapper Iteratively considers more flexibility. Initially presented in ‘Generic Connectivity-Based CGRA Mapping via Integer Linear Programming’ (FCCM 2019).

  • ILPMapper Fully encodes the mapping problem in an ILP.

Support

The following table summarizes key information about each mapper:

Mapper NameReferenceStatic Single ContextStatic Multi ContextStatic PredicationElastic Single ContextElastic Multi ContextElastic Predication
Anneal Placer1YesNoNoNoNoNo
ILP Mapper2YesYesNoNoNoNo
ILP Heuristic Mapper3YesYesNoNoNoNo
Clustered Mapper4YesYesYesYesNoNo

Choosing a Mapper

To use a specific mapper, you can utilize the following command:

$ "$CGRA_MAPPER" -g graph_loop.dot -c adres -m (MapperName) --gen-testbench .

To select mapper options:

$ "$CGRA_MAPPER" -g graph_loop.dot -c adres -m (MapperName) --mapper-opts <key>=<val> --gen-testbench .

For help with mapper options, you can list the options using the following command:

$ "$CGRA_MAPPER" -m (MapperName) --mapper-help