docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::passes::GPUNestedOffloadPass Class Reference

Depth-aware nested GPU offload pass. More...

#include <sdfg/passes/offloading/gpu_nested_offload_pass.h>

Inheritance diagram for sdfg::passes::GPUNestedOffloadPass:
[legend]

Public Member Functions

 GPUNestedOffloadPass (const std::vector< structured_control_flow::StructuredLoop * > &loops, GPUTarget target)
 ~GPUNestedOffloadPass () override=default
bool run_pass (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override
std::string name () override
Public Member Functions inherited from sdfg::passes::Pass
 Pass ()=default
 Pass (const Options &options)
virtual ~Pass ()=default
virtual std::vector< OptionSpec > options ()
bool run (builder::SDFGBuilder &builder, bool create_report=false)
bool run (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, bool create_report=false)
virtual bool run_pass (builder::SDFGBuilder &builder)
virtual void invalidates (analysis::AnalysisManager &analysis_manager, bool applied)

Additional Inherited Members

Protected Member Functions inherited from sdfg::passes::Pass
template<class T>
T option (const OptionKey< T > &key, T fallback=T{}) const

Detailed Description

Depth-aware nested GPU offload pass.

For each already grid-offloaded outer loop, inspects the maximum nesting depth of its loop nest and offloads the nested loops via GPUOffloadNestedLoop:

  • depth 2: X_BLOCK
  • depth 3: X_BLOCK, then WARP
  • depth >= 4: Y_GRID, X_BLOCK, Y_BLOCK

Grid/block sizes derive from each loop's iteration count: a known integer count is used directly for grid dimensions and capped at the default for block dimensions; a symbolic count falls back to the default.

Constructor & Destructor Documentation

◆ GPUNestedOffloadPass()

sdfg::passes::GPUNestedOffloadPass::GPUNestedOffloadPass ( const std::vector< structured_control_flow::StructuredLoop * > & loops,
GPUTarget target )

◆ ~GPUNestedOffloadPass()

sdfg::passes::GPUNestedOffloadPass::~GPUNestedOffloadPass ( )
overridedefault

Member Function Documentation

◆ name()

std::string sdfg::passes::GPUNestedOffloadPass::name ( )
inlineoverridevirtual

Implements sdfg::passes::Pass.

◆ run_pass()

bool sdfg::passes::GPUNestedOffloadPass::run_pass ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager )
overridevirtual

Reimplemented from sdfg::passes::Pass.


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