SST v16.0.0 Released
SST v16.0.0 is now available and can be downloaded here
Highlights of the feature enahcements in both SST-Core and SST-Elements are:
General
- This release contains several enhancements in checkpoint and the interactive debug capability.
- A new element library, Carcosa, provides the ability to inject and model faults in conjunction with Vanadis and memHierarchy.
- Several new capabilities have been ported from SST/macro to the mercury element library.
Deprecation and Removal Notices
- SST-Elements is deprecating support for Ramulator and HMCSim as backends for MemHierarchy. Testing of these backends will be discontinued later this year. Note that Ramulator2 will continue to be supported.
- Beginning in SST 17.0, statistics will no longer directly store their type in a string variable. Custom statistic types inheriting from
StatisticBase must implement getStatisticTypeName(). This function will become pure virtual in 17.0. The function setStatisticTypeName() will also be removed as type names will become a property of the statistic type class rather than a per-statistic property.
Known Issues
- There is an issue when using the Ubuntu 26 provided OpenMPI 5.0.10 as of this release. While simulations run correctly, the output is garbled so tests will not pass. We recommend using OpenMPI 4.1.x until this issue is resolved.
SST-Core
New Features and Enhancements
- Changing SST’s partitioning when restarting from a checkpoint is now supported, provided the checkpoint was generated using SST’s serial (default) loading mechanism rather than parallel loading. If serial loading was used, you will see a graph configuration file in the top-level checkpoint directory.
- The debug console now works in multi-rank and multi-threaded simulations as well as serial ones.
- Significant enhancements were made to the debug console including:
- Users can navigate the object map, set watchpoints, etc. within a thread.
- The
info command provides information on the thread being debugged and the thread command switches between threads in debugging.
- Added support for user-defined commands.
- The debugger is renamed from
sst.interactive.simpledebug to sst.interactive.debugger.
- Profiling output is unified so that it can be written to stdout and or a file (text or JSON). Use the
--profiling-output flag to control the output destination and format. This includes data from profiling points, timing output (previously using the --print-timing-info flag), and resource usage.
- JSON configuration files (both input and output) now support statistics, PortModules and arbitrarily nested subcomponents.
Notable Bug Fixes
- Fixed error when using Python 3.14 with element python libraries.
- Fixed bug in serializing maps using the
SerOption::as_ptr_elem option. This resolves errors that showed up as intermittent checkpoint corruption. See sst-core issue #1592.
General updates, changes, and cleanup
- Support for the previously deprecated
TimeConverter pointers and non-checkpointable Handler types is removed.
- If the checkpoint prefix provided on the command line is not valid, SST will now fail immediately with an error.
BaseComponent::getSimulationOutput() is now static.
- Fixed various instances of uninitialized variables. These were not observed to be causing bugs but were fixed anyways.
- Support for Python 3.8 and older is removed.
- Changed links to have a globally unique identifier. This may cause a simulation output diff compared to SST 15.1 due to a one-time change in the sort criteria used to order events. The change supports repartitioned restarts and should broadly improve performance.
- Improved JSON parser performance and cleaned up JSON configuration output generator.
- The minimum supported autoconf version is now 2.69 when building from the repositories.
StatisticId_t is no longer derived from ComponentId_t.
- General code clean up including: reducing string copies, replacement of
lock_guard with scoped_lock, standardization such as =default; rather than empty default constructors/destructors.
- Improved dangling and unused link error checks.
- Added architecture and OS metadata to checkpoint manifest file.
- Added warning for types that are automatically serialized due to being trivially serializable but cannot be mapped for debug.
- Renamed
simulation_impl to simulation.
- Reorganized ConfigGraph files to a common location.
- Added a new sst_mpi.h file which contains wrappers for MPI functions and eliminates the need for checking whether MPI is present throughout the rest of the Core.
- Added ability to ignore configured library paths that include “_EXT_”. Intended for “extension” libraries that are used by components and loaded by SST-Core but do not, themselves, contain components. This fixed an issue where
sst-info would fail in dlopen on these libraries.
Testing Framework updates
- Deprecated functions were removed including many of the
host_os_* functions and type-specific functions that read variables from SST configuration files. Use Python-provided functions to query the OS type and use the generic configuration file reading functions instead. Additionally, OSCommand, os_simple_command are replaced by os_command.
- Fixed an MPI parameter that was incompatible with MPI 5.0.
- Fixed detection of the Rocky Linux OS.
- Added category decorators to control which subsets of tests run (pr, nightly, weekly).
SST-Elements
- General updates
- Several elements have experimental checkpoint support added (see individual element release notes). This means the element is checkpointable but we are not yet actively testing the infrastructure and so it is prone to breakage. Testing is anticipated over the next few months.
- The minimum autoconf version is now 2.69 if building from the repository source.
- balar
- Updated to operate solely on virtual addresses and let mmu/memHierarchy components manage address translation.
- carcosa
- This is a new element that supports fault injection and modeling in conjunction with Vanadis.
- cassini
- Added experimental checkpoint support.
- iris
- Made improvements to SUMI libfabric provider and overall robustness.
- memHierarchy
- TLBs (via the mmu library) can now be embedded in memHierarchy’s
StandardInterface instead of needing to be a separate component.
- Fixed a race condition between a directory data writeback and a scraptchpad shootdown.
- Fixed an issue where the last subcomponent in the
listener slot in caches did not get loaded.
- Added a hybrid backing mode for memory which combines a portion of memory backed using MMAP with a dynamically allocated range.
- mercury
- Ported application environment features from SST/macro to support simulated applications with increased complexity (e.g., pthreads).
- Significantly refactored the component class hierarchy.
- Fixed an issue that caused
sst-info to mistakenly attempt to dlopen some mercury support libraries. Installation of these libraryes was moved to SST_ELEMENT_LIBRARY_EXT_LIBDIR.
- merlin
- Added experimental checkpoint support.
- Fixed dragonfly topology’s
braodcast_to_groups to work for both absolute and relative global_route_mode.
- Fixed an off-by-one error in dragonfly group broadcast.
- Fixed merlin’s Python library System object to account for allocation_block_size when filling empty nodes with EmptyJob.
- miranda
- Added experimental checkpoint support.
- mmu
- Updated to work with memHierarchy as a TLB embedded in the memHierarchy interface.
- Cleaned up handling of page permissions.
- Added some serialization support but the library is not yet fully serializable (checkpointable).
- Renamed ports to match memHierarchy’s
highlink/lowlink nomenclature.
- Added missing parameter documentation.
- Cleaned up types for thread IDs, page numbers, and page permissions.
- Fixed hard-coded line size to instead detect the cache line size from memHierarchy.
- vanadis
- Cleaned up handling of page permissions.
- Cleaned up types for thread IDs, core IDs, and page numbers.
- Updated to always compile two versions of the vanadis element library, one with debug logging and one without. Components can be switched between the two by selecting the
vanadis or vanadisdbg library in the input configuration. All vanadis components in a simulation should come from the same version of the library. The debug version is slower while the performance version provides limited output. The Vanadis core is renamed from dbg_VanadisCPU to simply core, although both names will work in SST 16.0.
SST-Macro
- Updated for serialization,
Handler, and TimeConverter pointer changes in SST-Core.
- Updated cxxstd to 17.
- Fixed an issue when using Python 3.13+.
- As of SST 15.0, macro’s devel branch is no longer being kept in sync with sst-core’s devel branch. The master branches and releases will continue to be kept in sync. This means there may be times when the sst-macro and sst-core devel branches do not work together.
Current release information can be found here
We look forward to hearing your successes with the latest release!
SST Research and Product Teams
Sandia National Laboratories, USA