StartInternalThread函数将会启动多线程(启动数据的预读操作)。
在train的时候:
int train() {
...
if (gpus.size() > 1) {
// Here will call StartInternalThread
caffe::P2PSync<float> sync(solver, NULL, solver->param());
sync.Run(gpus);
} else {
LOG(INFO) << "Starting Optimization";
solver->Solve();
}
LOG(INFO) << "Optimization Done.";
return 0;
}
RegisterBrewFunction(train);
在test阶段似乎没有发现什么时候调用???