SST V11.1.0 Release Notes
The changes in v11.1.0 of the Structure Simulation Toolkit (SST) are divided into three areas: general, PDES-core and integrated elements.
General:
- SST v11.1.0 includes a number of bug fixes, performance improvements, and feature updates
- The SST contributing guide has been updated to provide more detail on the SST Core development and contribution process
- To enable future improvements in parsing, configuring, and error checking, SST 11.0 introduced naming conventions for various items that require names. In general, names must be legal Python variables. These conventions are encouraged in SST v11.x and will be enforced in SST 12.0.0. A detailed description of the new naming conventions can be found here.
- Apple Silicon: While this release does not include official support for Apple Silicon, initial testing of SST on the hardware has been successful. We are working on adding Apple Silicon to our supported platforms.
Deprecation Notice:
- Python 2.x support is deprecated and will be removed in SST 12.0.0.
- Zoltan support is deprecated and will be removed in SST 12.0.0.
SST-Core (PDES-Core):
- Performance optimizations were made throughout the event handling and delivery implementation to reduce overhead, memory usage, and speedup simulation.
- New SSTHandlerBase base class for event, clock, etc. handlers. See ssthandler.h for more details and usage.
- Added ELI inheritance capability to allow child classes to inherit ELI from their parent classes.
- Added output functions to StandardMem interface
- Generalized the model description parsing so that new model description handlers can be added more easily.
- A status summary of the optional parameters (e.g., Python version, OpenMPI enabled, MemPools on/off, etc.) has been added to the configuration output
- Clang-Format requirements have been added and are enforced on the Core codebase
- Updated README.md to include basic install instructions for CentOS/RHEL and Ubuntu.
- Eliminated use of libltdl in favor of dlopen
- Added JSON library and made various fixes to JSON output
- Added wall time tracking for each of the SST execution phases (init, run, complete)
- Added check to enforce that doubles generated by random number generators are in the range [0, 1)
- SST::RNG::SSTRandom was renamed to SST::RNG::Random
- Added ability to loopback a Link to the same port.
- Added versions of Link configuration functions that take a UnitAlgebra timebase.
- Added support for autoconf 2.71
- Bug fix to correctly generate CXX flags that are passed from SST-Core to SST-Elements (SST_EXPORT_CXXFLAGS)
- Fix to correctly handle compile flags for XCode 12.5+
- Added experimental command line option to enable direct links to other threads (i.e., events will not go through a SyncQueue before being inserted into the other threads event queue). This is enabled with –inter-thread-links=true. This mode will also reduce the number of barriers required at each synchronization point and may benefit the simulation of some models that use thread only parallelism.
- Added experimental TimeVortex implementation that bins events by delivery time and does the final sort in a just-in-time manner. This implementation can be used by adding
--time-vortex=sst.timevortex.map/binned
to the command line options (or in the input file in the program option section). Note: There is a known bug with the released implementation that exhibits in multi-thread runs that are not running with interthread links. This version of TimeVortex works correctly for serial runs and multithread runs with interthread links turned on.
- An experimental CMake buildsystem is available. It has not been tested with sst-elements and there are known deficiencies that will be addressed in future releases. For the best experience, we recommend using the existing build system as described in the SST installation instructions.
SST-Elements:
- Balar
- Fixed issue where some files were not included in the distribution.
- Pin 2.14 is no longer available and Balar does not work with Pin 3+. We are exploring alternatives.
- Ember
- Firefly
- MemHierarchy
- Fixed bug in writing data to scratchpad
- MemLinkBase SubComponents now clock themselves rather than relying on their parent components to clock them. This may lead to a difference in output statistics as the order in which the clocks are called may have changed in a given configuration.
- Fixed bugs in LLSC implementation and auto-configuration of cache policies
- Added support for experimental StandardMem interface. This includes auto-detection and enforcement of noncacheable memory address regions, support for MMIO communication, and support for device cache hierarchies. Two new test endpoints - standardCPU and standardMMIO were added as well as a number of tests.
- Enabled regular testing of Scratchpads
- Improved performance of CacheController
- Removed backwards compatibility for memory controllers that inherited their address mapping information from a directory rather than self-declaring. Memory controllers should use “addr_range_start”, “addr_range_end”, “interleave_step”, and “interleave_size” to declare their own parameters if needed (i.e., more than one memory controller in the simulation).
- Merlin
- Added additional checks to the initialization protocol
- Vanadis
- Reformat to match Core coding standards
- Added support for additional MIPS instructions
- Various performance enhancements
- Added endian checking
- Added additional statistics to count instructions executed
SST-Macro:
- Various bug fixes, cleanup, and minor enhancements
- Fixes for parallel MPI execution with SST Core. Threaded execution is currently unsupported. See user guide for details.
- Changes in standalone mode (with built-in core)
- No longer supports parallel execution. If this is desired, use with the SST Core. The user guide has been updated to reflect this change.
- Macro will not build in standalone mode on OSX with XCode 12.5+.
Known Issues (see open issues for repos):
Known incompatibilities:
- PIN
- Ariel Element requires PIN
- Prospero (Pin Feature) requires PIN
- memHierarchy Element (Sieve Feature) requires Ariel
- PIN 2.14
- PIN 2.14 is only supported on gcc 4.9 or earlier.
- SST-11 does support PIN 2.14 on OSX platforms
- PIN 3.17
- Balar will not run on PIN 3.17; it will only support PIN 2.14
- SST-11 does not yet support PIN 3.17 on OSX platforms
- NOTE: PIN 3.18 and higher does not compile correctly on SST.
- Ariel Element (Ivy Bridge Feature) does not run on OSX (NO PIN SUPPORT)
- Ariel Element (Sandy Bridge Feature) does not run on OSX (NO PIN SUPPORT)
- Ariel Element (Sandy Bridge Feature) is not multi-core compliant (Cannot run across multiple MPI ranks)
- Miranda Element (SingleStream Feature) is not multi-core compliant (Cannot run across multiple MPI ranks)
- Miranda Element (RandomGen Feature) is not multi-core compliant (Cannot run across multiple MPI ranks)
- Sirius Element (Zodiac 27 Feature) does not support serialization
- Zoltan 3.83 does not properly build on Ubuntu 18.04 - Zoltan support is deprecated and may be removed in a future release.
- Balar Element does not run on OSX (NO PIN SUPPORT)
Operating System / Compiler Combinations:
Release V11.1.0 (core and elements) has been built and tested with the following OS/compiler combinations.
- CentOS 7.7 with GCC 4.8.5
- CentOS 8.2 with GCC 8.2.1
- SNL RedHat 7.7 with GCC 4.8.5
- RedHat 8 with GCC 8.3.1
- TOSS 3.6-5.ch6 on RHEL 7.3 (Maipo) with GCC 7.1
- Ubuntu 18.04 LTS (64-bit) with GCC v7.3.0
- Ubuntu 20.04 LTS (64-bit) with GCC v9.3.0
- Mac OSX 10.14 (Mojave) with XCode 11.6 (LLVM)
- Mac OSX 10.15 (Catalina) with XCode 11.5 (LLVM)
- Mac OSX 11.6 (Big Sur) with XCode 12.5 (Intel)(LLVM)
- Mac OSX 11.6 (Big Sur) with XCode 13 (Intel)(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
- OpenMPI 4.0.5 (SST No longer supports OpenMPI V2)
- Optional
- DRAMSim2 2.2.2
- DRAMsim3 1.0.0
- NVDimmSim 2.0.0
- HybridSim 2.0.1
- Intel Pin Tool 2.14-71313
- Intel Pin Tool 3.17
- Zoltan 3.83 - Zoltan support is deprecated and may be removed in a future release.
- 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)
- sst-gpgpusim-external (v1.1)
Elements not in release:
Although available from the devel and master branches, the following elements are not provided in this release:
Fixed Issues and Significant Code Changes (Pull Requests) in this Release:
- 625 SSTRandom should be named Random
- 628 Enable loopback links on a port
- 629 Define bounds of SSTRandom nextUniform
- 634 Fix ill-formed JSON output
- 643 Global Const Objects
- 645 Error during configuration step
- 650 clangformat declaration file broken for pre clang-11 builds
- 652 clang-format-12 reveals 13122 code formatting escapes
- 653 autogen.sh on RHEL 7 fails. And documentation for the fix is difficult to find
- 655 Outputting JSON configuration results in Gibberish/Segmentation Faults
- 664 memory ownership in objectComms.h
- 671 Clang format script isn’t working
- 674 Clang format script requires clang-format be in the path
- 675 Missing include in timeConverter.hpp
- 678 Git conflict markers in the new issue form
- 679 SST_EXPORT_C*FLAGS joins flags together
- 680 Do not assume that glibc is in the libc
- 681 sst-test-core doesn’t detect python name
- 704 CMake build doesn’t work with old git
- 705 Cmake build breaks when git is in detached head state
- 706 Centos 7 build instructions in readme need zlib-devel installed
- 707 cmake misses header install
- 710 CMake build should block in source builds
- 711 CMake build should error if autotools build artifacts are present
- 713 Clang-format issues with <> includes
- 723 Macro can’t build with sst-core cmake
- 729 Macro testing requires using names reserved for sst-elements
- 732 SST Configuration Graph Output Using JSON Contains Misspelled Node
- 737 configure should show status of optional features
- 738 statengine stoptime reads wrong string
- 562 help with xpressring topology tutorial
- 581 Idiomatic cleanup of clang/LLVM code
- 614 Are there any examples of MPI+Pthreads in SST-Macro?
- 615 How to add parameters to global namespace when using the integrated SST-Core?
- 616 Clarification on latency and bandwidth parameters between pisces and logp switch
- 617 Segmentation fault when running test with start topology
- 618 Trouble reading MPI parameters
- 619 Segmentation fault during MPI_Scatter with large buffer
- 623 Multiprocessor simulations fail with sst-core using .ini files.
- 625 Algorithm implementation for MPI_Reduce and MPI_Allreduce?
- 626 Compilation error when trying to use Ariel element library with SST/macro
- 628 Algorithm implementation for MPI_Wtime?
- 631 Remove fined_scoped_params
- 632 MPI parallel simulations are incorrect (standalone)
- 633 how to use routing table in sst-macro?
- 636 NetworkMessage serialization is broken
- 637 Update documentation to reflect removal of standalone parallel simulation support
- 638 All mpi tests fail for sst-core parallel simulation with more than 2 ranks