SST v15.0.0 Released
SST v15.0.0 is now available and can be downloaded here
Highlights of the feature enahcements in both SST-Core and SST-Elements are:
General
- Checkpoint/restart support has been expanded and the APIs are now stable. Major changes from the 14.x series include support for checkpointing all standard library containers as well as pointers to containers, changes to the checkpoint output directories, and support for checkpointing StandardMem and SimpleNetwork interfaces.
- The following element libraries have partial checkpoint support. See individual release notes for details.
- memHierarchy
- simpleElementExample
Balar
(GPGPUsim) is reintroduced and is now integrated with the Vanadis RISC-V CPU model. The prior integration with Ariel via Pin2 is removed.
- The new
golem
element library provides an accelerator modeling array-based in-situ computing. It can optionally use the CrossSim simulator.
Deprecation and Removal Notices
- The
ser &
and ser |
operators are deprecated. Use SST_SER
instead.
- Use of shared TimeConverters (via pointers returned from Core API functions) is deprecated. Core APIs that accepted a
TimeConverter*
have been updated to accept a TimeConverter
instead. In SST 16.0, Core APIs that return TimeConverter pointers will be changed to return a TimeConverter instance instead. To prepare for this switch, change code to construct a local TimeConverter instance from a returned TimeConverter pointer as shown.
// Old code
TimeConverter* tc = registerClock(...);
// New code
TimeConverter tc = registerClock(...);
- In SST input files, GlobalParams have been renamed to SharedParams to reflect the fact that they can be shared among elements but are not “global” as there can be multiple groups of SharedParams that are not shared across all elements.
- Reminder: The Event::Handler and Clock::Handler handler types were deprecated in SST 14.0. Use Event::Handler2 and Clock::Handler2 instead.
- The Handler signatures will be switched to match Handler2 in SST 16.0.
- The name Handler2 will be deprecated at SST 16.0 and removed in SST 17.0.
- Update all elements to use the new signatures before or at SST 16.0. Switching before SST 16.0 will require changing (
Handler<class>
-> Handler2<class,&class::callback_function>
) prior to SST 16.0 and then to (Handler<class, &class::callback_function>
) after 16.0. Waiting until SST 16.0 to switch will cause your code to break in SST 16.0 until you change the definition of (Handler<class>
-> Handler<class, &class::callback_function>
).
- SST-Macro is a maintenance-only development effort. Due to increasing divergence between the SST-Core and SST-Macro, we will no longer be ensuring that the SST-Core and SST-Macro devel branches stay in sync. However, we will continue to ensure that the master branches and releases of SST-Macro work with SST-Core. Where possible, we recommend using the mercury element instead of SST-Macro. If mercury is missing key functionality present in SST-Macro that is not found elsewhere in SST-Elements, please let us know.
Known Issues
- The OpenMPI 4.1.1 available through Rocky Linux and other OS distributions masks SST’s error return codes which causes some SST tests to fail. A workaround is to use OpenMPI 4.1.6.
SST-Core
New Features
- Added ability to alias element names using
SST_ELI_REGISTER_ALIAS
- Added a CacheFlush instruction to the StandardMem interface
- A new element type, PortModule, can attach to a port on a component and inspect, modify, or delete events sent or received through that port.
- Added support for statistics in JSON input files
- A new FileSystem utility class was added - see note below under “bug fixes”
- Added a RealTimeAction for InteractiveConsole, allowing users to configure SST to drop into a interactive console on when SST receives a signal.
- Expanded serialization support to include:
- All standard containers
- Pointers to standard containers
- SST::Interfaces::StandardMem and SST::Interfaces::SimpleInterface
- A new
SST_SER
macro replaces serialization using ser &
and ser |
. The macro accepts flags describing how an object should be serialized and/or mapped (e.g., SerOption::as_ptr
, SerOption::nomap
).
- Added new SST options to control checkpoint directories and names.
Bug Fixes
- Fixed issue where the –output-directory parameter had no effect on files generated by SST-Core. Statistics and checkpoints now use this directory. In addition, a FileSystem class was added that contains utility functions for managing files in the output directory.
- Fixed a bug with two different parameter names used for the same thing in statistics: the parameter resetOnRead should be resetOnOutput.
- Fixed bug where sst-info would not generate output if a specific element was searched
- Fixed issue where UnitAlgebra::trim() could read past the end of a 0-length string
- Fixed issue where SST options did not correctly parse times given in seconds but greater than 1 minute (e.g., 90s). Note that this fixes seconds only: times in minutes but greater than 1 hour will not parse correctly.
- Fixed several memory leaks discovered using Valgrind
General updates, changes, and cleanup
- The checkpoint API is now stable; future changes will include a deprecation period with backwards compatibility
- Added an AttachPoint concept to consolidate ProfilePoints with the new PortModule type.
- Numerous code cleanup, modernization, and style changes
- SST-Core is now using clang-format v20 instead of v12
- Memory optimization: updated Statistics classes so that statistics that are not enabled consume significantly less memory while enabled statistics consume slightly less memory
- Memory optimization: The config graph is now deleted properly after simulation construction
- Updates to work with Python 3.13
- Added an include guard to sst_config.h. The file is not yet included in SST-Core headers so developers should continue to include the file in elements. However, it may now be included safely in headers.
SST-Elements
- New libraries
- golem models array-based in-situ computing and can optionally integrate with CrossSim
- balar is reintroduced and integrated with the Vanadis RISC-V model
- General updates
- Numerous code clean up and modernization updates
- Added an include guard to sst_element_config.h
- ariel
- The old integration with balar is removed
- Added latency tracking statistics
- Changed build to install libarielapi.so as part of the sst-elements install
- Fixed issue with libarielapi and mpi-related files when building out of source
- balar
- SST 15.0 re-releases balar as an integration with the Vanadis RISC-V model
- Added support for using balar as an mmio device in a Vanadis simulation
- Balar creates a custom CUDA runtime lib to run CUDA programs with Vanadis
- New example to compile CUDA source code into RISC-V + CUDA to run with Vanadis + Balar
- Added more CUDA runtime APIs to support rodinia-2.0 benchmark
- Added CUDA stream APIs to support the basic simpleStreams example from cuda-samples
- Support for cudaMemcpyAsync and launch kernels in different streams
- Redesign of balar frontend handling and callback functions from GPGPU-Sim
- Now there is a light-weight “stream manager” in balar to track kernel calls and memcpy pushed to GPGPU-Sim
- Callbacks to balar in GPGPU-Sim now will be handled by a single function in balar
- Redesigned dmaEngine to support multiple concurrent DMA copies with overlapping memory range check
- Added more unit test tests under different testsuites based on test runtime.
- ember
- Extended the OTF2 motif in Ember so that it can read the global string definitions from an OTF2 trace into memory.
- memHierarchy
- Added CacheFlush instruction which flushes the entire cache. Simulations can also now be configured to flush caches at shutdown and write out the contents of memory.
- Added checkpoint support for the following elements: Bus, MemLink. MemNIC, standardInterface, MemController (without the backing store), and standardCPU
- Added ability to read memory contents during SST’s init() phase (write was already supported).
- Code cleanup and removal of unused parameters
- Standardized port names across all elements in memHierarchy
- Ports leading towards a processing unit are named “highlink”. For components with multiple ports, the names are “highlink0”, “highlink1”, etc.
- Ports leading towards memory are named “lowlink”. For components with multiple ports, the names are “lowlink0”, “lowlink1”, etc.
- Components such as MemNIC with a single port that can go in either direction are simply named “port”
- Added support for Ramulator2 as a backend
- Removed support for DRAMSim2 and associated backends including NVDIMMSim, HybridSim, and HBMDramSim2. The backends still exist in the code in this release but will no longer be tested.
- mercury
- Significant code clean up, modernization, and debug improvements
- Fixed issue with packetization
- Added TLS to support variable privatization
- Added delay modeling
- There is a known race that occurs occasionally when SST is running with multiple threads. This will be fixed in a future release.
- merlin
- Fixed memory leak with insufficient send credits
- Fixed some typos in pymerlin
- miranda
- Eliminate high-overhead dynamic_cast
- simpleElementExample
- Fixed crash that occurred during checkpoint of example subcomponents
- vanadis
- Refactored VanadisInstruction, VanadisBasicLSQ, and decoder classes to improve code reuse and readability as well as support future SIMT pipeline capabilities.
- Added support for getcpu, sched_yield, hw_probe, and get/setaffinity syscalls
- Added OpenMP testing and examples
- Added a RoCC interface
- Added support for balar integration
SST-Macro
- As of this release, 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.
- Updated for LLVM 18
- Various updates to work with sst-core’s updated serialization capabilities.
- There is a known issue compiling SST-Macro with Python 3.13+. This will be fixed in a future release.
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