1 #ifndef CAFFE2_CORE_NET_DAG_H_ 2 #define CAFFE2_CORE_NET_DAG_H_ 9 #include <unordered_map> 12 #include "caffe2/core/blob.h" 13 #include "caffe2/core/common.h" 14 #include "caffe2/core/logging.h" 15 #include "caffe2/core/net_dag_utils.h" 16 #include "caffe2/core/observer.h" 17 #include "caffe2/core/operator_schema.h" 18 #include "caffe2/core/registry.h" 19 #include "caffe2/core/stats.h" 20 #include "caffe2/core/tensor.h" 21 #include "caffe2/core/timer.h" 22 #include "caffe2/core/workspace.h" 23 #include "caffe2/proto/caffe2.pb.h" 24 #include "caffe2/utils/simple_queue.h" 37 void WorkerFunction();
39 const int warmup_runs,
41 const bool run_individual)
override;
43 const dag_utils::ExecutionChains& TEST_execution_chains()
const {
44 return execution_chains_;
47 vector<OperatorBase*> GetOperators()
const override {
52 bool DoRunAsync()
override;
54 virtual bool RunAt(
int chain_id,
const std::vector<int>& chain) = 0;
55 void HandleException(
int operator_idx,
const std::string& exception_str);
57 vector<dag_utils::OperatorNode> operator_nodes_;
58 vector<OperatorBase*> operators_;
59 dag_utils::ExecutionChains execution_chains_;
60 vector<int> initial_frontier_;
61 std::unique_ptr<SimpleQueue<int>> job_queue_;
62 std::vector<std::thread> workers_;
68 std::atomic<bool> caught_exception_yet_;
69 #ifdef CAFFE2_USE_EXCEPTION_PTR 70 std::exception_ptr caught_exception_;
71 #endif // CAFFE2_USE_EXCEPTION_PTR 73 std::mutex remaining_ops_mutex_;
74 std::condition_variable cv_;
75 std::mutex run_in_progress_;
79 CAFFE_AVG_EXPORTED_STAT(task_pool_wait_time_us);
80 CAFFE_AVG_EXPORTED_STAT(task_time_to_scheduled_us);
81 CAFFE_AVG_EXPORTED_STAT(task_time_to_succeeded_ms);
82 CAFFE_AVG_EXPORTED_STAT(task_wait_time_us);
84 mutable std::vector<DAGNetStats> stats_;
85 std::unordered_map<int, std::unique_ptr<Timer>> task_timers_;
92 using DAGNetBase::DAGNetBase;
95 bool RunAt(
int chain_id,
const std::vector<int>& chain)
override;
96 bool SupportsAsync()
override {
103 #endif // CAFFE2_CORE_NET_DAG_H_
vector< float > TEST_Benchmark(const int warmup_runs, const int main_runs, const bool run_individual) override
Benchmarks a network.
Workspace is a class that holds all the related objects created during runtime: (1) all blobs...
A global dictionary that holds information about what Caffe2 modules have been loaded in the current ...