Caffe支援多GPU分散式計算
阿新 • • 發佈:2018-10-31
Caffe允許多GPU間平行計算,多GPU模式工作模式為“不共享資料,卻共享網路”。當目標機器GPU數量大於1時,Caffe將允許多個solver存在,且應用到不同的GPU上去。
vector<int> gpus;
get_gpus(&gpus);
if (gpus.size() > 0)
{
Caffe::SetDevice(gpus[0]);
Caffe::set_mode(Caffe::GPU);
// 啟用多個solver
Caffe::set_solver_count(gpus.size());
}
1. LOG(INFO)日誌資訊:避免產生多份重複的資訊,因此只允許root_solver_輸出日誌資訊;
2. 測試:只有root_solver_才能測試,應該是為了減少冗餘計算;
3.統計結果:只有root_solver_才能輸出統計結果,原因同第一點。
直接使用solver_count的地方是DataLayer層中的DataReader物件。每一個DataLayer都有一個DataReader,DataReader工作方式為非同步執行緒,程式允許同時執行多個DataLayer,但是不可以有多個ConvLayer。
ps: 本文主要參考Physcal《從零開始山寨Caffe·叄:全域性執行緒管理器》 一文。