MCPcopy Create free account
hub / github.com/catboost/catboost / LaunchOps

Method LaunchOps

library/cpp/par/par_exec.h:229–318  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

227 TGUID MasterGuid;
228
229 void LaunchOps(int localCompId) {
230 CHROMIUM_TRACE_FUNCTION();
231
232 int mapJobCount = JobRequest->Descr.ExecList.ysize();
233 LocalMapBuf.ResultData.resize(mapJobCount);
234 LocalMapBuf.ResultHasData.resize(mapJobCount, false);
235 MapJob2PartId.resize(mapJobCount, -1);
236
237 bool localOnly = JobRequest->ExecPlan.empty();
238 if (JobRequest->ExecPlan.ysize() == 1 && JobRequest->ExecPlan[0] == localCompId)
239 localOnly = true;
240
241 if (localOnly) {
242 // local host only, launch local ops
243 LocalUserContext = UserContext;
244
245 LocalMapReqCount = 1;
246 for (int i = 0; i < mapJobCount; ++i) {
247 Y_ASSERT(JobRequest->Descr.ExecList[i].CompId == localCompId);
248 int cmdId = JobRequest->Descr.ExecList[i].CmdId;
249 Cmds.Check(cmdId);
250 }
251 AtomicAdd(LocalMapReqCount, mapJobCount);
252 int execRangeFlags = JobRequest->IsLowPriority ? TLocalExecutor::MED_PRIORITY : 0;
253 LocalExecutor().ExecRange(this, 0, mapJobCount, execRangeFlags);
254 DoneLocalMapTask();
255 } else {
256 LocalUserContext = UserContext->CreateLocalOnlyContext();
257
258 RemoteMapReqCount = 1;
259
260 // get subtasks
261 TVector<TVector<ui16>> subTasks;
262 GenerateSubtasks(JobRequest->ExecPlan, &subTasks);
263 int partCount = subTasks.ysize();
264 Y_ASSERT(partCount > 0); // one remote part is possible
265
266 RemoteMapBuf.ResultData.resize(mapJobCount);
267 RemoteMapBuf.ResultHasData.resize(mapJobCount, false);
268 PartCompleted.resize(partCount, false);
269
270 // split job on subtasks
271 MapParts.resize(partCount);
272 for (int i = 0; i < partCount; ++i) {
273 TJobRequest* jr = new TJobRequest;
274 TRemoteMapInfo* part = &MapParts[i];
275 ProjectJob(&jr->Descr, i, &part->ResultMap,
276 &RemoteMapBuf.ResultHasData, &MapJob2PartId,
277 JobRequest->Descr,
278 subTasks[i]);
279 jr->ExecPlan = subTasks[i];
280 jr->HostId2Computer = JobRequest->HostId2Computer;
281 jr->EnvId2Version = JobRequest->EnvId2Version;
282 jr->IsLowPriority = JobRequest->IsLowPriority;
283
284 part->JobRequest = jr;
285 part->DstHost = SelectRandomHost(jr->ExecPlan);
286 }

Callers 1

LaunchMethod · 0.80

Calls 15

GenerateSubtasksFunction · 0.85
ProjectJobFunction · 0.85
SelectRandomHostFunction · 0.85
IsInFunction · 0.85
SerializeToMemFunction · 0.85
SendQueryMethod · 0.80
AttachMethod · 0.80
AtomicAddFunction · 0.50
AtomicSetFunction · 0.50
ysizeMethod · 0.45
resizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected