Skip to content

fixing errors loading checkpoint files due to mismatched field names - #2688

Open
shannong wants to merge 15 commits into
sstsimulator:develfrom
shannong:sgk-vanadis-cp
Open

shannong wants to merge 15 commits into
sstsimulator:develfrom
shannong:sgk-vanadis-cp

Conversation

@shannong

@shannong shannong commented Jun 5, 2026 •

Copy link
Copy Markdown
Contributor

This PR completes single-snapshot in Vanadis, with the following chnges:

  1. Renames checkpointing in vanadis to snapshot to differentiate from SST checkpoing functionality
  2. Updated various read functions throughout the scope of loading the basic vanadis snapshot that caused the load process to fail.
  3. Prevents failure when a program has a snapshot syscall, but the simulation is not configured to save or load a snapshot. In this case, the syscall for snapshotting is treated as a no-op
  4. Added functionality to store caches during vanadis snapshotting.
    Note: the cache storage functionality went into memHierarchy, which is a component I'm not familiar terribly familiar with

Instructions for Issuing a Pull Request to sst-elements

1 - Verify that the Pull Request is targeted to the devel branch of sstsimulator/sst-elements

2 - Verify that Source branch is up to date with the devel branch of sst-elements

3 - After submitting your Pull Request:

  • Automatic Testing will commence in a short while
    • Pull Requests will be tested with the devel branches of the sst-core and sst-sqe repositories
      • These branches are syncronized with the devel branch of sst-elements. This is why is it important to keep your source branch up to date.
    • If testing passes, the source branch will be automatically merged (if possible)
      • Pull Requests from forks will not be automatically tested until the code is inspected.
      • Pull Requests from forks will not be automatically merged into the devel branch.
    • If testing fails, You will be notified of the test results.
      • The Pull Request will be retested on a regular basis - Changes to the source branch can be made to correct problems

4 - DO NOT DELETE THE BRANCH (OR FORKED REPO) UNTIL THE PULL REQUEST IS MERGED.

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection is Not Necessary for this Pull Request.

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2790
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1555
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2731
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2733
  • Status: STARTED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1267
  • Status: STARTED

Using Repos:

Repo: ELEMENTS (shannong/sst-elements-contrib)
  • Branch: sgk-vanadis-cp
  • SHA: 595b0e7
  • Mode: TEST_REPO
Repo: SQE (sstsimulator/sst-sqe)
  • Branch: devel
  • SHA: 2d8139ae03322b0a07e1ecb0ec4ccc16fd9e0303
  • Mode: SUPPORT_REPO
Repo: CORE (sstsimulator/sst-core)
  • Branch: devel
  • SHA: b0f878781c549d7d50b6dfb9e0d83109885aabb2
  • Mode: SUPPORT_REPO
Repo: MACRO (sstsimulator/sst-macro)
  • Branch: devel
  • SHA: cd50ac2eb723b7fd3e78b02b65e3a7ba7250c618
  • Mode: SUPPORT_REPO

Pull Request Author: shannong

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED

Pull Request Auto Testing has PASSED (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2790
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1555
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2731
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2733
  • Status: PASSED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1267
  • Status: PASSED

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
WARNING: NO REVIEWERS HAVE BEEN REQUESTED FOR THIS PULL REQUEST!

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

5 similar comments
@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

13 similar comments
@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@berquist berquist added this to the SST v16.1.0 milestone Jun 25, 2026
@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

2 similar comments
@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED

Pull Request Auto Testing has PASSED (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2885
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1632
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2823
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2824
  • Status: PASSED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1358
  • Status: PASSED

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
WARNING: NO REVIEWERS HAVE BEEN REQUESTED FOR THIS PULL REQUEST!

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

Update snapshotToFile() to write hex-encoded data bytes for each
allocated cache line after the address and state fields. Uses
if constexpr to skip data for DirectoryLine (metadata-only type).

This enables faithful restore of original coherence states (M/E/S/O)
on load, since the cache line data is preserved alongside the state.

AI-assisted: Co-developed with Claude (Anthropic)
- Add snapshotLoadFromFile() to CacheArray<T> to restore cache lines
  with address, state, and data from snapshot files during setup()
- Add snapshotLoadCache() to 5 coherence controller subclasses
  (MESISharNoninclusive deferred)
- Add snapshot save/load to DirectoryController so cached line states
  are consistent with directory state on restore
- Move stringToState() helper to memTypes.h for shared access
- Wire snapshotDir/snapshot params to DirectoryController in Python configs

AI-assisted: Co-developed with Claude (Anthropic)
@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

auto syscall = getSyscall( event->getCore(), event->getThread() );
syscall->handleEvent( event );
processSyscallPost( syscall );
if (syscall != nullptr)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when a program has a snapshot syscall, but is not configured to save or load, we return a nullptr for the syscall. I'm not convinced relying on a nullptr like this is a great design though. I'd appreciate input on this point.

if (lines_[i]->isAllocated()) {
fprintf(fp, "0x%" PRIx64 " %s",
(uint64_t) lines_[i]->getAddr(), StateString[lines_[i]->getState()]);
if constexpr (!std::is_same_v<T, DirectoryLine>) {

@shannong shannong Sep 17, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm unsure about this block - if using if constexpr... is a good practice

debug_->fatal(CALL_INFO, -1, "CacheArray::snapshotLoadFromFile: Failed to parse snapshot header\n");
}

if (file_num_sets != num_sets_ || file_associativity != associativity_ || file_line_size != line_size_) {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we want to be a little less strict here? E.g., if file_num_sets_ <= num_sets, etc?

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection is Not Necessary for this Pull Request.

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2887
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1633
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2825
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2826
  • Status: STARTED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1360
  • Status: STARTED

Using Repos:

Repo: ELEMENTS (shannong/sst-elements-contrib)
  • Branch: sgk-vanadis-cp
  • SHA: d0255bf
  • Mode: TEST_REPO
Repo: SQE (sstsimulator/sst-sqe)
  • Branch: devel
  • SHA: a9902f112b890a614e31e56f47c75c815804474f
  • Mode: SUPPORT_REPO
Repo: CORE (sstsimulator/sst-core)
  • Branch: devel
  • SHA: 09bc3927b1fc23e65f3aa0795739cad36f315d5a
  • Mode: SUPPORT_REPO
Repo: MACRO (sstsimulator/sst-macro)
  • Branch: devel
  • SHA: cd50ac2eb723b7fd3e78b02b65e3a7ba7250c618
  • Mode: SUPPORT_REPO

Pull Request Author: shannong

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - ERROR: A user has committed a change to the PR before testing completed. The testing SHA = d0255bf Does not match the current commit SHA = fa7f993. Testing of this PR must occur again.

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection is Not Necessary for this Pull Request.

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2888
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1634
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2826
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2827
  • Status: STARTED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1361
  • Status: STARTED

Using Repos:

Repo: ELEMENTS (shannong/sst-elements-contrib)
  • Branch: sgk-vanadis-cp
  • SHA: fa7f993
  • Mode: TEST_REPO
Repo: SQE (sstsimulator/sst-sqe)
  • Branch: devel
  • SHA: a9902f112b890a614e31e56f47c75c815804474f
  • Mode: SUPPORT_REPO
Repo: CORE (sstsimulator/sst-core)
  • Branch: devel
  • SHA: 09bc3927b1fc23e65f3aa0795739cad36f315d5a
  • Mode: SUPPORT_REPO
Repo: MACRO (sstsimulator/sst-macro)
  • Branch: devel
  • SHA: cd50ac2eb723b7fd3e78b02b65e3a7ba7250c618
  • Mode: SUPPORT_REPO

Pull Request Author: shannong

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED

Pull Request Auto Testing has PASSED (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2888
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1634
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2826
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2827
  • Status: PASSED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1361
  • Status: PASSED

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
THE LAST COMMIT TO THIS PULL REQUEST HAS NOT BEEN REVIEWED YET!

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

5 similar comments
@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

5 similar comments
@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants