Halide 16.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
Statistics.h
Go to the documentation of this file.
1#ifndef STATISTICS_H
2#define STATISTICS_H
3
4#include <chrono>
5#include <set>
6#include <string>
7#include <vector>
8
9#include "ASLog.h"
10
11namespace Halide {
12namespace Internal {
13namespace Autoscheduler {
14
15using Clock = std::chrono::high_resolution_clock;
16
17template<typename T>
19 const T &value;
20 std::string msg;
21
22 ScopedStatistic(const T &value, const std::string &msg)
23 : value{value}, msg{msg} {
24 }
25
27 aslog(1) << msg << " = " << value << "\n";
28 }
29};
30
31struct ScopedTimer {
32 std::chrono::time_point<Clock> start;
33 std::string msg;
34
35 ScopedTimer(const std::string &msg)
36 : start{Clock::now()}, msg{msg} {
37 aslog(1) << "Start: " << msg << "\n";
38 }
39
41 auto duration = Clock::now() - start;
42 auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
43 aslog(1) << "Duration (ms): " << msg << " = " << ms << "\n";
44 }
45};
46
47struct Timer {
48 std::chrono::time_point<Clock> start;
49
51 : start{Clock::now()} {
52 }
53
54 void restart() {
55 start = Clock::now();
56 }
57
58 std::chrono::duration<double> elapsed() const {
59 return Clock::now() - start;
60 }
61};
62
63struct Statistics {
73 std::chrono::duration<double> generate_children_time{0};
74 std::chrono::duration<double> calculate_cost_time{0};
75 std::chrono::duration<double> enqueue_time{0};
76 std::chrono::duration<double> compute_in_tiles_time{0};
77 std::chrono::duration<double> filter_thread_tiles_time{0};
78 std::chrono::duration<double> filter_parallel_tiles_time{0};
79 std::chrono::duration<double> feature_write_time{0};
80 std::chrono::duration<double> featurization_time{0};
82 std::chrono::duration<double> cost_model_evaluation_time{0};
83
85 return std::chrono::duration_cast<std::chrono::milliseconds>(generate_children_time).count();
86 }
87
89 return std::chrono::duration_cast<std::chrono::milliseconds>(compute_in_tiles_time).count();
90 }
91
93 return std::chrono::duration_cast<std::chrono::milliseconds>(filter_thread_tiles_time).count();
94 }
95
97 return std::chrono::duration_cast<std::chrono::milliseconds>(filter_parallel_tiles_time).count();
98 }
99
101 return std::chrono::duration_cast<std::chrono::milliseconds>(feature_write_time).count();
102 }
103
105 return std::chrono::duration_cast<std::chrono::milliseconds>(calculate_cost_time).count();
106 }
107
109 return std::chrono::duration_cast<std::chrono::milliseconds>(featurization_time).count();
110 }
111
115
116 double total_enqueue_time() const {
117 return std::chrono::duration_cast<std::chrono::milliseconds>(enqueue_time).count();
118 }
119
121 return std::chrono::duration_cast<std::chrono::milliseconds>(enqueue_time + cost_model_evaluation_time).count();
122 }
123
127};
128
129} // namespace Autoscheduler
130} // namespace Internal
131} // namespace Halide
132
133#endif // STATISTICS_H
std::chrono::high_resolution_clock Clock
Definition Timer.h:15
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
@ Internal
Not visible externally, similar to 'static' linkage in C.
Expr cast(Expr a)
Cast an expression to the halide type corresponding to the C++ type T.
Definition IROperator.h:358
ScopedStatistic(const T &value, const std::string &msg)
Definition Statistics.h:22
std::chrono::time_point< Clock > start
Definition Timer.h:18
std::chrono::duration< double > cost_model_evaluation_time
Definition Statistics.h:82
std::chrono::duration< double > enqueue_time
Definition Statistics.h:75
std::chrono::duration< double > compute_in_tiles_time
Definition Statistics.h:76
std::chrono::duration< double > filter_parallel_tiles_time
Definition Statistics.h:78
std::chrono::duration< double > generate_children_time
Definition Statistics.h:73
std::chrono::duration< double > calculate_cost_time
Definition Statistics.h:74
std::chrono::duration< double > filter_thread_tiles_time
Definition Statistics.h:77
std::chrono::duration< double > featurization_time
Definition Statistics.h:80
std::chrono::duration< double > feature_write_time
Definition Statistics.h:79
std::chrono::time_point< Clock > start
Definition Timer.h:34
std::chrono::duration< double > elapsed() const
Definition Statistics.h:58