31 std::vector<std::string>& scope_variables,
170 std::unique_ptr<GPUOffloadDispatcherStrategy> strategy
Definition structured_sdfg.h:30
Definition arg_capture_plan.h:36
Originally started out as a handler for additional source files, like hardware-accelerator kernels th...
Definition code_snippet_factory.h:69
Definition instrumentation_plan.h:26
Definition language_extension.h:39
Used when we need to dispatch main SDFG elements into a subset of files (like offloaded kernels).
Definition code_snippet_factory.h:150
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)
std::string reduce_base_slot(codegen::LanguageExtension &language_extension, 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)
int64_t lane_group_width(TargetLevel target_level)
structured_control_flow::Reduce & node_
Definition gpu_offload_reduce_dispatcher.h:21
std::map< std::string, tiles::ReductionBufferInfo > reduction_buffers_
Definition gpu_offload_reduce_dispatcher.h:23
std::string reduction_target(codegen::LanguageExtension &language_extension, const std::string &container, symbolic::Expression index)
void dispatch_reduction_publish(codegen::LanguageExtension &language_extension, codegen::PrettyPrinter &stream, TargetLevel target_level)
bool has_enclosing_grid_reduction(const std::string &container)
std::string partials_buffer_name(const std::string &container)
std::string block_reduce_leader_condition(codegen::LanguageExtension &language_extension, const std::string &container)
bool uses_register_partial(TargetLevel target_level, const std::string &container)
symbolic::Expression reduce_block_dim(TargetLevel block_level)
bool is_scalar_accumulator(const std::string &container)
std::string reduce_linear_thread_index(codegen::LanguageExtension &language_extension)
bool in_rescale_group(const std::string &container)
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
bool has_nested_block_reduction(const std::string &container)
bool has_enclosing_block_reduction(const std::string &container)
void dispatch_reduction_declarations(codegen::LanguageExtension &language_extension, codegen::PrettyPrinter &stream, codegen::CodeSnippetFactory &library_snippet_factory, TargetLevel target_level)
int64_t warp_combine_width(TargetLevel target_level, const std::string &container)
bool has_nested_warp_reduction(const std::string &container)
std::string reduce_axis_stride(codegen::LanguageExtension &language_extension, TargetLevel target_level)
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)
symbolic::Expression reduce_block_size_product()
bool block_result_collides_across_grid(const symbolic::Expression &index)
void dispatch_reduction_combine(codegen::LanguageExtension &language_extension, codegen::PrettyPrinter &stream, codegen::CodeSnippetFactory &library_snippet_factory, TargetLevel target_level)
void validate_before_dispatch(analysis::AnalysisManager &analysis_manager) override
Node-specific preconditions checked before any code is emitted (default: none).
Represents a loop with an associative/commutative reduction carried dependency.
Definition reduce.h:106
SymEngine::RCP< const SymEngine::Basic > Expression
Reference-counted pointer to a symbolic expression (SymEngine Basic).
Definition symbolic.h:83
SymEngine::RCP< const SymEngine::Symbol > Symbol
Reference-counted pointer to a SymEngine Symbol.
Definition symbolic.h:71
Definition cuda_arch.h:11
TargetLevel
Definition gpu_offload_schedule_type.h:13
Dispatcher base class for code generation from control flow nodes.
A single reduction carried by a Reduce loop.
Definition reduce.h:73
Symbolic system for integer-based symbol analysis.
Core type system definitions for sdfglib.