1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
#pragma once
#include <map>
#include "caffe2/core/common.h"
#include "caffe2/core/net.h"
#include "observers/macros.h"
namespace caffe2 {
struct PerformanceInformation {
// Analytic
int64_t flops = 0;
int64_t bytes_written = 0;
int64_t bytes_read = 0;
std::vector<TensorShape> tensor_shapes = {};
std::vector<Argument> args = {};
std::string engine = ""; // the engine used
std::string type = ""; // the type of the operator
// Measured
double latency = 0;
double cpuMilliseconds = 0;
};
class CAFFE2_OBSERVER_API NetObserverReporter {
public:
virtual ~NetObserverReporter() = default;
/*
Report the delay metric collected by the observer.
The delays are saved in a map. The key is an identifier associated
with the reported delay. The value is the delay value in float
*/
virtual void report(
NetBase* net,
std::map<std::string, PerformanceInformation>&) = 0;
};
}
|