| 419 | |
| 420 | template<typename Dtype> |
| 421 | void P2PSync<Dtype>::Run(const vector<int>& gpus) { |
| 422 | vector<shared_ptr<P2PSync<Dtype> > > syncs(gpus.size()); |
| 423 | Prepare(gpus, &syncs); |
| 424 | |
| 425 | LOG(INFO)<< "Starting Optimization"; |
| 426 | |
| 427 | for (int i = 1; i < syncs.size(); ++i) { |
| 428 | syncs[i]->StartInternalThread(); |
| 429 | } |
| 430 | |
| 431 | // Run root solver on current thread |
| 432 | solver_->Solve(); |
| 433 | |
| 434 | for (int i = 1; i < syncs.size(); ++i) { |
| 435 | syncs[i]->StopInternalThread(); |
| 436 | } |
| 437 | } |
| 438 | |
| 439 | INSTANTIATE_CLASS(Params); |
| 440 | INSTANTIATE_CLASS(GPUParams); |