Skip to main content

SST Elements

SST Element libraries contain components, subcomponents, modules, and other SST objects that can be used to build a simulation.

SST Community Libraries

The pages in this area describe the libraries available from the SST project. Many other libraries are available, check out the community page.

SST Project Libraries

Most SST-provided element libraries are located in the sst-elements repository, though a few are in separate repositories. The libraries range from early-stage models with limited functionality to those that are mature and extensively tested. In addition, we categorize elements by development activity and planned trajectory ("development path").

SST elements are categorized according to maturity and development path.


Maturity Reliability Testing Documentation
Early Development (1) An element in its initial stages of development. "Alpha" quality. May be unreliable. The APIs and behavior of the element may change and the element should not be considered stable yet. Configurations outside those tested may fail to work. None required. Tests may produce unreliable and/or unreproducible results. None required.
Prototype (2) The element's basic functionality is in place, but many features are still being developed. The element is usable within tested configurations but may not work outside of those. "Beta" quality. Somewhat reliable. APIs and implementations may change suddenly as development progresses. Bugs may be encountered outside of tested configurations. Required. Passes basic functionality testing. Builds reliably as part of overnight project builds. Required. Documentation may be limited to a statement of the element's use and behavior.
Mature (3) The element's major capabilities are stable, reliable, and reasonably well-tested although performance enhancements, validation, and new features may be on-going. Reliable. The element's major features are stable, tested, and in some cases, validated. Major and/or breaking changes are communicated to users in advance (e.g., deprecation warnings, release notes, etc.). Required. Has undergone substantial capability testing. Builds reliably as part of overnight project builds. Required. More extensive than that of prototype elements.

sst-info

All Element libraries, whether provided via the SST repos or from the community, export certain Element Library Information (ELI) that can be queried at the command line using the sst-info utility. This information includes a basic description of each element (i.e., component, subcomponent, module, etc.) within the library as well the parameters, statistics, and ports available for the element. Elements that implement interfaces (e.g., subcomponents, modules, etc.) also declare which interface they implement. The documentation here supplements sst-info's basic information and provides context, implementation details, and configuration hints.

SST-Elements Repository Structure

The root directory of sst-elements contains a number of subdirectories as well as a brief README, License, and contributor information. The element source code lies in the sst-elements/src/sst/elements subdirectory. Each library has its own directory in this location. Generally, it is the convention for libraries to include their set of tests in a tests subdirectory.

SST Elements

Elements range from experimental to mature. Most of the elements below reside in the sst-elements repository, but a few are in standalone repositories. All are available via the sstsimulator repositories while only the "released" libraries are available from the release tarballs.

Examples

Element NameMaturityDev PathLast ReleaseDescription
simpleElementExample3Active13.1Examples for building, running, parameterizing, etc. simulations and elements
simpleExternalElement3Active13.1Example of an element library external to the sst-elements repository
simpleSimulation3Maintenance12.1Example simulation components that simulate cars going through a carwash

Network Endpoints

These models are generally used to drive networks at system scales where detailed cycle-level processor modeling become prohibitively time-consuming.

Element NameMaturityDev PathLast ReleaseDescription
ember3Active13.1Communication motifs for network simulations
firefly3Active13.1Low-level communication protocol for use with system network simulations
hermes3Active13.1Interface to message passing functions for system network simulations
macro3Maintenance13.1Simulation of coarse-grain distributed memory applications
mercury1Active13.1Support for workload/application models
thornhill1Maintenance13.1Support library for detailed endpoint models in Ember
zodiac1Maintenance13.1Trace-based endpoints for network simulation

Networks

Element NameMaturityDev PathLast ReleaseDescription
kingsley2Active13.1Simulates a mesh network-on-chip
merlin3Active13.1Router model with flexible topology modules to simulate networks.
shogun2Active13.1Provides a simple crossbar model

Processors

Element NameMaturityDev PathLast ReleaseDescription
ariel3Active13.1Dynamic trace-based model leveraging PIN to execute x86 binaries
balar2Active13.1GPU component based on GPGPU-Sim
gensa1ExperimentalNeverNeuromorphic processor
juno2Maintenance13.1Example pipeline processor model with a custom ISA
llyr1ActiveNeverA spatial compute accelerator model
miranda3Active13.1Processor driven by a state machine to generate memory instructions
prospero2Active13.1Processor that reads a trace from file
serrano1ExperimentalNeverCoarse-grain reconfigurable processor model
vanadis2Active13.1Core pipeline model supporting RISC-V and MIPS

Cache and Memory System

Element NameMaturityDev PathLast ReleaseDescription
cacheTracer1Maintenance13.1Intercepts cache accesses for observation
cassini2Active13.1Prefetchers and other memory system plug-in modules
cramSim2Maintenance13.1Memory model from IBM - DDR, HBM
memHierarchy3Active13.1Memory system components including caches, directories, and memory controllers and models
messier2Active13.1Provides a detailed model for NVM-based DIMMs with high-end internal controller
mmu1Active13.1A basic TLB/MMU implementation that works with Vanadis
opal1ActiveNeverMemory allocation support for multi-node simulations using Ariel
rdmaNic1Active13.1Facilitates RDMA in conjunction with Vanadis
samba2Maintenance13.1A detailed memory management unit (MMU) model
vaultsim3Maintenance13.1Models a vaulted memory architecture

Other/Miscellaneous

Element NameMaturityDev PathLast ReleaseDescription
osseous1ActiveNeverSupports generation of SST components from RTL via Essent