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

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

Inheritance diagram for sdfg::cuda::CUDAOffloadTransform:
[legend]

Public Member Functions

 CUDAOffloadTransform (structured_control_flow::StructuredLoop &loop, symbolic::Integer parallel_size, gpu::TargetLevel target_level=gpu::TargetLevel::X_GRID, bool allow_dynamic_sizes=false)
std::string name () const override
 Get the name of this transformation.
Public Member Functions inherited from sdfg::gpu::GPUOffloadTransform< CUDADataOffloadingNode >
 GPUOffloadTransform (structured_control_flow::StructuredLoop &loop, symbolic::Integer parallel_size=symbolic::integer(32), TargetLevel target_level=TargetLevel::X_GRID, 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 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 CUDAOffloadTransform from_json (builder::StructuredSDFGBuilder &builder, const nlohmann::json &desc)
Static Public Member Functions inherited from sdfg::gpu::GPUOffloadTransform< CUDADataOffloadingNode >
static GPUOffloadTransform< CUDADataOffloadingNode > from_json (builder::StructuredSDFGBuilder &builder, const nlohmann::json &desc)

Protected Member Functions

types::StorageType local_device_storage_type () override
types::StorageType global_device_storage_type (symbolic::Expression arg_size) override
ScheduleType transformed_schedule_type () override
std::string copy_prefix () override
Protected Member Functions inherited from sdfg::gpu::GPUOffloadTransform< CUDADataOffloadingNode >
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
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)
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 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

Additional Inherited Members

Protected Attributes inherited from sdfg::gpu::GPUOffloadTransform< CUDADataOffloadingNode >
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

◆ CUDAOffloadTransform()

sdfg::cuda::CUDAOffloadTransform::CUDAOffloadTransform ( structured_control_flow::StructuredLoop & loop,
symbolic::Integer parallel_size,
gpu::TargetLevel target_level = gpu::TargetLevel::X_GRID,
bool allow_dynamic_sizes = false )
inlineexplicit

Member Function Documentation

◆ copy_prefix()

std::string sdfg::cuda::CUDAOffloadTransform::copy_prefix ( )
overrideprotectedvirtual

◆ from_json()

CUDAOffloadTransform sdfg::cuda::CUDAOffloadTransform::from_json ( builder::StructuredSDFGBuilder & builder,
const nlohmann::json & desc )
static

◆ global_device_storage_type()

types::StorageType sdfg::cuda::CUDAOffloadTransform::global_device_storage_type ( symbolic::Expression arg_size)
overrideprotectedvirtual

◆ local_device_storage_type()

types::StorageType sdfg::cuda::CUDAOffloadTransform::local_device_storage_type ( )
overrideprotectedvirtual

◆ name()

std::string sdfg::cuda::CUDAOffloadTransform::name ( ) const
overridevirtual

Get the name of this transformation.

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

Implements sdfg::gpu::GPUOffloadTransform< CUDADataOffloadingNode >.

◆ transformed_schedule_type()

ScheduleType sdfg::cuda::CUDAOffloadTransform::transformed_schedule_type ( )
overrideprotectedvirtual

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