docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::transformations::Transformation Class Referenceabstract

Base class for all SDFG transformations. More...

#include <sdfg/transformations/transformation.h>

Inherited by sdfg::cuda::CUBLASDataTransferExtraction, sdfg::cuda::CUDASoftmaxDataTransferExtraction, sdfg::cuda::CUDAStdlibDataTransferExtraction, sdfg::einsum::Einsum2Dot, sdfg::einsum::Einsum2Gemm, sdfg::einsum::EinsumExtend, sdfg::einsum::EinsumLift, sdfg::einsum::EinsumPromotion, sdfg::fp_math::FuseFMA, sdfg::fp_math::OzakiContraction, sdfg::fp_math::QuantizeContraction, sdfg::fp_math::UnfuseFMA, sdfg::gpu::GpuMmaEinsumTransform, sdfg::gpu::rocm::GpuMmaTransform, sdfg::rocm::ROCBLASDataTransferExtraction, sdfg::rocm::ROCMStdlibDataTransferExtraction, sdfg::transformations::CUDAParallelizeNestedMap, sdfg::transformations::CollapseToDepth, sdfg::transformations::GPUConditionPropagation, sdfg::transformations::GPUConditionPropagationScope, sdfg::transformations::GPULoopReordering, sdfg::transformations::GPUOffloadNestedLoop< GPUType >, sdfg::transformations::LocalStorage, sdfg::transformations::LoopConditionNormalize, sdfg::transformations::LoopDistribute, sdfg::transformations::LoopIndvarFinalize, sdfg::transformations::LoopInterchange, sdfg::transformations::LoopParallelization, sdfg::transformations::LoopPeeling, sdfg::transformations::LoopRotate, sdfg::transformations::LoopShift, sdfg::transformations::LoopSkewing, sdfg::transformations::LoopSplit, sdfg::transformations::LoopTiling, sdfg::transformations::LoopUnitStride, sdfg::transformations::MapCollapse, sdfg::transformations::MapDelinearize, sdfg::transformations::MapFusion, sdfg::transformations::OMPTransform, sdfg::transformations::OffloadTransform, sdfg::transformations::ROCMParallelizeNestedMap, sdfg::transformations::RPCNodeTransform, sdfg::transformations::RedundantZeroInitElimination, sdfg::transformations::SoftwarePipelining, sdfg::transformations::StreamK, sdfg::transformations::TileFusion, sdfg::transformations::TileVectorizer, sdfg::transformations::TrivialLoopElimination, sdfg::transformations::UnrollTransform, and sdfg::transformations::VectorizeTransform.

Public Member Functions

virtual ~Transformation ()=default
virtual void set_report (PassReportConsumer *report)
 Set the report consumer for transformation feedback.
virtual std::string name () const =0
 Get the name of this transformation.
virtual bool can_be_applied (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)=0
 Check if this transformation can be safely applied.
virtual void apply (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)=0
 Apply this transformation to the SDFG.
virtual bool try_apply (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)
 Attempt to apply the transformation if possible.
virtual void to_json (nlohmann::json &j) const =0
 Serialize this transformation to JSON.

Protected Attributes

PassReportConsumer * report_ = nullptr

Detailed Description

Base class for all SDFG transformations.

A transformation modifies the structure of an SDFG while preserving its computational semantics. Each transformation implements can_be_applied() to check preconditions and apply() to perform the modification.

Transformations can be serialized to/from JSON for replay and analysis.

Constructor & Destructor Documentation

◆ ~Transformation()

virtual sdfg::transformations::Transformation::~Transformation ( )
virtualdefault

Member Function Documentation

◆ apply()

virtual void sdfg::transformations::Transformation::apply ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager )
pure virtual

Apply this transformation to the SDFG.

Parameters
builderThe SDFG builder
analysis_managerThe analysis manager (may be invalidated)

Implemented in sdfg::cuda::CUBLASDataTransferExtraction, sdfg::cuda::CUDASoftmaxDataTransferExtraction, sdfg::cuda::CUDAStdlibDataTransferExtraction, sdfg::einsum::Einsum2Dot, sdfg::einsum::Einsum2Gemm, sdfg::einsum::EinsumExtend, sdfg::einsum::EinsumLift, sdfg::einsum::EinsumPromotion, sdfg::fp_math::FuseFMA, sdfg::fp_math::OzakiContraction, sdfg::fp_math::QuantizeContraction, sdfg::fp_math::UnfuseFMA, sdfg::gpu::GpuMmaEinsumTransform, sdfg::gpu::rocm::GpuMmaTransform, sdfg::rocm::ROCBLASDataTransferExtraction, sdfg::rocm::ROCMStdlibDataTransferExtraction, sdfg::transformations::CollapseToDepth, sdfg::transformations::CUDAParallelizeNestedMap, sdfg::transformations::GPUConditionPropagation, sdfg::transformations::GPUConditionPropagationScope, sdfg::transformations::GPULoopReordering, sdfg::transformations::GPUOffloadNestedLoop< GPUType >, sdfg::transformations::LocalStorage, sdfg::transformations::LoopConditionNormalize, sdfg::transformations::LoopDistribute, sdfg::transformations::LoopIndvarFinalize, sdfg::transformations::LoopInterchange, sdfg::transformations::LoopParallelization, sdfg::transformations::LoopPeeling, sdfg::transformations::LoopRotate, sdfg::transformations::LoopShift, sdfg::transformations::LoopSkewing, sdfg::transformations::LoopSplit, sdfg::transformations::LoopTiling, sdfg::transformations::LoopUnitStride, sdfg::transformations::MapCollapse, sdfg::transformations::MapDelinearize, sdfg::transformations::MapFusion, sdfg::transformations::MultiLevelTiling, sdfg::transformations::OffloadTransform, sdfg::transformations::OMPTransform, sdfg::transformations::RedundantZeroInitElimination, sdfg::transformations::ROCMParallelizeNestedMap, sdfg::transformations::RPCNodeTransform, sdfg::transformations::SoftwarePipelining, sdfg::transformations::StreamK, sdfg::transformations::TileFusion, sdfg::transformations::TileVectorizer, sdfg::transformations::TrivialLoopElimination, sdfg::transformations::UnrollTransform, and sdfg::transformations::VectorizeTransform.

◆ can_be_applied()

virtual bool sdfg::transformations::Transformation::can_be_applied ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager )
pure virtual

Check if this transformation can be safely applied.

Parameters
builderThe SDFG builder
analysis_managerThe analysis manager providing necessary analyses
Returns
true if all preconditions are met

Implemented in sdfg::cuda::CUBLASDataTransferExtraction, sdfg::cuda::CUDASoftmaxDataTransferExtraction, sdfg::cuda::CUDAStdlibDataTransferExtraction, sdfg::cuda::CUDATransform, sdfg::einsum::Einsum2Dot, sdfg::einsum::Einsum2Gemm, sdfg::einsum::EinsumExtend, sdfg::einsum::EinsumLift, sdfg::einsum::EinsumPromotion, sdfg::fp_math::FuseFMA, sdfg::fp_math::OzakiContraction, sdfg::fp_math::QuantizeContraction, sdfg::fp_math::UnfuseFMA, sdfg::gpu::GpuMmaEinsumTransform, sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >, sdfg::gpu::GPUOffloadTransform< CUDADataOffloadingNode >, sdfg::gpu::GPUOffloadTransform< ROCMDataOffloadingNode >, sdfg::gpu::rocm::GpuMmaTransform, sdfg::rocm::ROCBLASDataTransferExtraction, sdfg::rocm::ROCMStdlibDataTransferExtraction, sdfg::rocm::ROCMTransform, sdfg::transformations::CollapseToDepth, sdfg::transformations::CUDAParallelizeNestedMap, sdfg::transformations::GPUConditionPropagation, sdfg::transformations::GPUConditionPropagationScope, sdfg::transformations::GPULoopReordering, sdfg::transformations::GPUOffloadNestedLoop< GPUType >, sdfg::transformations::LocalStorage, sdfg::transformations::LoopConditionNormalize, sdfg::transformations::LoopDistribute, sdfg::transformations::LoopIndvarFinalize, sdfg::transformations::LoopInterchange, sdfg::transformations::LoopParallelization, sdfg::transformations::LoopPeeling, sdfg::transformations::LoopRotate, sdfg::transformations::LoopShift, sdfg::transformations::LoopSkewing, sdfg::transformations::LoopSplit, sdfg::transformations::LoopTiling, sdfg::transformations::LoopUnitStride, sdfg::transformations::MapCollapse, sdfg::transformations::MapDelinearize, sdfg::transformations::MapFusion, sdfg::transformations::MultiLevelTiling, sdfg::transformations::OffloadTransform, sdfg::transformations::OMPTransform, sdfg::transformations::RedundantZeroInitElimination, sdfg::transformations::ROCMParallelizeNestedMap, sdfg::transformations::RPCNodeTransform, sdfg::transformations::SoftwarePipelining, sdfg::transformations::StreamK, sdfg::transformations::TileFusion, sdfg::transformations::TileVectorizer, sdfg::transformations::TrivialLoopElimination, sdfg::transformations::UnrollTransform, and sdfg::transformations::VectorizeTransform.

◆ name()

virtual std::string sdfg::transformations::Transformation::name ( ) const
pure virtual

Get the name of this transformation.

Returns
The transformation name (e.g., "LoopInterchange")

Implemented in sdfg::cuda::CUBLASDataTransferExtraction, sdfg::cuda::CUDAOffloadTransform, sdfg::cuda::CUDASoftmaxDataTransferExtraction, sdfg::cuda::CUDAStdlibDataTransferExtraction, sdfg::cuda::CUDATransform, sdfg::einsum::Einsum2Dot, sdfg::einsum::Einsum2Gemm, sdfg::einsum::EinsumExtend, sdfg::einsum::EinsumLift, sdfg::einsum::EinsumPromotion, sdfg::fp_math::FuseFMA, sdfg::fp_math::OzakiContraction, sdfg::fp_math::QuantizeContraction, sdfg::fp_math::UnfuseFMA, sdfg::gpu::GpuMmaEinsumTransform, sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >, sdfg::gpu::GPUOffloadTransform< CUDADataOffloadingNode >, sdfg::gpu::GPUOffloadTransform< ROCMDataOffloadingNode >, sdfg::gpu::rocm::GpuMmaTransform, sdfg::rocm::ROCBLASDataTransferExtraction, sdfg::rocm::ROCMOffloadTransform, sdfg::rocm::ROCMStdlibDataTransferExtraction, sdfg::rocm::ROCMTransform, sdfg::transformations::CollapseToDepth, sdfg::transformations::CUDAParallelizeNestedMap, sdfg::transformations::GPUConditionPropagation, sdfg::transformations::GPUConditionPropagationScope, sdfg::transformations::GPULoopReordering, sdfg::transformations::GPUOffloadNestedLoop< GPUType >, sdfg::transformations::LocalStorage, sdfg::transformations::LoopConditionNormalize, sdfg::transformations::LoopDistribute, sdfg::transformations::LoopIndvarFinalize, sdfg::transformations::LoopInterchange, sdfg::transformations::LoopParallelization, sdfg::transformations::LoopPeeling, sdfg::transformations::LoopRotate, sdfg::transformations::LoopShift, sdfg::transformations::LoopSkewing, sdfg::transformations::LoopSplit, sdfg::transformations::LoopTiling, sdfg::transformations::LoopUnitStride, sdfg::transformations::MapCollapse, sdfg::transformations::MapDelinearize, sdfg::transformations::MapFusion, sdfg::transformations::MultiLevelTiling, sdfg::transformations::OMPTransform, sdfg::transformations::RedundantZeroInitElimination, sdfg::transformations::ROCMParallelizeNestedMap, sdfg::transformations::RPCNodeTransform, sdfg::transformations::SoftwarePipelining, sdfg::transformations::StreamK, sdfg::transformations::TileFusion, sdfg::transformations::TileVectorizer, sdfg::transformations::TrivialLoopElimination, sdfg::transformations::UnrollTransform, and sdfg::transformations::VectorizeTransform.

◆ set_report()

virtual void sdfg::transformations::Transformation::set_report ( PassReportConsumer * report)
inlinevirtual

Set the report consumer for transformation feedback.

Parameters
reportThe report consumer

◆ to_json()

virtual void sdfg::transformations::Transformation::to_json ( nlohmann::json & j) const
pure virtual

Serialize this transformation to JSON.

Parameters
jJSON object to populate with transformation description
Exceptions
std::logic_errorif not implemented

Implemented in sdfg::cuda::CUBLASDataTransferExtraction, sdfg::cuda::CUDASoftmaxDataTransferExtraction, sdfg::cuda::CUDAStdlibDataTransferExtraction, sdfg::cuda::CUDATransform, sdfg::einsum::Einsum2Dot, sdfg::einsum::Einsum2Gemm, sdfg::einsum::EinsumExtend, sdfg::einsum::EinsumLift, sdfg::einsum::EinsumPromotion, sdfg::fp_math::FuseFMA, sdfg::fp_math::OzakiContraction, sdfg::fp_math::QuantizeContraction, sdfg::fp_math::UnfuseFMA, sdfg::gpu::GpuMmaEinsumTransform, sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >, sdfg::gpu::GPUOffloadTransform< CUDADataOffloadingNode >, sdfg::gpu::GPUOffloadTransform< ROCMDataOffloadingNode >, sdfg::gpu::rocm::GpuMmaTransform, sdfg::rocm::ROCBLASDataTransferExtraction, sdfg::rocm::ROCMStdlibDataTransferExtraction, sdfg::rocm::ROCMTransform, sdfg::transformations::CollapseToDepth, sdfg::transformations::CUDAParallelizeNestedMap, sdfg::transformations::GPUConditionPropagation, sdfg::transformations::GPUConditionPropagationScope, sdfg::transformations::GPULoopReordering, sdfg::transformations::GPUOffloadNestedLoop< GPUType >, sdfg::transformations::LocalStorage, sdfg::transformations::LoopConditionNormalize, sdfg::transformations::LoopDistribute, sdfg::transformations::LoopIndvarFinalize, sdfg::transformations::LoopInterchange, sdfg::transformations::LoopParallelization, sdfg::transformations::LoopPeeling, sdfg::transformations::LoopRotate, sdfg::transformations::LoopShift, sdfg::transformations::LoopSkewing, sdfg::transformations::LoopSplit, sdfg::transformations::LoopTiling, sdfg::transformations::LoopUnitStride, sdfg::transformations::MapCollapse, sdfg::transformations::MapDelinearize, sdfg::transformations::MapFusion, sdfg::transformations::MultiLevelTiling, sdfg::transformations::OMPTransform, sdfg::transformations::RedundantZeroInitElimination, sdfg::transformations::ROCMParallelizeNestedMap, sdfg::transformations::RPCNodeTransform, sdfg::transformations::SoftwarePipelining, sdfg::transformations::StreamK, sdfg::transformations::TileFusion, sdfg::transformations::TileVectorizer, sdfg::transformations::TrivialLoopElimination, sdfg::transformations::UnrollTransform, and sdfg::transformations::VectorizeTransform.

◆ try_apply()

virtual bool sdfg::transformations::Transformation::try_apply ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager )
inlinevirtual

Attempt to apply the transformation if possible.

Bundles can_be_applied() and apply() into a single function so they can share state

Parameters
builderThe SDFG builder
analysis_managerThe analysis manager
Returns
true if the transformation was applied

Reimplemented in sdfg::gpu::GpuMmaEinsumTransform.

Member Data Documentation

◆ report_

PassReportConsumer* sdfg::transformations::Transformation::report_ = nullptr
protected

The documentation for this class was generated from the following file: