Skip to content

Commit

Permalink
Bug fixes for parallel checkpointing.
Browse files Browse the repository at this point in the history
- Fixes #1156 - Initial Sync interval needed to take Checkpoint time into account.
- Fixes #1157 - Moved barrier for Exit restart to the proper place.
  • Loading branch information
feldergast committed Oct 7, 2024
1 parent 4478448 commit 6584eac
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/sst/core/simulation.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1616,7 +1616,6 @@ Simulation_impl::checkpoint(const std::string& checkpoint_filename)
// Actions that may also be in TV
ser& real_time_;
if ( my_rank.thread == 0 ) { ser& m_exit; }
initBarrier.wait();
ser& m_heartbeat;

// Add shared StatisticOutput vector
Expand Down Expand Up @@ -1751,6 +1750,7 @@ Simulation_impl::restart(Config* cfg)
// Actions that may also be in TV
ser& real_time_;
if ( my_rank.thread == 0 ) { ser& m_exit; }
initBarrier.wait();

// Create new checkpoint object. Needs to be done before SyncManager is reinitialized
if ( cfg->checkpoint_sim_period() != "" ) {
Expand Down
5 changes: 4 additions & 1 deletion src/sst/core/sync/syncManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,10 @@ SyncManager::finalizeLinkConfigurations()
// Need to figure out what sync comes first and insert object into
// TimeVortex
if ( num_ranks_.rank == 1 && num_ranks_.thread == 1 ) return;
computeNextInsert();
if ( checkpoint_ )
computeNextInsert(checkpoint_->getNextCheckpointSimTime());
else
computeNextInsert();
}

/** Prepare for complete() phase */
Expand Down
4 changes: 2 additions & 2 deletions src/sst/core/testElements/coreTest_Component.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ class coreTestComponent : public coreTestComponentBase2
coreTestComponent(SST::ComponentId_t id, SST::Params& params);
~coreTestComponent();

void setup() {}
void finish() { printf("Component Finished.\n"); }
void setup() override {}
void finish() override { printf("Component Finished.\n"); }

void serialize_order(SST::Core::Serialization::serializer& ser) override;
ImplementSerializable(SST::CoreTestComponent::coreTestComponent)
Expand Down

0 comments on commit 6584eac

Please sign in to comment.