docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
gpu_map_utils.h File Reference

Go to the source code of this file.

Classes

struct  sdfg::gpu::FoldBarrier
struct  sdfg::gpu::NestedFoldPlan

Namespaces

namespace  sdfg
namespace  sdfg::cuda
namespace  sdfg::rocm
namespace  sdfg::gpu

Functions

template<typename ScheduleT>
symbolic::Expression sdfg::gpu::find_nested_gpu_blocksize (structured_control_flow::Map &node, analysis::AnalysisManager &analysis_manager, GPUDimension dimension)
 GPU map utility functions shared between CUDA and ROCm.
template<typename ScheduleT>
symbolic::Expression sdfg::gpu::find_nested_gpu_iterations (structured_control_flow::Map &node, analysis::AnalysisManager &analysis_manager, GPUDimension dimension)
 Find the number of iterations for nested GPU maps in a given dimension.
template<typename ScheduleT>
bool sdfg::gpu::is_outermost_gpu_map (structured_control_flow::Map &node, analysis::AnalysisManager &analysis_manager)
 Check if a map is the outermost GPU map in the loop tree.
template<typename ScheduleT>
symbolic::SymbolSet sdfg::gpu::get_gpu_indvars (structured_control_flow::Map &node, analysis::AnalysisManager &analysis_manager, GPUDimension dimension)
 Get all induction variables for GPU maps in a given dimension.
bool sdfg::gpu::is_gpu_schedule (const structured_control_flow::ScheduleType &schedule)
 Check if a schedule type is a GPU schedule (CUDA or ROCM).
template<typename GPUType>
int64_t sdfg::gpu::gpu_warp_size ()
template<>
int64_t sdfg::gpu::gpu_warp_size< sdfg::cuda::ScheduleType_CUDA_Offload > ()
template<>
int64_t sdfg::gpu::gpu_warp_size< sdfg::rocm::ScheduleType_ROCM_Offload > ()
int64_t sdfg::gpu::gpu_warp_size (const structured_control_flow::ScheduleType &schedule)
template<typename ScheduleT>
std::vector< structured_control_flow::Map * > sdfg::gpu::get_gpu_maps (structured_control_flow::Map &node, analysis::AnalysisManager &analysis_manager, GPUDimension dimension)
 Get all GPU Map nodes in a given dimension (in tree traversal order).
bool sdfg::gpu::nested_parallelization_is_unsafe (structured_control_flow::StructuredLoop &loop, analysis::AnalysisManager &analysis_manager)
 Whether parallelizing loop to a new GPU grid dimension would race on a shared container.
NestedFoldPlan sdfg::gpu::analyze_nested_fold (structured_control_flow::StructuredLoop &loop, TargetLevel target_level, analysis::AnalysisManager &analysis_manager)
symbolic::Expression sdfg::gpu::get_target_level_dim (TargetLevel target_level, int warp_size)
symbolic::Expression sdfg::gpu::get_target_level_idx (TargetLevel target_level)
bool sdfg::gpu::is_grid_level (TargetLevel target_level)
bool sdfg::gpu::is_block_level (TargetLevel target_level)
bool sdfg::gpu::is_warp_level (TargetLevel target_level)
symbolic::SymbolSet sdfg::gpu::target_level_indvars (structured_control_flow::StructuredLoop &node, analysis::AnalysisManager &analysis_manager, TargetLevel target_level)
void sdfg::gpu::get_nested_schedule_types (structured_control_flow::StructuredLoop &node, analysis::AnalysisManager &analysis_manager, std::unordered_map< TargetLevel, structured_control_flow::ScheduleType > &output)
void sdfg::gpu::get_nested_level_maps (structured_control_flow::StructuredLoop &node, analysis::AnalysisManager &analysis_manager, std::unordered_map< TargetLevel, structured_control_flow::StructuredLoop * > &output)
bool sdfg::gpu::nested_warp_dim (structured_control_flow::StructuredLoop &loop, analysis::AnalysisManager &analysis_manager)
void sdfg::gpu::validate_wave_maps (structured_control_flow::StructuredLoop &node, analysis::AnalysisManager &analysis_manager, int64_t warp_size)
structured_control_flow::StructuredLoop * sdfg::gpu::find_x_block_owning_warp_level (structured_control_flow::StructuredLoop &node, analysis::AnalysisManager &analysis_manager)
size_t sdfg::gpu::perfectly_nested_depth (structured_control_flow::StructuredLoop *loop)
template symbolic::Expression sdfg::gpu::find_nested_gpu_blocksize< sdfg::cuda::ScheduleType_CUDA > (structured_control_flow::Map &, analysis::AnalysisManager &, GPUDimension)
template symbolic::Expression sdfg::gpu::find_nested_gpu_blocksize< sdfg::rocm::ScheduleType_ROCM > (structured_control_flow::Map &, analysis::AnalysisManager &, GPUDimension)
template symbolic::Expression sdfg::gpu::find_nested_gpu_iterations< sdfg::cuda::ScheduleType_CUDA > (structured_control_flow::Map &, analysis::AnalysisManager &, GPUDimension)
template symbolic::Expression sdfg::gpu::find_nested_gpu_iterations< sdfg::rocm::ScheduleType_ROCM > (structured_control_flow::Map &, analysis::AnalysisManager &, GPUDimension)
template bool sdfg::gpu::is_outermost_gpu_map< sdfg::cuda::ScheduleType_CUDA > (structured_control_flow::Map &, analysis::AnalysisManager &)
template bool sdfg::gpu::is_outermost_gpu_map< sdfg::rocm::ScheduleType_ROCM > (structured_control_flow::Map &, analysis::AnalysisManager &)
template symbolic::SymbolSet sdfg::gpu::get_gpu_indvars< sdfg::cuda::ScheduleType_CUDA > (structured_control_flow::Map &, analysis::AnalysisManager &, GPUDimension)
template symbolic::SymbolSet sdfg::gpu::get_gpu_indvars< sdfg::rocm::ScheduleType_ROCM > (structured_control_flow::Map &, analysis::AnalysisManager &, GPUDimension)
template std::vector< structured_control_flow::Map * > sdfg::gpu::get_gpu_maps< sdfg::cuda::ScheduleType_CUDA > (structured_control_flow::Map &, analysis::AnalysisManager &, GPUDimension)
template std::vector< structured_control_flow::Map * > sdfg::gpu::get_gpu_maps< sdfg::rocm::ScheduleType_ROCM > (structured_control_flow::Map &, analysis::AnalysisManager &, GPUDimension)