SST v13.0.0 Released
SST v13.0.0 is now available and can be downloaded here
The SST 13.0.0 release contains several performance enhancements and functionality improvements. A selection of the improvement highlights are:
General
- SST has moved to C++ 17
- The SST MemPool implementation has been re-architected to improve performance
- The Balar and Vanadis element libraries have had significant enhancements, see release notes below for details
Deprecation and Removal Notices
- Python 2 support has been removed in SST 13 following its deprecation in prior releases.
- The Simulation class has been deprecated as a public API and will be removed in SST 14, which has the following impacts:
simulation.h
has been deprecated and will be remove in SST 14
BaseComponent::getSimulation()
is deprecated and will be removed from public APIs in SST 14. Elements should use functions directly available through the Component/SubComponent/etc. APIs instead.
- SST Core functions deprecated in SST 12 were removed, including
getFinalSimTime()
, requireEvent()
, SST::to_string()
, and the variant of loadModule()
that did not require a Module API.
sendInitData()
and recvInitData()
have been deprecated in both the Link and SimpleNetwork APIs. Equivalent functions sendUntimedData
and recvUntimedData
should be used instead.
- The transition to requiring Modules to register the Module API they implement is complete. The
SST_ELI_REGISTER_MODULE
macro now requires an API class name and should be used to register modules. The temporary SST_ELI_REGISTER_MODULE_DERIVED
macro is deprecated.
- The transition to requiring SubComponents to register the SubComponent API they implement is complete. The
SST_ELI_REGISTER_SUBCOMPONENT
macro should be used to register subcomponents and the temporary SST_ELI_REGISTER_SUBCOMPONENT_DERIVED
macro is deprecated.
- Use of
Simulation::getSimulation()
by Elements is deprectated
SST-Core (PDES-Core)
- Updated build to use C++17 and require Python >= 3.6
- The deprecated header file rng/sstrng.h was removed
- The duplicated header file part/sstpart.h was removed. This duplicated sstpart.h.
- Fixed an issue where finding Element libraries through sst-info, the SST bootstrap code and the SST factory could have slightly different search paths resulting in finding different libraries. Library search paths now use the same ordering.
- Improved thread safety of
Output::fatal()
- Changed MemPool size reporting to use signed integers since negative counts are possible if there are more frees than mallocs on a given thread with the new MemPool implementation
- Re-architected MemPools to minimize thread contention on shared bookkeeping structures
- Added configuration option to require MemPools to cache-align allocations
- Improved error reporting when Python is not found correctly during configure
- Fixed bug in simulation build when using threads and MPI
- Fixed capability that enables printing un-deleted events at simulation end
- Some statistic registration and query functions that were not part of BaseComponent’s public API but were in a public section of the header were moved to protected or private sections.
- Added “on” and “off” to the set of strings accepted for Boolean configuration options
- Fixed bug in format_string stringize.h that could lead to buffer overflows
- Changed StatsEngine from a singleton to a per-Simulation object resourecs. StatOutputs are still stored in static data structures and are per MPI rank. The change fixes errors in statsitcs gathering and output for threaded executions.
- Fixed bug in
BaseComponent::getNextClockCycle()
which allowed returning an incorrect time in some instances
- Fixed clock adjustment at simulation end so that all clocks reflect the corrected end time
- Added ability to use UnitAlgebra in Python link configuration
- Fixed bug in
StandardMem::getSuccess()
that returned incorrect value
SST-Elements
- Added support through Pin 3.26 for Ariel & Prospero. Began removing support for Pin 2.14.
- Ariel
- Added fix to kill the child PIN process during SST’s finish() phase if it did not already exit
- Added support for IO redirection for the traced process
- Balar has undergone significant updates. It runs with Vanadis/MIPS and as a standalone GPU model ingesting traces. Work to support Vanadis/RISCV is underway.
- Ember
- Added support for exponential and trace models to the BFS motif
- Added tricount motif
- MemHierarchy
- Fixed missing symbol in HMCSim backend
- Fixed bug where StoreConditional requests weren’t detected correctly
- Fixed handling of locked lines in the coherent L1 cache
- Added parameter to allow a cache to temporarily lock a load-linked line to improve forward progress on LL/SC
- Removed dmaEngine from ELI for now since it is non-functional
- Merlin
- Updated merlin python to provide a handle to the loaded module from a platform file
- Added support for dragonfly topologies with more than one link between switches in a group
- SimpleElementExample
- Added examples of creating, loading, configuring, and using SubComponents
- Added example demonstrating the SST lifecycle
- Vanadis
- Added virtual memory support via new mmu element library
- Supports multicore configurations, threads and processes
- Added syscall support: clone, fork, fstat, fstatat, getaffinity, getrandom, prlimit, readlinkat, setrobustlist, madvise, rt_sigprocmask, rt_sigaction, sched_getaffinity, statx
- Added support for hardware threading
- Substantial bug fixes, performance enhancements, general clean up
SST-Macro
- Fixed issue in configure for ARM architectures
- Various minor fixes to support changes in SST Core
- SST-Macro does not run in standalone mode (i.e., without SST-Core) on OSX under some versions of XCode 13. XCode 13.4.1 is known to work, XCode 13.2.1 does not work. We do not anticipate fixing this as the issue does not appear to be an issue in XCode 14.
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