Legion Runtime
Loading...
Searching...
No Matches
Legion::Mapping::Utilities::MappingProfiler Class Reference

#include <mapping_utilities.h>

Classes

struct  Profile
 
struct  ProfilingOption
 
struct  VariantProfile
 

Public Types

typedef std::map< Processor::Kind, VariantProfile > VariantMap
 
typedef std::map< Processor::TaskFuncID, VariantMap > TaskMap
 
typedef std::list< DomainPoint > PointList
 
typedef std::map< Processor, PointList > AssignmentMap
 
typedef std::map< Processor::TaskFuncID, ProfilingOption > OptionMap
 

Public Member Functions

void set_needed_profiling_samples (unsigned num_samples)
 
void set_needed_profiling_samples (Processor::TaskFuncID task_id, unsigned num_samples)
 
void set_max_profiling_samples (unsigned max_samples)
 
void set_max_profiling_samples (Processor::TaskFuncID task_id, unsigned max_samples)
 
void set_gather_in_original_processor (Processor::TaskFuncID task_id, bool flag)
 
bool profiling_complete (const Task *task) const
 
bool profiling_complete (const Task *task, Processor::Kind kind) const
 
Processor::Kind best_processor_kind (const Task *task) const
 
void add_profiling_sample (Processor::TaskFuncID task_id, const Profile &sample)
 
TaskMap get_task_profiles () const
 
VariantMap get_variant_profiles (Processor::TaskFuncID tid) const
 
VariantProfile get_variant_profile (Processor::TaskFuncID tid, Processor::Kind kind) const
 
void clear_samples (Processor::TaskFuncID task_id)
 
void clear_samples (Processor::TaskFuncID task_id, Processor::Kind kind)
 
AssignmentMap get_balanced_assignments (Processor::TaskFuncID task_id, Processor::Kind kind) const
 
AssignmentMap get_balanced_assignments (Processor::TaskFuncID task_id) const
 
ProfilingOption get_profiling_option (Processor::TaskFuncID tid) const
 

Protected Attributes

unsigned needed_samples
 
unsigned max_samples
 
TaskMap task_profiles
 
OptionMap profiling_options
 

Detailed Description

The Mapping Profiler will cycle through all the different variants of the task until it has reached the required number of records for selecting the best execution kind for the processor.

Member Function Documentation

◆ best_processor_kind()

Processor::Kind Legion::Mapping::Utilities::MappingProfiler::best_processor_kind ( const Task *  task) const

Return the processor kind for the best performing variant of this task.

◆ get_balanced_assignments()

AssignmentMap Legion::Mapping::Utilities::MappingProfiler::get_balanced_assignments ( Processor::TaskFuncID  task_id,
Processor::Kind  kind 
) const

Return a balanced assignment of point tasks to processors by LPT (Longest-Processing Time) scheduling based on the average execution times. Assume that processors of the same kind are homogeneous and only the workload of point tasks can be skwed.

◆ profiling_complete()

bool Legion::Mapping::Utilities::MappingProfiler::profiling_complete ( const Task *  task) const

Check to see if profiling is complete for all the variants of this task.

◆ set_gather_in_original_processor()

void Legion::Mapping::Utilities::MappingProfiler::set_gather_in_original_processor ( Processor::TaskFuncID  task_id,
bool  flag 
)

Set the profiling samples to be gathered in the profiler of the processor that triggered the task. By default it is false.

◆ set_max_profiling_samples()

void Legion::Mapping::Utilities::MappingProfiler::set_max_profiling_samples ( unsigned  max_samples)

Set the maximum number of profiling samples to keep around for any variant. By default it is 32.

◆ set_needed_profiling_samples()

void Legion::Mapping::Utilities::MappingProfiler::set_needed_profiling_samples ( unsigned  num_samples)

Set the required number of profiling samples required for each variant before profiling can be considered complete for that variant. The default number is one.


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