Lines Matching refs:sync

60 DistIface::Sync *DistIface::sync = nullptr;
162 // Wait for the sync requests from the nodes
168 if (isAbort) // sync aborted
208 if (isAbort) // sync aborted
231 // Notify the simulation thread if the on-going sync is complete
249 if (isAbort) // sync aborted
260 // Notify the simulation thread if the on-going sync is complete
300 // Only the "first" DistIface object has to perform the sync
339 // sync.
340 repeat = DistIface::sync->nextRepeat;
343 if (!DistIface::sync->run(false))
346 assert(!DistIface::sync->doCkpt);
347 assert(!DistIface::sync->doExit);
348 assert(!DistIface::sync->doStopSync);
349 assert(DistIface::sync->nextAt >= curTick());
350 assert(DistIface::sync->nextRepeat <= repeat);
358 reschedule(DistIface::sync->nextAt);
360 schedule(DistIface::sync->nextAt);
362 inform("Dist sync scheduled at %lu and repeats %lu\n", when(),
363 DistIface::sync->nextRepeat);
369 // We may not start a global periodic sync while draining before taking a
371 // may not hit the same periodic sync before they complete draining and
372 // that would make this periodic sync clash with sync called from
377 // fine since no extra global sync will happen (i.e. all peer gem5 will
378 // hit this periodic sync eventually).
379 panic_if(_draining && DistIface::sync->doCkpt,
380 "Distributed sync is hit while draining");
388 * dist sync to complete.
394 // we do a global sync here that is supposed to happen at the same
396 if (!DistIface::sync->run(true))
397 return; // global sync aborted
398 // global sync completed
400 if (DistIface::sync->doCkpt)
402 if (DistIface::sync->doExit) {
406 if (DistIface::sync->doStopSync) {
407 DistIface::sync->doStopSync = false;
410 // The switch node needs to wait for the next sync immediately.
427 // schedule the next periodic sync
428 repeat = DistIface::sync->nextRepeat;
455 "Simulators out of sync - missed packet receive by %llu ticks"
620 assert(sync == nullptr);
624 sync = new SyncSwitch(num_nodes);
626 sync = new SyncNode();
643 assert(sync);
644 delete sync;
692 // global synchronisation. Abort the sync to give the simulation
694 sync->abort();
707 if (!sync->progress(header.sendTick,
752 // this as part of the normal drain cycle because this dist sync has to be
754 sync->drainComplete();
763 sync->serializeSection(cp, "Sync");
782 sync->unserializeSection(cp, "Sync");
800 // Adjust the periodic sync start and interval. Different DistIface
801 // might have different requirements. The singleton sync object
803 assert(sync != nullptr);
804 sync->init(syncStart, syncRepeat);
833 sync->requestCkpt(ReqType::collective);
836 "checkpoint (at the next sync)\n");
837 sync->requestCkpt(ReqType::immediate);
861 // stop executing intructions until the desired sync state has been reached
866 master->sync->requestStopSync(ReqType::collective);
868 // At this point, we have no clue when everyone will reach the sync
871 // reached the sync stop point.
883 // We need to suspend all CPUs until the sync point is reached by all
885 // activation here, since we know exactly when the next sync will
911 sync->requestExit(ReqType::collective);
914 "exit (at the next sync)\n");
915 sync->requestExit(ReqType::immediate);