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 Name | Reference | Static Single Context | Static Multi Context | Static Predication | Elastic Single Context | Elastic Multi Context | Elastic Predication |
---|---|---|---|---|---|---|---|
Anneal Placer | 1 | Yes | No | No | No | No | No |
ILP Mapper | 2 | Yes | Yes | No | No | No | No |
ILP Heuristic Mapper | 3 | Yes | Yes | No | No | No | No |
Clustered Mapper | 4 | Yes | Yes | Yes | Yes | No | No |
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