Caffe2 - C++ API
A deep learning, cross platform ML framework
Related Pages
Modules
Data Structures
Files
C++ API
Python API
GitHub
File List
Globals
modules
observers
perf_observer.h
1
#pragma once
2
3
#include "caffe2/core/net.h"
4
#include "caffe2/core/observer.h"
5
#include "caffe2/core/timer.h"
6
7
#include <unordered_map>
8
9
namespace
caffe2
{
10
11
class
PerfNetObserver
:
public
NetObserver
{
12
public
:
13
explicit
PerfNetObserver
(
NetBase
* subject_);
14
virtual
~
PerfNetObserver
();
15
16
caffe2::Timer
& getTimer() {
17
return
timer_;
18
}
19
20
private
:
21
void
Start()
override
;
22
void
Stop()
override
;
23
24
caffe2::string getObserverName(
const
OperatorBase
* op,
int
idx)
const
;
25
26
private
:
27
enum
LogType {
28
NONE,
29
OPERATOR_DELAY,
30
NET_DELAY,
31
};
32
LogType logType_;
33
unsigned
int
numRuns_;
34
std::unordered_map<const OperatorBase*, const ObserverBase<OperatorBase>*>
35
observerMap_;
36
37
caffe2::Timer
timer_;
38
};
39
40
class
PerfOperatorObserver
:
public
ObserverBase
<OperatorBase> {
41
public
:
42
PerfOperatorObserver
(
OperatorBase
* op,
PerfNetObserver
* netObserver);
43
virtual
~
PerfOperatorObserver
();
44
45
double
getMilliseconds()
const
;
46
47
private
:
48
void
Start()
override
;
49
void
Stop()
override
;
50
51
private
:
52
// Observer of a net that owns corresponding op. We make sure net is never
53
// destructed while operator observer is still alive. First operator observer
54
// gets destructed, then the op, then the net and its observer.
55
// We do this trick in order to get access to net's name and other fields
56
// without storing inside the operator observer. Each field is memory
57
// costly here and a raw pointer is a cheapest sholution
58
PerfNetObserver
* netObserver_;
59
double
milliseconds_;
60
};
61
}
// namespace caffe2
caffe2::ObserverBase< NetBase >
caffe2
A global dictionary that holds information about what Caffe2 modules have been loaded in the current ...
Definition:
convert_encoded_to_raw_leveldb.cc:47
caffe2::NetBase
Definition:
net.h:35
caffe2::PerfNetObserver
Definition:
perf_observer.h:11
caffe2::PerfOperatorObserver
Definition:
perf_observer.h:40
caffe2::Timer
A simple timer object for measuring time.
Definition:
timer.h:16
caffe2::OperatorBase
Definition:
operator.h:30
Generated on Thu Apr 19 2018 13:03:57 for Caffe2 - C++ API by
1.8.11