MCPcopy Create free account
hub / github.com/dmlc/parameter_server / add

Method add

src/system/executor.cc:76–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

74// }
75
76void Executor::add(const Node& node) {
77 Lock l(node_mu_);
78 if (node.id() == my_node_.id()) {
79 my_node_ = node;
80 }
81 auto id = node.id();
82 RNode* w = NULL;
83 if (nodes_.find(id) != nodes_.end()) {
84 // update
85 w = nodes_[id].node;
86 w->node_ = node;
87 nodes_[id].removeSubNode(w);
88 for (const NodeID& gid : groupIDs()) {
89 nodes_[gid].removeSubNode(w);
90 }
91 } else {
92 // create
93 w = new RNode(node, *this);
94 nodes_[id].node = w;
95 }
96
97
98 auto role = node.role();
99 if (role != Node::GROUP) {
100 nodes_[id].addSubNode(w);
101 nodes_[kLiveGroup].addSubNode(w);
102 }
103 if (role == Node::SERVER) {
104 nodes_[kServerGroup].addSubNode(w);
105 nodes_[kCompGroup].addSubNode(w);
106 }
107 if (role == Node::WORKER) {
108 nodes_[kWorkerGroup].addSubNode(w);
109 nodes_[kCompGroup].addSubNode(w);
110 }
111
112 // update replica group and owner group if i'm a server node
113 // TODO
114 // if (my_node_.role() == Node::SERVER) {
115 // int my_pos = 0;
116 // auto servers = group(kServerGroup);
117 // int n = servers.size();
118 // for (auto s : servers) {
119 // if (s->node_.id() == my_node_.id()) break;
120 // ++ my_pos;
121 // }
122 // CHECK_LT(my_pos, n);
123
124 // int nrep = FLAGS_num_replicas; CHECK_LT(nrep, n);
125 // for (int i = 1; i <= nrep; ++i) {
126 // // the replica group is just before me
127 // node_groups_[kReplicaGroup].push_back(
128 // servers[my_pos - i < 0 ? n + my_pos - i : my_pos - i]);
129 // // the owner group is just after me
130 // node_groups_[kOwnerGroup].push_back(
131 // servers[my_pos + i < n ? my_pos + i : my_pos + i - n]);
132 // }
133 // // make an empty group otherwise

Callers 3

updateDualMethod · 0.45
manageNodeMethod · 0.45

Calls 6

removeSubNodeMethod · 0.80
addSubNodeMethod · 0.80
idMethod · 0.45
findMethod · 0.45
endMethod · 0.45
roleMethod · 0.45

Tested by

no test coverage detected