|
docc 0.8.3 (0d44999b)
C++ API Reference
|
Splits a map into nested maps along the divisions of its induction variable; the inverse of MapCollapse. More...
#include <sdfg/transformations/map_delinearize.h>
Public Member Functions | |
| MapDelinearize (structured_control_flow::Map &map) | |
| std::string | name () const override |
| Get the name of this transformation. | |
| bool | can_be_applied (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override |
| Check if this transformation can be safely applied. | |
| void | apply (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override |
| Apply this transformation to the SDFG. | |
| void | to_json (nlohmann::json &j) const override |
| Serialize this transformation to JSON. | |
| const std::vector< structured_control_flow::Map * > & | maps () const |
| The maps the map became, outermost first; empty before apply(). | |
| Public Member Functions inherited from sdfg::transformations::Transformation | |
| virtual | ~Transformation ()=default |
| virtual void | set_report (PassReportConsumer *report) |
| Set the report consumer for transformation feedback. | |
| virtual bool | try_apply (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) |
| Attempt to apply the transformation if possible. | |
Static Public Member Functions | |
| static MapDelinearize | from_json (builder::StructuredSDFGBuilder &builder, const nlohmann::json &j) |
Additional Inherited Members | |
| Protected Attributes inherited from sdfg::transformations::Transformation | |
| PassReportConsumer * | report_ = nullptr |
Splits a map into nested maps along the divisions of its induction variable; the inverse of MapCollapse.
Flattened loops, e.g. over the elements of a reshaped tensor or after fusing a nest into one, address data through divisions and remainders of the induction variable by constants, such as A[64*idiv(i, 256) + imod(i, 64)]. Each chain of divisions and remainders of i selects a range of its digits in a mixed radix: (i mod high) div low. If the bounds of all those ranges divide one another and the extent of the map, the map becomes one map per digit, outermost first, iterating in the same order, and each chain the weighted sum of its digits, which is affine.
|
explicit |
|
overridevirtual |
Apply this transformation to the SDFG.
| builder | The SDFG builder |
| analysis_manager | The analysis manager (may be invalidated) |
Implements sdfg::transformations::Transformation.
|
overridevirtual |
Check if this transformation can be safely applied.
| builder | The SDFG builder |
| analysis_manager | The analysis manager providing necessary analyses |
Implements sdfg::transformations::Transformation.
|
static |
| const std::vector< structured_control_flow::Map * > & sdfg::transformations::MapDelinearize::maps | ( | ) | const |
The maps the map became, outermost first; empty before apply().
|
overridevirtual |
Get the name of this transformation.
Implements sdfg::transformations::Transformation.
|
overridevirtual |
Serialize this transformation to JSON.
| j | JSON object to populate with transformation description |
| std::logic_error | if not implemented |
Implements sdfg::transformations::Transformation.