How to run SST with simulation examples

Running SST

Before running SST, make sure your $LD_LIBRARY_PATH environment variable include the location of the depedency and component libraries so that it is searched for shared libraries at runtime. For example, it you followed the wiki page to build and install SST, the $HOME/local/lib should be included in your $LD_LIBRARY_PATH environment variable.

Usage

The SST command line has three parts, the SST binary, options for the binary, and a Python configuration file.

<SST binary> [SST options] <config file>

SST Options

Running SST with the “–help” flag prints a help message that includes all of the supported simulator options. Here’s a snippet:

$ ./sst --help
Usage: sst [options] config-file
Allowed options:
  -h [ --help ]         print help message
  -v [ --verbose ]      print information about core runtimes
  --no-env-config       disable SST automatic dynamic library environment 
                        configuration
  -V [ --version ]      print SST Release Version
  --debug arg            { all | cache | queue  | clock | sync | link |        
                                  linkmap | linkc2m | linkc2c | linkc2s | comp 
                         | factory |                 stop | compevent | sim | 
                         clockevent | sdl | graph }
  --debug-file arg       file where debug output will go
  --lib-path arg         component library path (overwrites default)
  --add-lib-path arg     add additional component library paths
  --run-mode arg         run mode [ init | run | both ]
  --stop-at arg          set time at which simulation will end execution
  --heartbeat-period arg Set time for heart beats to be published (these are 
                         approximate timings published by the core to update on
                         progress), default is every 10000 simulated seconds
  --timebase arg         sets the base time step of the simulation (default: 
                         1ps)
  --partitioner arg      partitioner to be used < linear | roundrobin | self | 
                         simple | single | lib.partitioner_name >
                         Descriptions:
                         -  linear: Partitions components by dividing Component
                         ID space into roughly equal portions.  Components with
                         sequential IDs will be placed close together.
                         -  roundrobin: Partitions components using a simple 
                         round robin scheme based on ComponentID.  Sequential 
                         IDs will be placed on different ranks.
                         -  self: Used when partitioning is already specified 
                         in the configuration file.
                         -  simple: Simple partitioning scheme which attempts 
                         to partition on high latency links while balancing 
                         number of components per rank.
                         -  single: Allocates all components to rank 0.  
                         Automatically selected for serial jobs.
                         -  lib.partitioner_name: Partitioner found in element 
                         library 'lib' with name 'partitioner_name'
  --generator arg        generator to be used to build simulation 
                         <lib.generator_name>
  --gen-options arg      options to be passed to generator function (must use 
                         quotes if whitespace is present)
  --output-partition arg Dump the component partition to this file (default is 
                         not to dump information)
  --output-config arg    Dump the SST component and link configuration graph to
                         this file (as a Python file), empty string (default) 
                         is not to dump anything.
  --output-dot arg       Dump the SST component and link graph to this file in 
                         DOT-format, empty string (default) is not to dump 
                         anything.
  --output-directory arg Controls where SST will place output files including 
                         debug output and simulation statistics, default is for
                         SST to create a unique directory.
  --model-options arg    Provide options to the SST Python scripting engine 
                         (default is to provide no script options)

Simulation Examples

Below is an example command to run SST with the Python configuration file, test_simpleRNGComponent_mersenne.py:

$ ./sst --verbose myConfig.py 
$ sst --verbose $SST_HOME/sst/elements/simpleElementExample/tests/test_simpleRNGComponent_mersenne.py

The configuration file specifies the simulation setup (refer to PythonFileFormat). SST provides several example configuration files.

SST Simple Component

SST contains a an example Element (simpleElementExample) that is made up of a number of very simple components. One of those components (named simpleComponent) demonstrates component wire up and message sending. simpleElementExample as part of the basic SST installation. To run a test of this component:

$ cd $SST_HOME/sst/elements/simpleElementExample/tests
$ sst test_simpleComponent.py

This should produce output that looks like this:

Inserting stop event at cycle 25us, 25000000
Simple Component Finished
Simple Component Finished
Simple Component Finished
Simple Component Finished
Simple Component Finished
Simple Component Finished
Simple Component Finished
Simple Component Finished
Simple Component Finished
Several Simple Components Finished
Simulation is complete, simulated time: 25 us