|
|
|
|
@ -364,12 +364,14 @@ class GeoSgdCommunicator : public Communicator {
|
|
|
|
|
const std::vector<SparseIdsMap>& ids_send_vec,
|
|
|
|
|
const std::string& var_name, const std::string& splited_var_name);
|
|
|
|
|
|
|
|
|
|
void SendUpdateDenseVars(const std::string& var_name);
|
|
|
|
|
void SendUpdateDenseVars(const std::string& var_name,
|
|
|
|
|
const std::string& splited_var_name);
|
|
|
|
|
void SendUpdateSparseVars(const std::string& var_name,
|
|
|
|
|
const std::string& splited_var_name,
|
|
|
|
|
const std::unordered_set<int64_t>& ids_table);
|
|
|
|
|
|
|
|
|
|
void RecvUpdateDenseVars(const std::string& var_name);
|
|
|
|
|
void RecvUpdateDenseVars(const std::string& var_name,
|
|
|
|
|
const std::string& splited_var_name);
|
|
|
|
|
void RecvUpdateSparseVars(const std::string& var_name,
|
|
|
|
|
const std::string& splited_var_name);
|
|
|
|
|
|
|
|
|
|
@ -420,21 +422,32 @@ class GeoSgdCommunicator : public Communicator {
|
|
|
|
|
int trainer_nums_ = 1;
|
|
|
|
|
size_t geo_need_push_nums_ = 100;
|
|
|
|
|
bool is_geo_sgd_ = false;
|
|
|
|
|
Scope* training_scope_;
|
|
|
|
|
std::shared_ptr<Scope> delta_scope_; // parameter local delta: recv - old
|
|
|
|
|
std::shared_ptr<Scope>
|
|
|
|
|
old_scope_; // parameter local, storage the param after last recv
|
|
|
|
|
std::shared_ptr<Scope> pserver_scope_; // parameter on pserver,gloabl scope
|
|
|
|
|
int send_var_nums_ = 0;
|
|
|
|
|
|
|
|
|
|
RpcCtxMap send_varname_to_ctx_;
|
|
|
|
|
RpcCtxMap recv_varname_to_ctx_;
|
|
|
|
|
std::unordered_map<std::string, bool>
|
|
|
|
|
var_list_; // if var is sparse, using selected rows, bool=true
|
|
|
|
|
|
|
|
|
|
// parameter for local training
|
|
|
|
|
Scope* training_scope_;
|
|
|
|
|
|
|
|
|
|
// parameter for delta calc and send
|
|
|
|
|
std::shared_ptr<Scope> delta_scope_;
|
|
|
|
|
|
|
|
|
|
// parameter for storage the pserver param after last recv
|
|
|
|
|
std::shared_ptr<Scope> old_scope_;
|
|
|
|
|
|
|
|
|
|
// parameter on pserver
|
|
|
|
|
std::shared_ptr<Scope> pserver_scope_;
|
|
|
|
|
|
|
|
|
|
// if var is sparse, using selected rows, bool=true
|
|
|
|
|
std::unordered_map<std::string, bool> var_list_;
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<BlockingQueue<std::shared_ptr<SparseIdsMap>>>
|
|
|
|
|
need_push_queue_;
|
|
|
|
|
std::vector<SparseIdsMap> ids_send_vec_;
|
|
|
|
|
|
|
|
|
|
std::unordered_map<std::string, std::vector<int64_t>> absolute_section_;
|
|
|
|
|
std::unordered_map<std::string, int64_t> vars_first_dimension_;
|
|
|
|
|
|
|
|
|
|
std::unique_ptr<::ThreadPool> send_threadpool_{nullptr};
|
|
|
|
|
std::unique_ptr<std::thread> send_thread_{nullptr};
|
|
|
|
|
|