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

#include <sdfg/targets/gpu/gpu_offload_reduce_dispatcher.h>

Inheritance diagram for sdfg::gpu::GPUOffloadReduceDispatcher:
[legend]

Public Member Functions

 GPUOffloadReduceDispatcher (codegen::LanguageExtension &language_extension, StructuredSDFG &sdfg, analysis::AnalysisManager &analysis_manager, structured_control_flow::Reduce &node, codegen::InstrumentationPlan &instrumentation_plan, codegen::ArgCapturePlan &arg_capture_plan, std::unique_ptr< GPUOffloadDispatcherStrategy > strategy)
Public Member Functions inherited from sdfg::gpu::GPUOffloadBaseDispatcher
void dispatch_node (codegen::PrettyPrinter &main_stream, codegen::PrettyPrinter &globals_stream, codegen::CodeSnippetFactory &library_snippet_factory) override
codegen::InstrumentationInfo instrumentation_info () const override
 Bad design.
Public Member Functions inherited from sdfg::codegen::NodeDispatcher
 NodeDispatcher (LanguageExtension &language_extension, StructuredSDFG &sdfg, analysis::AnalysisManager &analysis_manager, structured_control_flow::ControlFlowNode &node, InstrumentationPlan &instrumentation_plan, ArgCapturePlan &arg_capture_plan)
virtual ~NodeDispatcher ()=default
InstrumentationInfo instrumentation_info_for_group () const
virtual void dispatch (PrettyPrinter &main_stream, PrettyPrinter &globals_stream, CodeSnippetFactory &library_snippet_factory)

Protected Member Functions

void dispatch_kernel_body (codegen::NestedCodeSnippetFactory &kernel_snippet_factory, codegen::PrettyPrinter &kernel_source_stream, codegen::PrettyPrinter &kernel_header_stream, codegen::LanguageExtension &kernel_lang_ext, symbolic::Symbol indvar, std::vector< std::string > &scope_variables, symbolic::Expression &num_iterations) override
void validate_before_dispatch (analysis::AnalysisManager &analysis_manager) override
 Node-specific preconditions checked before any code is emitted (default: none).
bool has_nested_warp_reduction (const std::string &container)
bool has_nested_block_reduction (const std::string &container)
bool has_enclosing_block_reduction (const std::string &container)
bool has_enclosing_grid_reduction (const std::string &container)
bool block_result_collides_across_grid (const symbolic::Expression &index)
std::string block_reduce_leader_condition (codegen::LanguageExtension &language_extension, const std::string &container)
std::string reduce_linear_thread_index (codegen::LanguageExtension &language_extension)
std::string reduce_axis_stride (codegen::LanguageExtension &language_extension, TargetLevel target_level)
symbolic::Expression reduce_block_dim (TargetLevel block_level)
symbolic::Expression reduce_block_size_product ()
std::string partials_buffer_name (const std::string &container)
bool is_scalar_accumulator (const std::string &container)
std::string reduce_base_slot (codegen::LanguageExtension &language_extension, const std::string &container)
void dispatch_reduction_declarations (codegen::LanguageExtension &language_extension, codegen::PrettyPrinter &stream, codegen::CodeSnippetFactory &library_snippet_factory, TargetLevel target_level)
std::string reduction_target (codegen::LanguageExtension &language_extension, const std::string &container, symbolic::Expression index)
void dispatch_reduction_combine (codegen::LanguageExtension &language_extension, codegen::PrettyPrinter &stream, codegen::CodeSnippetFactory &library_snippet_factory, TargetLevel target_level)
bool uses_register_partial (TargetLevel target_level, const std::string &container)
int64_t warp_combine_width (TargetLevel target_level, const std::string &container)
int64_t lane_group_width (TargetLevel target_level)
bool in_rescale_group (const std::string &container)
void dispatch_rescale_group_combine (codegen::LanguageExtension &language_extension, codegen::PrettyPrinter &stream, const structured_control_flow::ReductionInfo &anchor, TargetLevel target_level)
void dispatch_reduction_publish (codegen::LanguageExtension &language_extension, codegen::PrettyPrinter &stream, TargetLevel target_level)
Protected Member Functions inherited from sdfg::gpu::GPUOffloadBaseDispatcher
 GPUOffloadBaseDispatcher (codegen::LanguageExtension &language_extension, StructuredSDFG &sdfg, analysis::AnalysisManager &analysis_manager, structured_control_flow::StructuredLoop &node, codegen::InstrumentationPlan &instrumentation_plan, codegen::ArgCapturePlan &arg_capture_plan, std::unique_ptr< GPUOffloadDispatcherStrategy > strategy)
bool is_outermost_map (analysis::AnalysisManager &analysis_manager)
void dispatch_header (codegen::PrettyPrinter &globals_stream, const std::string &kernel_name, std::vector< std::string > &arguments_declaration)
void dispatch_kernel_preamble (codegen::PrettyPrinter &library_stream, const std::string &kernel_name, std::vector< std::string > &arguments_declaration)
void emit_lib_dependency_includes (codegen::PrettyPrinter &kernel_header_stream, codegen::NestedCodeSnippetFactory &nested_snippet_factory)
Protected Member Functions inherited from sdfg::codegen::NodeDispatcher
virtual bool begin_node (PrettyPrinter &stream)
virtual void end_node (PrettyPrinter &stream, bool has_declaration)

Protected Attributes

structured_control_flow::Reduce & node_
std::map< std::string, tiles::ReductionBufferInfo > reduction_buffers_
Protected Attributes inherited from sdfg::gpu::GPUOffloadBaseDispatcher
structured_control_flow::StructuredLoop & node_
std::unique_ptr< GPUOffloadDispatcherStrategy > strategy_
long launch_bounds_ = 0
Protected Attributes inherited from sdfg::codegen::NodeDispatcher
LanguageExtension & language_extension_
StructuredSDFG & sdfg_
InstrumentationPlan & instrumentation_plan_
ArgCapturePlan & arg_capture_plan_
analysis::AnalysisManager & analysis_manager_

Constructor & Destructor Documentation

◆ GPUOffloadReduceDispatcher()

sdfg::gpu::GPUOffloadReduceDispatcher::GPUOffloadReduceDispatcher ( codegen::LanguageExtension & language_extension,
StructuredSDFG & sdfg,
analysis::AnalysisManager & analysis_manager,
structured_control_flow::Reduce & node,
codegen::InstrumentationPlan & instrumentation_plan,
codegen::ArgCapturePlan & arg_capture_plan,
std::unique_ptr< GPUOffloadDispatcherStrategy > strategy )

Member Function Documentation

◆ block_reduce_leader_condition()

std::string sdfg::gpu::GPUOffloadReduceDispatcher::block_reduce_leader_condition ( codegen::LanguageExtension & language_extension,
const std::string & container )
protected

◆ block_result_collides_across_grid()

bool sdfg::gpu::GPUOffloadReduceDispatcher::block_result_collides_across_grid ( const symbolic::Expression & index)
protected

◆ dispatch_kernel_body()

void sdfg::gpu::GPUOffloadReduceDispatcher::dispatch_kernel_body ( codegen::NestedCodeSnippetFactory & kernel_snippet_factory,
codegen::PrettyPrinter & kernel_source_stream,
codegen::PrettyPrinter & kernel_header_stream,
codegen::LanguageExtension & kernel_lang_ext,
symbolic::Symbol indvar,
std::vector< std::string > & scope_variables,
symbolic::Expression & num_iterations )
overrideprotectedvirtual

◆ dispatch_reduction_combine()

void sdfg::gpu::GPUOffloadReduceDispatcher::dispatch_reduction_combine ( codegen::LanguageExtension & language_extension,
codegen::PrettyPrinter & stream,
codegen::CodeSnippetFactory & library_snippet_factory,
TargetLevel target_level )
protected

◆ dispatch_reduction_declarations()

void sdfg::gpu::GPUOffloadReduceDispatcher::dispatch_reduction_declarations ( codegen::LanguageExtension & language_extension,
codegen::PrettyPrinter & stream,
codegen::CodeSnippetFactory & library_snippet_factory,
TargetLevel target_level )
protected

◆ dispatch_reduction_publish()

void sdfg::gpu::GPUOffloadReduceDispatcher::dispatch_reduction_publish ( codegen::LanguageExtension & language_extension,
codegen::PrettyPrinter & stream,
TargetLevel target_level )
protected

◆ dispatch_rescale_group_combine()

void sdfg::gpu::GPUOffloadReduceDispatcher::dispatch_rescale_group_combine ( codegen::LanguageExtension & language_extension,
codegen::PrettyPrinter & stream,
const structured_control_flow::ReductionInfo & anchor,
TargetLevel target_level )
protected

◆ has_enclosing_block_reduction()

bool sdfg::gpu::GPUOffloadReduceDispatcher::has_enclosing_block_reduction ( const std::string & container)
protected

◆ has_enclosing_grid_reduction()

bool sdfg::gpu::GPUOffloadReduceDispatcher::has_enclosing_grid_reduction ( const std::string & container)
protected

◆ has_nested_block_reduction()

bool sdfg::gpu::GPUOffloadReduceDispatcher::has_nested_block_reduction ( const std::string & container)
protected

◆ has_nested_warp_reduction()

bool sdfg::gpu::GPUOffloadReduceDispatcher::has_nested_warp_reduction ( const std::string & container)
protected

◆ in_rescale_group()

bool sdfg::gpu::GPUOffloadReduceDispatcher::in_rescale_group ( const std::string & container)
protected

◆ is_scalar_accumulator()

bool sdfg::gpu::GPUOffloadReduceDispatcher::is_scalar_accumulator ( const std::string & container)
protected

◆ lane_group_width()

int64_t sdfg::gpu::GPUOffloadReduceDispatcher::lane_group_width ( TargetLevel target_level)
protected

◆ partials_buffer_name()

std::string sdfg::gpu::GPUOffloadReduceDispatcher::partials_buffer_name ( const std::string & container)
protected

◆ reduce_axis_stride()

std::string sdfg::gpu::GPUOffloadReduceDispatcher::reduce_axis_stride ( codegen::LanguageExtension & language_extension,
TargetLevel target_level )
protected

◆ reduce_base_slot()

std::string sdfg::gpu::GPUOffloadReduceDispatcher::reduce_base_slot ( codegen::LanguageExtension & language_extension,
const std::string & container )
protected

◆ reduce_block_dim()

symbolic::Expression sdfg::gpu::GPUOffloadReduceDispatcher::reduce_block_dim ( TargetLevel block_level)
protected

◆ reduce_block_size_product()

symbolic::Expression sdfg::gpu::GPUOffloadReduceDispatcher::reduce_block_size_product ( )
protected

◆ reduce_linear_thread_index()

std::string sdfg::gpu::GPUOffloadReduceDispatcher::reduce_linear_thread_index ( codegen::LanguageExtension & language_extension)
protected

◆ reduction_target()

std::string sdfg::gpu::GPUOffloadReduceDispatcher::reduction_target ( codegen::LanguageExtension & language_extension,
const std::string & container,
symbolic::Expression index )
protected

◆ uses_register_partial()

bool sdfg::gpu::GPUOffloadReduceDispatcher::uses_register_partial ( TargetLevel target_level,
const std::string & container )
protected

◆ validate_before_dispatch()

void sdfg::gpu::GPUOffloadReduceDispatcher::validate_before_dispatch ( analysis::AnalysisManager & analysis_manager)
overrideprotectedvirtual

Node-specific preconditions checked before any code is emitted (default: none).

Reimplemented from sdfg::gpu::GPUOffloadBaseDispatcher.

◆ warp_combine_width()

int64_t sdfg::gpu::GPUOffloadReduceDispatcher::warp_combine_width ( TargetLevel target_level,
const std::string & container )
protected

Member Data Documentation

◆ node_

structured_control_flow::Reduce& sdfg::gpu::GPUOffloadReduceDispatcher::node_
protected

◆ reduction_buffers_

std::map<std::string, tiles::ReductionBufferInfo> sdfg::gpu::GPUOffloadReduceDispatcher::reduction_buffers_
protected

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