SST V13.0.0 Release Notes
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.
Known Issues (see open issues for repos):
Known incompatibilities:
- PIN
- Ariel Element requires PIN
- Prospero’s trace generator requires PIN
- memHierarchy’s Sieve component requires Ariel (and by extension, PIN)
- PIN 3.26
- Intel does not support PIN 3.26 on OSX platforms
- Sirius Element (Zodiac 27 Feature) does not support serialization
- Element tests with too few components are not run in parallel (e.g., a test with one component is not run in our multi-threaded or multi-rank tests).
Operating System / Compiler Combinations:
Release V13.0.0 (core and elements, including macro) has been built and tested with the following OS/compiler combinations.
- Rocky 8 with GCC 8.5.0
- SNL RedHat 8 with GCC 8.3.1
- TOSS 4.3-4 with GCC 8.5.0
- Ubuntu 20.04 LTS (64-bit) with GCC 9.3.0
- Ubuntu 22.04 LTS (64-bit) with GCC 11.2
- Mac OSX 12.2 (Monterey) with XCode 13 (Intel)(LLVM)
- Mac OSX 12.2 (Monterey) with XCode 13 (ARM)(LLVM)
- Mac OSX 13 (Ventura) with XCode 14 (ARM)(LLVM)
External Components:
External components and the compatible version numbers are listed below. Other versions may work, but these have been tested with this release.
- Required
- Recommended
- Optional
- DRAMSim2 2.2.2
- DRAMsim3 1.0.0
- NVDimmSim 2.0.0
- HybridSim 2.0.1
- Intel Pin Tool 3.26
- HDF5 1.10.5 or greater
- Goblin HMC Simulator Version:sst-8.0.0-release
- HBM Dramsim2 Version:hbm-1.0.0-release
- Ramulator SHA 7d2e723
- Nvidia CUDA SDK 8.0.61/9.1.45 (For Balar Component)
Elements not in release:
Although available from the devel and master branches, the following elements are not provided in this release:
- GNA
- llyr
- Opal
- osseous
- Serrano
- SimpleSimulation
Fixed Issues and Significant Code Changes (Pull Requests) in this Release:
- 946 Updated mempool_overflow test to only run during single rank tests
- 941 Removing duplicate sstpart.h file
- 940 Fix binary_function warning
- 939 Removed deprecated functions for 13 and added deprecated function to be removed in 14.
- 937 Fixing issue with cmake builds post PR #930
- 935 Fix unit to int in getMemPoolUsage
- 934 [mempools] sst-core fails to build when using –disable-mempools
- 932 CMake builds fail following PR #930
- 930 Lib order fix
- 928 Fixed configio tests for case where MPI was disabled in build
- 927 Python 3.11 cpython libpath error
- 923 adding requirement for C++ 17 in SST-Core CMake infrastructure
- 922 CMake Build Infrastructure Broken: Requires CXX17 Support
- 921 Improve thread safety of Output::fatal()
- 919 Add better error in python detection, fix stringize compile warning
- 917 Move to C++17
- 916 Fixed compilation with –disable-mem-pools configured. Fixes #914
- 914 Compilation Error –error: ‘event_dump_file_’ was not declared in this scope
- 911 Update build to require Python 3.6+
- 909 Bug fixes
- 907 baseComponent: Move some non-public functions to private/protected
- 904 Added flag to enable cache-alignment of objects allocated out of mempools
- 903 Stats thread fix
- 902 BaseComponent::sst_assert and BaseComponent::fatal can invoke buffer overflow if message is too long
- 900 cmake builds
- 899 Threads will now construct simulation objects in parallel
- 897 Fix clock functions and add Python unit algebra to links
- 894 adding fix for Issue #886; getSuccess would always return true
- 891 Updated python interpreter intialization code for new API.
- 886 Responses with F_FAIL are reported as successful
- 2114 MMU: fix TLB bug (mmu)
- 2113 MMU: fix compiler warnings (mmu)
- 2109 Removed use of deprecated functions from ariel, ember, firefly, kingsley, mercury, rdmaNic and vanadis (multiple)
- 2108 Updated memH to remove use of deprecated functions. (memHierarchy)
- 2107 Remove deprecated functions from merlin (merlin)
- 2106 Vanadis: cleanup up compiler warnings(vanadis)
- 2105 Remove deprecation warnings for GNA, miranda, mmu, osseous and serrano (multiple)
- 2104 Vanadis: fix compiler warnings (vanadis)
- 2103 Vanadis: fix compiler warnings (vanadis)
- 2101 Vanadis: Fix some compiler warnings (vanadis)
- 2100 Added int mul latency. (llyr)
- 2097 Update VaultSimC, ariel, cacheTracer, cassini, prospero, shogun and thornhill to remove deprecated functions. (multiple)
- 2096 Updated CramSim, Opal and Samba to remove use of deprecated functions (multiple)
- 2093 Changed stopAtCycle to stop-at in input python files (multiple)
- 2092 Vanadis: Cleanup the Vanadis OS syscall handler (vanadis)
- 2086 Add Pin 3.26 Compaibility, remove Pin 2 support (ariel, prospero)
- 2085 Vanadis: Remove CPU de-clocking code (vanadis)
- 2084 Vanadis: Template the OS Handler (vanadis)
- 2083 MH: Fix missing symbol in goblin hmcsim; remove dmaEngine from ELI (memHierarchy)
- 2082 Vanadis: cleanup debug (vanadis)
- 2081 [llyr] Update for SC (llyr)
- 2080 Vanadis: fix mprotect bug (vanadis)
- 2079 Vanadis Clang suppport (vanadis)
- 2078 Update Balar with mmio interface (balar)
- 2077 Vanadis: move to 1 physical register set per CPU (vanadis)
- 2076 Vanadis (vanadis)
- 2074 Vanadis (vanadis)
- 2073 Vanadis (vanadis)
- 2072 Vanadis (vanadis)
- 2071 Kill child process in finish phase if it is still running (ariel)
- 2070 [Ariel] The child process is not killed when the simulation is ended with –stop-at (ariel)
- 2069 Additional use of POD Types for Vanadis Instructions (vanadis)
- 2068 Eliminate sprintf deprecation warnings (multiple)
- 2067 Memh: LL/SC forward progress fix (memHierarchy)
- 2065 Vanadis (vanadis)
- 2064 Updated merlin python so you can get a handle to the loaded module from a platform file (merlin)
- 2062 Updates to Vanadis (vanadis)
- 2059 Initial version of support for dragonfly topology with more than one link between switches in a group. (merlin)
- 2057 Minor fixes for compile warnings, ember typo, update config output (multiple)
- 2055 Vanadis (vanadis)
- 2053 Add support for exponential and trace models to emberBFS (ember)
- 2050 Update tricount readme (ember)
- 2049 Vanadis (vanadis)
- 2047 Vanadis RISCV decoder fix (vanadis)
- 2045 Vanadis (vanadis)
- 2044 Tricount improvements and bug fixes (data requests based on edges) (ember)
- 2041 Vanadis (vanadis)
- 2040 add rdcycle assembly instruction support (vanadis)
- 2039 Vanadis (vanadis)
- 2038 add tricount motif (ember)
- 2036 MH (memHierarchy)
- 2035 Vanadis (vanadis)
- 2032 Vanadis bug fix (vanadis)
- 2030 Vanadis (vanadis)
- 2029 Vanadis (vanadis)
- 2026 Vanadis (vanadis)
- 2025 Accuracy versus Speed Trade for Vanadis Instruction Loads and Caching (vanadis)
- 2024 Vanadis fix (vanadis)
- 2022 Vanadis LSQ bug fix (vanadis)
- 2021 Fix RdmaNIC to work with Vanadis VM (rdmaNIC)
- 2020 Vanadis get RISCV stream-fortran to pass (vanadis)
- 2019 update mercury build.sh (mercury)
- 2018 Vanadis vm merge (vanadis)
- 2015 SubComponent example and a few minor fixes (simpleElementExample)
- 2013 SimpleElemEx: New simulation lifecycle example (simpleElementExample)
- 2011 memH: Fix issue where time can appear to move backward at the end of parallel sims (memHierarchy)
- 2009 memH: Re-enable LLSC testing with updated ref files (memHierarchy)
- 2008 fix nullptr check in ember, addresses issue #2007 (ember)
- 2007 Ember engine uses subcomponent ptr before checking is non-null (ember)
- 2001 memH: Temporary change to ignore llsc_success stat so Core PR can merge (memHierarchy)
- 1999 memH: Fix bug in LLSC (memHierarchy)
- 1998 fixing merlin linkcontrol parameters for memHierarchy.memNIC (memHierarchy)
- 1996 Samba: increase test timeout (Samba)
- 1916 memNIC passes the wrong parameters to linkcontrol (memHierarchy)
- 689 fix python parameter handling when building with SST-Core
- 688 make configure recognize “arm” as a valid host_cpu for arm64/aarch64