Fast and scalable system simulation
A modular, scalable,
cross-platform simulation framework for research, prototyping, and more.
Extensible
Extensiblity is a cornerstone of SST. Integrate new models, wrap existing non-SST models, and even extend the simulation engine (SST-Core) itself - all without modifications to existing infrastructure. Create your extensions (elements) in a shared library, register it with SST-Core and your extensions are available for use alongside the built-in capabilities.

Multi-scale
Understanding gate-level performance and observing the impact of new scheduling algorithms on system job queues over time require very different timescales. Further, some models are abstract, capturing high-level application or hardware behaviors, while others are cycle-accurate, or at least approximate, simulating individual flits traveling through a network for example. SST supports simulation across all these scales, and even allows mixing scales and models at different levels of abstraction within a single simulation.
Open-source
SST carries a permissive open-source license and is available both from release tarballs and the sstsimulator GitHub repositories.
The Platform
SST-Core: a high-performance parallel discrete event simulation engine
SST can run serially or in parallel, across hundreds of machines with tens of cores each or on a standalone laptop. Performance evaluations have shown that SST can scale to simulate millions of objects (elements or more specifically, "components" in SST terminology) and operate efficiently across hundreds of CPUs.
SST-Elements: a modular modeling ecosystem for customized simulations
In SST, the user defines a simulated system by combining building blocks (elements) from libraries of available models. This makes it possible to create and modify simulations in a piecewise fashion and easily reuse models in many different simulations. While the SST-Core framework itself is domain-agnostic, the set of libraries provided with SST (SST-Elements) is comprised largely of elements for computer architecture modeling. Using these elements, you might simulate a simple single-core processor by combing a CPU element, a cache element, and a memory element. You could also reorganize the same elements but add tens to hundreds of instances of each along with some network routers and buses to model a modern processor. SST Elements are built to be flexible, reusable, and adaptable, enabling simulations of current and future systems with the same building blocks and minimal modification.
