#pragma once
#include <array>
#include <cstring>
#include <vector>
namespace torch {
namespace profiler {
/* A vector type to hold a list of performance counters */
using perf_counters_t = std::vector<uint64_t>;
/* Standard list of performance events independent of hardware or backend */
constexpr std::array<const char*, 2> ProfilerPerfEvents = {
/*
* Number of Processing Elelement (PE) cycles between two points of interest
* in time. This should correlate positively with wall-time. Measured in
* uint64_t. PE can be non cpu. TBD reporting behavior for multiple PEs
* participating (i.e. threadpool).
*/
"cycles",
/* Number of PE instructions between two points of interest in time. This
* should correlate positively with wall time and the amount of computation
* (i.e. work). Across repeat executions, the number of instructions should
* be more or less invariant. Measured in uint64_t. PE can be non cpu.
*/
"instructions"};
} // namespace profiler
} // namespace torch