|
docc 0.8.3 (0d44999b)
C++ API Reference
|
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 |
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.
|
virtualdefault |
|
pure virtual |
Apply this transformation to the SDFG.
| builder | The SDFG builder |
| analysis_manager | The 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.
|
pure virtual |
Check if this transformation can be safely applied.
| builder | The SDFG builder |
| analysis_manager | The analysis manager providing necessary analyses |
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.
|
pure virtual |
Get the name of this transformation.
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.
|
inlinevirtual |
Set the report consumer for transformation feedback.
| report | The report consumer |
|
pure virtual |
Serialize this transformation to JSON.
| j | JSON object to populate with transformation description |
| std::logic_error | if 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.
|
inlinevirtual |
Attempt to apply the transformation if possible.
Bundles can_be_applied() and apply() into a single function so they can share state
| builder | The SDFG builder |
| analysis_manager | The analysis manager |
Reimplemented in sdfg::gpu::GpuMmaEinsumTransform.
|
protected |