docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::gpu::GPUOffloadTransform< OffloaderNodeType > Class Template Referenceabstract

#include <sdfg/transformations/offloading/gpu_offload_transform.h>

Inheritance diagram for sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >:
[legend]

Public Member Functions

 GPUOffloadTransform (structured_control_flow::StructuredLoop &loop, symbolic::Integer parallel_size=symbolic::integer(32), TargetLevel target_level=TargetLevel::X_GRID, bool allow_dynamic_sizes=false)
virtual std::string name () const override=0
 Get the name of this transformation.
bool can_be_applied (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override
 Check if this transformation can be safely applied.
void to_json (nlohmann::json &j) const override
 Serialize this transformation to JSON.
Public Member Functions inherited from sdfg::transformations::OffloadTransform
 OffloadTransform (structured_control_flow::StructuredLoop &loop, bool allow_dynamic_sizes=false)
bool can_be_applied (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override
 Check if this transformation can be safely applied.
void apply (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override
 Apply this transformation to the SDFG.
Public Member Functions inherited from sdfg::transformations::Transformation
virtual ~Transformation ()=default
virtual void set_report (PassReportConsumer *report)
 Set the report consumer for transformation feedback.
virtual bool try_apply (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager)
 Attempt to apply the transformation if possible.

Static Public Member Functions

static GPUOffloadTransform< OffloaderNodeType > from_json (builder::StructuredSDFGBuilder &builder, const nlohmann::json &desc)

Protected Member Functions

bool reduction_buffers_supported (analysis::AnalysisManager &analysis_manager)
types::StorageType local_device_storage_type () override
types::StorageType global_device_storage_type (symbolic::Expression arg_size) override
virtual ScheduleType transformed_schedule_type () override=0
virtual std::string copy_prefix () override=0
void add_device_buffer (builder::StructuredSDFGBuilder &builder, std::string host_arg_name, std::string device_arg_name, symbolic::Expression arg_size) override
void allocate_device_arg (builder::StructuredSDFGBuilder &builder, Block &alloc_block, std::string host_arg_name, std::string device_arg_name, symbolic::Expression arg_size, symbolic::Expression page_size) override
void deallocate_device_arg (builder::StructuredSDFGBuilder &builder, Block &dealloc_block, std::string device_arg_name, symbolic::Expression arg_size, symbolic::Expression page_size) override
void copy_to_device (builder::StructuredSDFGBuilder &builder, std::string host_arg_name, std::string device_arg_name, symbolic::Expression size, symbolic::Expression page_size, Block &copy_block) override
void copy_to_device_with_allocation (builder::StructuredSDFGBuilder &builder, std::string host_arg_name, std::string device_arg_name, symbolic::Expression size, symbolic::Expression page_size, Block &copy_block) override
void copy_from_device (builder::StructuredSDFGBuilder &builder, Block &copy_out_block, std::string host_arg_name, std::string device_arg_name, symbolic::Expression size, symbolic::Expression page_size) override
void copy_from_device_with_free (builder::StructuredSDFGBuilder &builder, Block &copy_out_block, std::string host_arg_name, std::string device_arg_name, symbolic::Expression size, symbolic::Expression page_size) override
void setup_device (builder::StructuredSDFGBuilder &builder, Block &global_alloc_block) override
void teardown_device (builder::StructuredSDFGBuilder &builder, Block &global_alloc_block) override
Protected Member Functions inherited from sdfg::transformations::OffloadTransform
template<class Container>
void allocate_locals_on_device_stack (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, Container &locals)
void handle_device_setup_and_teardown (builder::StructuredSDFGBuilder &builder, const std::map< std::string, analysis::RegionArgument > &arguments, const std::unordered_map< std::string, symbolic::Expression > &argument_sizes, std::string prefix)
void update_loop_containers (const std::map< std::string, analysis::RegionArgument > &arguments, std::string prefix)

Protected Attributes

const symbolic::Integer parallel_size_
gpu::TargetLevel target_level_
Protected Attributes inherited from sdfg::transformations::OffloadTransform
structured_control_flow::StructuredLoop & loop_
bool allow_dynamic_sizes_ = false
bool skip_unneeded_d2h_ = true
Protected Attributes inherited from sdfg::transformations::Transformation
PassReportConsumer * report_ = nullptr

Constructor & Destructor Documentation

◆ GPUOffloadTransform()

template<typename OffloaderNodeType>
sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::GPUOffloadTransform ( structured_control_flow::StructuredLoop & loop,
symbolic::Integer parallel_size = symbolic::integer(32),
TargetLevel target_level = TargetLevel::X_GRID,
bool allow_dynamic_sizes = false )
inlineexplicit

Member Function Documentation

◆ add_device_buffer()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::add_device_buffer ( builder::StructuredSDFGBuilder & builder,
std::string host_arg_name,
std::string device_arg_name,
symbolic::Expression arg_size )
overrideprotectedvirtual

◆ allocate_device_arg()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::allocate_device_arg ( builder::StructuredSDFGBuilder & builder,
Block & alloc_block,
std::string host_arg_name,
std::string device_arg_name,
symbolic::Expression arg_size,
symbolic::Expression page_size )
overrideprotectedvirtual

◆ can_be_applied()

template<typename OffloaderNodeType>
bool sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::can_be_applied ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager )
overridevirtual

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

Implements sdfg::transformations::Transformation.

◆ copy_from_device()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::copy_from_device ( builder::StructuredSDFGBuilder & builder,
Block & copy_out_block,
std::string host_arg_name,
std::string device_arg_name,
symbolic::Expression size,
symbolic::Expression page_size )
overrideprotectedvirtual

◆ copy_from_device_with_free()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::copy_from_device_with_free ( builder::StructuredSDFGBuilder & builder,
Block & copy_out_block,
std::string host_arg_name,
std::string device_arg_name,
symbolic::Expression size,
symbolic::Expression page_size )
overrideprotectedvirtual

◆ copy_prefix()

template<typename OffloaderNodeType>
virtual std::string sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::copy_prefix ( )
overrideprotectedpure virtual

◆ copy_to_device()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::copy_to_device ( builder::StructuredSDFGBuilder & builder,
std::string host_arg_name,
std::string device_arg_name,
symbolic::Expression size,
symbolic::Expression page_size,
Block & copy_block )
overrideprotectedvirtual

◆ copy_to_device_with_allocation()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::copy_to_device_with_allocation ( builder::StructuredSDFGBuilder & builder,
std::string host_arg_name,
std::string device_arg_name,
symbolic::Expression size,
symbolic::Expression page_size,
Block & copy_block )
overrideprotectedvirtual

◆ deallocate_device_arg()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::deallocate_device_arg ( builder::StructuredSDFGBuilder & builder,
Block & dealloc_block,
std::string device_arg_name,
symbolic::Expression arg_size,
symbolic::Expression page_size )
overrideprotectedvirtual

◆ from_json()

template<typename OffloaderNodeType>
GPUOffloadTransform< OffloaderNodeType > sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::from_json ( builder::StructuredSDFGBuilder & builder,
const nlohmann::json & desc )
static

◆ global_device_storage_type()

template<typename OffloaderNodeType>
types::StorageType sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::global_device_storage_type ( symbolic::Expression arg_size)
inlineoverrideprotectedvirtual

◆ local_device_storage_type()

template<typename OffloaderNodeType>
types::StorageType sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::local_device_storage_type ( )
inlineoverrideprotectedvirtual

◆ name()

template<typename OffloaderNodeType>
virtual std::string sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::name ( ) const
overridepure virtual

Get the name of this transformation.

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

Implements sdfg::transformations::Transformation.

Implemented in sdfg::cuda::CUDAOffloadTransform, and sdfg::rocm::ROCMOffloadTransform.

◆ reduction_buffers_supported()

template<typename OffloaderNodeType>
bool sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::reduction_buffers_supported ( analysis::AnalysisManager & analysis_manager)
protected

◆ setup_device()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::setup_device ( builder::StructuredSDFGBuilder & builder,
Block & global_alloc_block )
inlineoverrideprotectedvirtual

◆ teardown_device()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::teardown_device ( builder::StructuredSDFGBuilder & builder,
Block & global_alloc_block )
inlineoverrideprotectedvirtual

◆ to_json()

template<typename OffloaderNodeType>
void sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::to_json ( nlohmann::json & j) const
overridevirtual

Serialize this transformation to JSON.

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

Implements sdfg::transformations::Transformation.

◆ transformed_schedule_type()

template<typename OffloaderNodeType>
virtual ScheduleType sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::transformed_schedule_type ( )
overrideprotectedpure virtual

Member Data Documentation

◆ parallel_size_

template<typename OffloaderNodeType>
const symbolic::Integer sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::parallel_size_
protected

◆ target_level_

template<typename OffloaderNodeType>
gpu::TargetLevel sdfg::gpu::GPUOffloadTransform< OffloaderNodeType >::target_level_
protected

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