docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::transformations::OffloadTransform Class Referenceabstract

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

Inheritance diagram for sdfg::transformations::OffloadTransform:
[legend]

Public Member Functions

 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 std::string name () const =0
 Get the name of this transformation.
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 Member Functions

virtual types::StorageType local_device_storage_type ()=0
virtual types::StorageType global_device_storage_type (symbolic::Expression arg_size)=0
virtual ScheduleType transformed_schedule_type ()=0
virtual std::string copy_prefix ()=0
template<class Container>
void allocate_locals_on_device_stack (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, Container &locals)
virtual void setup_device (builder::StructuredSDFGBuilder &builder, Block &global_alloc_block)=0
virtual void teardown_device (builder::StructuredSDFGBuilder &builder, Block &global_alloc_block)=0
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)
virtual void add_device_buffer (builder::StructuredSDFGBuilder &builder, std::string host_arg_name, std::string device_arg_name, symbolic::Expression arg_size)=0
virtual 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)=0
virtual void deallocate_device_arg (builder::StructuredSDFGBuilder &builder, Block &dealloc_block, std::string device_arg_name, symbolic::Expression arg_size, symbolic::Expression page_size)=0
virtual 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)=0
virtual 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)=0
virtual 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)=0
virtual 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)=0

Protected Attributes

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

◆ OffloadTransform()

sdfg::transformations::OffloadTransform::OffloadTransform ( structured_control_flow::StructuredLoop & loop,
bool allow_dynamic_sizes = false )
explicit

Member Function Documentation

◆ add_device_buffer()

virtual void sdfg::transformations::OffloadTransform::add_device_buffer ( builder::StructuredSDFGBuilder & builder,
std::string host_arg_name,
std::string device_arg_name,
symbolic::Expression arg_size )
protectedpure virtual

◆ allocate_device_arg()

virtual void sdfg::transformations::OffloadTransform::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 )
protectedpure virtual

◆ allocate_locals_on_device_stack()

template<class Container>
void sdfg::transformations::OffloadTransform::allocate_locals_on_device_stack ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager,
Container & locals )
inlineprotected

◆ apply()

void sdfg::transformations::OffloadTransform::apply ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager )
overridevirtual

Apply this transformation to the SDFG.

Parameters
builderThe SDFG builder
analysis_managerThe analysis manager (may be invalidated)

Implements sdfg::transformations::Transformation.

◆ can_be_applied()

bool sdfg::transformations::OffloadTransform::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.

Reimplemented in sdfg::rocm::ROCMTransform.

◆ copy_from_device()

virtual void sdfg::transformations::OffloadTransform::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 )
protectedpure virtual

◆ copy_from_device_with_free()

virtual void sdfg::transformations::OffloadTransform::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 )
protectedpure virtual

◆ copy_prefix()

◆ copy_to_device()

virtual void sdfg::transformations::OffloadTransform::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 )
protectedpure virtual

◆ copy_to_device_with_allocation()

virtual void sdfg::transformations::OffloadTransform::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 )
protectedpure virtual

◆ deallocate_device_arg()

virtual void sdfg::transformations::OffloadTransform::deallocate_device_arg ( builder::StructuredSDFGBuilder & builder,
Block & dealloc_block,
std::string device_arg_name,
symbolic::Expression arg_size,
symbolic::Expression page_size )
protectedpure virtual

◆ global_device_storage_type()

◆ handle_device_setup_and_teardown()

void sdfg::transformations::OffloadTransform::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 )
protected

◆ local_device_storage_type()

◆ setup_device()

virtual void sdfg::transformations::OffloadTransform::setup_device ( builder::StructuredSDFGBuilder & builder,
Block & global_alloc_block )
protectedpure virtual

◆ teardown_device()

virtual void sdfg::transformations::OffloadTransform::teardown_device ( builder::StructuredSDFGBuilder & builder,
Block & global_alloc_block )
protectedpure virtual

◆ transformed_schedule_type()

◆ update_loop_containers()

void sdfg::transformations::OffloadTransform::update_loop_containers ( const std::map< std::string, analysis::RegionArgument > & arguments,
std::string prefix )
protected

Member Data Documentation

◆ allow_dynamic_sizes_

bool sdfg::transformations::OffloadTransform::allow_dynamic_sizes_ = false
protected

◆ loop_

structured_control_flow::StructuredLoop& sdfg::transformations::OffloadTransform::loop_
protected

◆ skip_unneeded_d2h_

bool sdfg::transformations::OffloadTransform::skip_unneeded_d2h_ = true
protected

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