15struct PipelineFeatures {
26 return ((
int *)(
this))[idx];
30 return ((
const int *)(
this))[idx];
102 template<
typename OS>
105 const char *type_names[] = {
"Bool",
"UInt8",
"UInt16",
"UInt32",
"UInt64",
"Float",
"Double"};
111 os <<
" Featurization for type " << type_names[i] <<
"\n"
112 <<
" Op histogram:\n"
137 <<
" Memory access patterns. Columns are calls to other Funcs, self-calls, input image access, and stores\n"
167struct ScheduleFeatures {
177 return ((
double *)(
this))[idx];
181 return ((
const double *)(
this))[idx];
347 template<
typename OS>
431 for (
size_t i = 0; i < n_features; i++) {
432 if ((*
this)[i] != other[i]) {
A scalar parameter to a halide pipeline.
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Type Float(int bits, int lanes=1)
Construct a floating-point type.
@ Internal
Not visible externally, similar to 'static' linkage in C.
Type Bool(int lanes=1)
Construct a boolean type.
unsigned __INT32_TYPE__ uint32_t
The sum of two expressions.
Logical and - are both expressions true.
The actual IR nodes begin here.
The ratio of two expressions.
Is the first expression equal to the second.
Is the first expression less than or equal to the second.
Is the first expression less than the second.
A let expression, like you might find in a functional language.
The greater of two values.
The lesser of two values.
The product of two expressions.
Is the first expression not equal to the second.
Logical not - true if the expression false.
Logical or - is at least one of the expression true.
static constexpr uint32_t version()
int pointwise_accesses[(int) AccessType::NumAccessTypes][(int) ScalarType::NumScalarTypes]
int & operator[](int idx)
int broadcast_accesses[(int) AccessType::NumAccessTypes][(int) ScalarType::NumScalarTypes]
static constexpr size_t num_features()
int op_histogram[(int) OpType::NumOpTypes][(int) ScalarType::NumScalarTypes]
int transpose_accesses[(int) AccessType::NumAccessTypes][(int) ScalarType::NumScalarTypes]
int types_in_use[(int) ScalarType::NumScalarTypes]
int operator[](int idx) const
int slice_accesses[(int) AccessType::NumAccessTypes][(int) ScalarType::NumScalarTypes]
double warp_lane_utilization_at_block_z
double working_set_at_production
double global_allocation_bytes_read_per_realization
bool equal(const ScheduleFeatures &other) const
double num_global_mem_loads_per_block
double innermost_loop_extent
double points_computed_per_thread
double num_shared_mem_loads_per_block
double working_set_at_thread
double unique_global_bytes_read_per_realization
double points_computed_total
double points_computed_per_realization
double global_bytes_at_task
double unique_shared_bytes_read_per_thread
double innermost_bytes_at_root
double global_mem_store_efficiency
double unique_global_bytes_read_per_thread
double unique_bytes_read_per_point
double num_threads_per_block
double unique_register_lines_read_per_thread
double innermost_bytes_at_realization
double operator[](int idx) const
double working_set_at_realization
double shared_bytes_at_task
double bytes_at_production
double working_set_at_task
double unique_register_lines_read_per_realization
static constexpr uint32_t version()
double num_global_mem_stores_per_block
double innermost_pure_loop_extent
double unique_bytes_read_per_task
double max_block_occupancy
static constexpr size_t num_features()
double shared_allocation_bytes_read_per_realization
double global_innermost_bytes_at_task
double global_mem_load_efficiency
double shared_innermost_bytes_at_task
double num_warps_per_block
double unique_register_bytes_read_per_realization
double register_innermost_bytes_at_task
double warp_lane_utilization_at_block_y
double shared_mem_occupancy
double unique_shared_lines_read_per_thread
double innermost_bytes_at_production
double unique_lines_read_per_point
double shared_mem_load_efficiency
double unique_shared_bytes_read_per_realization
double shared_mem_block_limit_factor
double max_warp_occupancy
double & operator[](int idx)
double points_computed_minimum
double working_set_at_root
double warp_lane_utilization
double unique_global_lines_read_per_realization
double points_computed_per_production
double unique_lines_read_per_task
double register_bytes_at_task
double unrolled_loop_extent
double num_shared_mem_stores_per_block
double bytes_at_realization
double unique_register_bytes_read_per_thread
double unique_global_lines_read_per_thread
double shared_mem_store_efficiency
double unique_shared_lines_read_per_realization
double num_active_warps_per_block
double register_allocation_bytes_read_per_realization
Store a 'value' to the buffer called 'name' at a given 'index' if 'predicate' is true.
The difference of two expressions.