Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.

Commit 66cf31c

Browse files
lwencelptbuilder
authored andcommitted
task-caffe_time_forward_only: Support for forward only caffe time test
2 parents 034d1ce + f436775 commit 66cf31c

File tree

1 file changed

+31
-18
lines changed

1 file changed

+31
-18
lines changed

tools/caffe.cpp

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ DEFINE_string(listen_address, "",
6464
DEFINE_int32(comm_threads, 1,
6565
"Optional; multinode mode,"
6666
" The number of threads used by communication code.");
67+
DEFINE_bool(forward_only, false,
68+
"Optional; Execute only forward pass");
6769

6870
// A simple registry for caffe commands.
6971
typedef int (*BrewFunction)();
@@ -409,8 +411,10 @@ int time() {
409411
float initial_loss;
410412
caffe_net.Forward(&initial_loss);
411413
LOG(INFO) << "Initial loss: " << initial_loss;
412-
LOG(INFO) << "Performing Backward";
413-
caffe_net.Backward();
414+
if (!FLAGS_forward_only){
415+
LOG(INFO) << "Performing Backward";
416+
caffe_net.Backward();
417+
}
414418

415419
const vector<shared_ptr<Layer<float> > >& layers = caffe_net.layers();
416420
const vector<vector<Blob<float>*> >& bottom_vecs = caffe_net.bottom_vecs();
@@ -438,34 +442,43 @@ int time() {
438442
forward_time_per_layer[i] += timer.MicroSeconds();
439443
}
440444
forward_time += forward_timer.MicroSeconds();
441-
backward_timer.Start();
442-
for (int i = layers.size() - 1; i >= 0; --i) {
443-
timer.Start();
444-
layers[i]->Backward(top_vecs[i], bottom_need_backward[i],
445-
bottom_vecs[i]);
446-
backward_time_per_layer[i] += timer.MicroSeconds();
445+
if (!FLAGS_forward_only) {
446+
backward_timer.Start();
447+
for (int i = layers.size() - 1; i >= 0; --i) {
448+
timer.Start();
449+
layers[i]->Backward(top_vecs[i], bottom_need_backward[i],
450+
bottom_vecs[i]);
451+
backward_time_per_layer[i] += timer.MicroSeconds();
452+
}
453+
backward_time += backward_timer.MicroSeconds();
454+
LOG(INFO) << "Iteration: " << j + 1 << " forward-backward time: "
455+
<< iter_timer.MilliSeconds() << " ms.";
456+
} else {
457+
LOG(INFO) << "Iteration: " << j + 1 << " forward time: "
458+
<< iter_timer.MilliSeconds() << " ms.";
447459
}
448-
backward_time += backward_timer.MicroSeconds();
449-
LOG(INFO) << "Iteration: " << j + 1 << " forward-backward time: "
450-
<< iter_timer.MilliSeconds() << " ms.";
451460
}
452461
LOG(INFO) << "Average time per layer: ";
453462
for (int i = 0; i < layers.size(); ++i) {
454463
const caffe::string& layername = layers[i]->layer_param().name();
455464
LOG(INFO) << std::setfill(' ') << std::setw(10) << layername <<
456465
"\tforward: " << forward_time_per_layer[i] / 1000 /
457466
FLAGS_iterations << " ms.";
458-
LOG(INFO) << std::setfill(' ') << std::setw(10) << layername <<
459-
"\tbackward: " << backward_time_per_layer[i] / 1000 /
460-
FLAGS_iterations << " ms.";
467+
if (!FLAGS_forward_only) {
468+
LOG(INFO) << std::setfill(' ') << std::setw(10) << layername <<
469+
"\tbackward: " << backward_time_per_layer[i] / 1000 /
470+
FLAGS_iterations << " ms.";
471+
}
461472
}
462473
total_timer.Stop();
463474
LOG(INFO) << "Average Forward pass: " << forward_time / 1000 /
464475
FLAGS_iterations << " ms.";
465-
LOG(INFO) << "Average Backward pass: " << backward_time / 1000 /
466-
FLAGS_iterations << " ms.";
467-
LOG(INFO) << "Average Forward-Backward: " << total_timer.MilliSeconds() /
468-
FLAGS_iterations << " ms.";
476+
if (!FLAGS_forward_only) {
477+
LOG(INFO) << "Average Backward pass: " << backward_time / 1000 /
478+
FLAGS_iterations << " ms.";
479+
LOG(INFO) << "Average Forward-Backward: " << total_timer.MilliSeconds() /
480+
FLAGS_iterations << " ms.";
481+
}
469482
LOG(INFO) << "Total Time: " << total_timer.MilliSeconds() << " ms.";
470483
LOG(INFO) << "*** Benchmark ends ***";
471484
return 0;

0 commit comments

Comments
 (0)