|
| 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 |
| 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 ©_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 ©_block) override |
| void | copy_from_device (builder::StructuredSDFGBuilder &builder, Block ©_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 ©_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 |
| 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) |
Offloads a top-level loop to a ROCm/HIP kernel (X grid dimension).
This transformation does not perform blocking or tiling on its own. It expects the scheduler to have already identified a suitable loop for GPU offloading. The transformation assigns the loop to the ROCm X grid dimension and handles data transfers between host and device.
The resulting grid X-dimension is validated against ROCm/HIP hardware limits (2^31 - 1 blocks). If the grid would exceed this limit, the transformation is rejected (can_be_applied returns false).