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
- 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. |
In addition to a maturity level, elements belong to one of the following development paths.
Experimental: A unique, "one-off" or experimental implementation that is not necessarily intended to be part of SST long-term. No elements in other development paths may rely on experimental elements. These elements are considered "unsupported".
Active: An element that is actively being maintained, enhanced, and developed.
Maintenance: An element that is not currently under active development but is still maintained and tested regularly. Occasional feature updates and bug fixes will be made to ensure the element continues to function. This does not imply end-of-life.
Deprecated: An element that is end-of-life. Once deprecated, an element is subject to removal in future releases.
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 Name | Maturity | Dev Path | Last Release | Description |
---|---|---|---|---|
simpleElementExample | 3 | Active | 14.0 | Examples for building, running, parameterizing, etc. simulations and elements |
simpleExternalElement | 3 | Active | 14.0 | Example of an element library external to the sst-elements repository |
simpleSimulation | 3 | Maintenance | 12.1 | Example 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 Name | Maturity | Dev Path | Last Release | Description |
---|---|---|---|---|
ember | 3 | Active | 14.0 | Communication motifs for network simulations |
firefly | 3 | Active | 14.0 | Low-level communication protocol for use with system network simulations |
hermes | 3 | Active | 14.0 | Interface to message passing functions for system network simulations |
iris | 1 | Active | 14.0 | Communication middleware targeting the Mercury simulation environment |
macro | 3 | Maintenance | 14.0 | Simulation of coarse-grain distributed memory applications |
mask-mpi | 3 | Active | 14.0 | An MPI implementation which targets the SUMI (see Iris) interface |
mercury | 1 | Active | 14.0 | Support for workload/application models |
thornhill | 1 | Maintenance | 14.0 | Support library for detailed endpoint models in Ember |
zodiac | 1 | Maintenance | 14.0 | Trace-based endpoints for network simulation |
Networks
Element Name | Maturity | Dev Path | Last Release | Description |
---|---|---|---|---|
kingsley | 2 | Active | 14.0 | Simulates a mesh network-on-chip |
merlin | 3 | Active | 14.0 | Router model with flexible topology modules to simulate networks. |
shogun | 2 | Active | 14.0 | Provides a simple crossbar model |
Processors
Element Name | Maturity | Dev Path | Last Release | Description |
---|---|---|---|---|
ariel | 3 | Active | 14.0 | Dynamic trace-based model leveraging PIN to execute x86 binaries |
balar | 2 | Active | 14.0 | GPU component based on GPGPU-Sim |
gensa | 1 | Active | 14.0 | Neuromorphic processor |
juno | 2 | Maintenance | 14.0 | Example pipeline processor model with a custom ISA |
llyr | 1 | Active | Never | A spatial compute accelerator model |
miranda | 3 | Active | 14.0 | Processor driven by a state machine to generate memory instructions |
prospero | 2 | Active | 14.0 | Processor that reads a trace from file |
serrano | 1 | Experimental | Never | Coarse-grain reconfigurable processor model |
vanadis | 2 | Active | 14.0 | Core pipeline model supporting RISC-V and MIPS |
Cache and Memory System
Element Name | Maturity | Dev Path | Last Release | Description |
---|---|---|---|---|
cacheTracer | 1 | Maintenance | 14.0 | Intercepts cache accesses for observation |
cassini | 2 | Active | 14.0 | Prefetchers and other memory system plug-in modules |
cramSim | 2 | Maintenance | 14.0 | Memory model from IBM - DDR, HBM |
memHierarchy | 3 | Active | 14.0 | Memory system components including caches, directories, and memory controllers and models |
messier | 2 | Active | 14.0 | Provides a detailed model for NVM-based DIMMs with high-end internal controller |
mmu | 1 | Active | 14.0 | A basic TLB/MMU implementation that works with Vanadis |
opal | 1 | Active | Never | Memory allocation support for multi-node simulations using Ariel |
rdmaNic | 1 | Active | 14.0 | Facilitates RDMA in conjunction with Vanadis |
samba | 2 | Maintenance | 14.0 | A detailed memory management unit (MMU) model |
vaultsim | 3 | Maintenance | 14.0 | Models a vaulted memory architecture |
Other/Miscellaneous
Element Name | Maturity | Dev Path | Last Release | Description |
---|---|---|---|---|
osseous | 1 | Active | Never | Supports generation of SST components from RTL via Essent |