summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorSergio <sguada@gmail.com>2014-10-12 23:16:59 -0700
committerSergio <sguada@gmail.com>2014-10-15 17:03:18 -0700
commit8867a54599f1d35b36bb29ee6fea94d6f635d675 (patch)
tree8e2a9916d42ca9d2ffc632340599bf13d20aebae /tools
parent65688bed17b3bc162fd5a0db9c97de11c9131258 (diff)
downloadcaffeonacl-8867a54599f1d35b36bb29ee6fea94d6f635d675.tar.gz
caffeonacl-8867a54599f1d35b36bb29ee6fea94d6f635d675.tar.bz2
caffeonacl-8867a54599f1d35b36bb29ee6fea94d6f635d675.zip
Added CPUTimer
Make timing more precise using double and microseconds
Diffstat (limited to 'tools')
-rw-r--r--tools/caffe.cpp39
-rw-r--r--tools/compute_image_mean.cpp2
2 files changed, 24 insertions, 17 deletions
diff --git a/tools/caffe.cpp b/tools/caffe.cpp
index 1c842a07..9f9d975d 100644
--- a/tools/caffe.cpp
+++ b/tools/caffe.cpp
@@ -231,10 +231,10 @@ int time() {
Timer forward_timer;
Timer backward_timer;
Timer timer;
- std::vector<float> forward_time_per_layer(layers.size(), 0.0);
- std::vector<float> backward_time_per_layer(layers.size(), 0.0);
- float forward_time = 0.0;
- float backward_time = 0.0;
+ std::vector<double> forward_time_per_layer(layers.size(), 0.0);
+ std::vector<double> backward_time_per_layer(layers.size(), 0.0);
+ double forward_time = 0.0;
+ double backward_time = 0.0;
for (int j = 0; j < FLAGS_iterations; ++j) {
Timer iter_timer;
iter_timer.Start();
@@ -245,33 +245,38 @@ int time() {
// so that we will notice Reshape performance bugs.
layers[i]->Reshape(bottom_vecs[i], top_vecs[i]);
layers[i]->Forward(bottom_vecs[i], top_vecs[i]);
- forward_time_per_layer[i] += timer.MilliSeconds();
+ forward_time_per_layer[i] += timer.MicroSeconds();
}
- forward_time += forward_timer.MilliSeconds();
+ forward_time += forward_timer.MicroSeconds();
backward_timer.Start();
for (int i = layers.size() - 1; i >= 0; --i) {
timer.Start();
layers[i]->Backward(top_vecs[i], bottom_need_backward[i],
bottom_vecs[i]);
- backward_time_per_layer[i] += timer.MilliSeconds();
+ backward_time_per_layer[i] += timer.MicroSeconds();
}
- backward_time += backward_timer.MilliSeconds();
+ backward_time += backward_timer.MicroSeconds();
LOG(INFO) << "Iteration: " << j + 1 << " forward-backward time: "
- << iter_timer.MilliSeconds() << " milliseconds.";
+ << iter_timer.MilliSeconds() << " ms.";
}
+ LOG(INFO) << "Average time per layer: ";
for (int i = 0; i < layers.size(); ++i) {
const caffe::string& layername = layers[i]->layer_param().name();
LOG(INFO) << std::setfill(' ') << std::setw(10) << layername <<
- "\tforward: " << forward_time_per_layer[i] << " milliseconds.";
+ "\tforward: " << forward_time_per_layer[i] / 1000 /
+ FLAGS_iterations << " ms.";
LOG(INFO) << std::setfill(' ') << std::setw(10) << layername <<
- "\tbackward: " << backward_time_per_layer[i] << " milliseconds.";
+ "\tbackward: " << backward_time_per_layer[i] / 1000 /
+ FLAGS_iterations << " ms.";
}
- LOG(INFO) << "Forward pass: " << forward_time <<
- " milliseconds.";
- LOG(INFO) << "Backward pass: " << backward_time <<
- " milliseconds.";
- LOG(INFO) << "Total Time: " << total_timer.MilliSeconds() <<
- " milliseconds.";
+ total_timer.Stop();
+ LOG(INFO) << "Average Forward pass: " << forward_time / 1000 /
+ FLAGS_iterations << " ms.";
+ LOG(INFO) << "Average Backward pass: " << backward_time / 1000 /
+ FLAGS_iterations << " ms.";
+ LOG(INFO) << "Average Forward-Backward: " << total_timer.MilliSeconds() /
+ FLAGS_iterations << " ms.";
+ LOG(INFO) << "Total Time: " << total_timer.MilliSeconds() << " ms.";
LOG(INFO) << "*** Benchmark ends ***";
return 0;
}
diff --git a/tools/compute_image_mean.cpp b/tools/compute_image_mean.cpp
index 4c2c658b..358f57e3 100644
--- a/tools/compute_image_mean.cpp
+++ b/tools/compute_image_mean.cpp
@@ -4,6 +4,8 @@
#include <algorithm>
#include <string>
+#include <utility>
+#include <vector>
#include "caffe/dataset_factory.hpp"
#include "caffe/proto/caffe.pb.h"