Adding Additional External Components For SST 12.1.x

Overview

These instructions are intended to walk the user through a detailed set of steps to build and install the optional external components used by SST. It is intended for users with intermediate knowledge in the operation of Unix/Linux/OSX environments.

NOTE: The following instructions assume the user has completed the basic build steps for SST outlined in Detailed Build and Installation Instructions for SST.

The SST Release Notes identify what operating systems, compiler and external component combinations have been tested and proven to work with SST.

NOTE: Using combinations other than what is identified in the Release Notes may cause build failures and/or unexpected results.

A detailed list of elements provided with the SST distribution are available at SST Element Summary and SST Element Release Matrix.

If you encounter difficulties, go to the SST Support page.

NOTE: Building SST and its External Components can sometimes be error prone due to the sheer number of combinations of operating systems, compiler versions and external required components. It is STRONGLY recommended that users closely follow these instructions.

General Build and Install Information

Refer to Detailed SST Build and Install Instructions for more information on system requirements, special instructions, example directories and additional tasks for users.


Optional External Components Installation

SST allows for a number of optional external packages which can be tricky to build. Some notes and hints are included here.

Carefully following the instructions provided below should minimize any problems that may arise.



Optional External Components FOR SST-Core

These are optional external components for the SST-Elements. They may provide additional features.



HDF5 1.10.5

OPTIONAL EXTERNAL COMPONENT FOR SST-CORE - Used for HDF Formatting for SST Statistics

General Infomation:

Where to find:

Build Instructions:

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive hdf5-1.10.5.tar.gz

$ cd $HOME/scratch/src
$ tar xfz hdf5-1.10..5.tar.gz
$ cd hdf5-1.10.5

2. Set the home directory environment variable of the HDF5 installation.

$ export HDF5_HOME=$HOME/local/packages/HDF5

3. Configure the build and installation of HDF5

$ ./configure --prefix=$HDF5_HOME --enable-cxx

4. Build and Install HDF5

$ make
$ make check
$ make install
$ make check-install

5. Configure SST-Core to use HDF5

$ cd <to SST-Core base directory>
$ ./configure <all other SST configure options> --with-hdf5=$HDF5_HOME
$ make install



Optional External Components FOR SST-Elements

These are optional external components for the SST-Elements. They may provide additional features for elements or they may be required to allow an element to be built.



DRAMSim2 2.2.2

OPTIONAL EXTERNAL COMPONENT

General Infomation:

Where to find:

Build Instructions:

- Instructions specific to Linux Operating Systems.

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive v2.2.2.tar.gz

$ cd $HOME/scratch/src
$ tar xfz v2.2.2.tar.gz
$ mv DRAMSim2-2.2.2 DRAMSim2
$ cd DRAMSim2

2. Set the home directory environment variable of the DRAMSim2 installation.

$ export DRAMSIM2_HOME=$HOME/local/packages/DRAMSim2

3. Build the DRAMSim2 library

$ make libdramsim.so

4. Install DRAMSim2 library

$ cp -r . $DRAMSIM2_HOME

5. Configure SST-Elements to use DRAMSim2

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-dramsim=$DRAMSIM2_HOME
$ make install

- Instructions specific to Mac OSX Operating Systems.

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive v2.2.2.tar.gz

$ cd $HOME/scratch/src
$ tar xfz v2.2.2.tar.gz
$ mv DRAMSim2-2.2.2 DRAMSim2
$ cd DRAMSim2

2. Set the home directory environment variable of the DRAMSim2 installation.

$ export DRAMSIM2_HOME=$HOME/local/packages/DRAMSim2

3. Build the DRAMSim2 library

$ make libdramsim.dylib

4. Install DRAMSim2 library

$ cp -r . $DRAMSIM2_HOME

5. Configure SST-Elements to use DRAMSim2

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-dramsim=$DRAMSIM2_HOME
$ make install


NVDIMMSim 2.0.0

OPTIONAL EXTERNAL COMPONENT

General Infomation:

Where to find:

Build Instructions:

- Instructions specific to Linux Operating Systems.

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive NVDIMMSim-2.0.0.tar.gz

$ cd $HOME/scratch/src
$ tar xfz NVDIMMSim-2.0.0.tar.gz
$ mv NVDIMMSim-2.0.0 NVDIMMSim
$ cd NVDIMMSim/src

2. Set the home directory environment variable of the NVDIMMSim installation.

$ export NVDIMMSIM_HOME=$HOME/local/packages/NVDIMMSim

3. Build the NVDIMMSim library

$ make libnvdsim.so

4. Install NVDIMMSIM library

$ cp -r . $NVDIMMSIM_HOME

5. Configure SST-Elements to use NVDIMMSim

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-nvdimmsim=$NVDIMMSIM_HOME
$ make install

- Instructions specific to Mac OSX Operating Systems.

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive NVDIMMSim-2.0.0.tar.gz

$ cd $HOME/scratch/src
$ tar xfz NVDIMMSim-2.0.0.tar.gz
$ mv NVDIMMSim-2.0.0 NVDIMMSim
$ cd NVDIMMSim/src

2. Set the home directory environment variable of the NVDIMMSim installation.

$ export NVDIMMSIM_HOME=$HOME/local/packages/NVDIMMSim

3. Build the NVDIMMSim library

$ make libnvdsim.dylib

4. Install NVDIMMSIM library

$ cp -r . $NVDIMMSIM_HOME

5. Configure SST-Elements to use NVDIMMSim

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-nvdimmsim=$NVDIMMSIM_HOME
$ make install


HybridSim 2.0.1

OPTIONAL EXTERNAL COMPONENT - Requires NVDimmSim and DRAMSim2

General Infomation:

Where to find:

Build Instructions:

- Instructions specific to Linux Operating Systems.

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive HybridSim-2.0.1.tar.gz

$ cd $HOME/scratch/src
$ tar xfz HybridSim-2.0.1.tar.gz
$ mv HybridSim-2.0.1 HybridSim
$ cd HybridSim

2. Set the home directory environment variable of the HybridSim installation.

$ export HYBRIDSIM_HOME=$HOME/local/packages/HybridSim

3. Build the HybridSim library

$ make libhybridsim.so

4. Install HybridSim library

$ cp -r . $HYBRIDSIM_HOME

5. Configure SST-Elements to use HybridSim

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-dramsim=$DRAMSIM2_HOME --with-nvdimmsim=$NVDIMMSIM_HOME --with-hybridsim=$HYBRIDSIM_HOME
$ make install

- Instructions specific to Mac OSX Operating Systems.

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive HybridSim-2.0.1.tar.gz

$ cd $HOME/scratch/src
$ tar xfz HybridSim-2.0.1.tar.gz
$ mv HybridSim-2.0.1 HybridSim
$ cd HybridSim

2. Set the home directory environment variable of the HybridSim installation.

$ export HYBRIDSIM_HOME=$HOME/local/packages/HybridSim

3. Build the HybridSim library

$ make libhybridsim.dylib

4. Install HybridSim library

$ cp -r . $HYBRIDSIM_HOME

5. Configure SST-Elements to use HybridSim

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-dramsim=$DRAMSIM2_HOME --with-nvdimmsim=$NVDIMMSIM_HOME --with-hybridsim=$HYBRIDSIM_HOME
$ make install


DRAMsim3

OPTIONAL EXTERNAL COMPONENT

General Infomation:

Where to find:

Build Instructions:

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive dramsim3.tar.gz

$ cd $HOME/scratch/src
$ tar xfz dramsim3-1.0.0.tar.gz
$ cd dramsim3-1.0.0

2. Set the home directory environment variable of the DRAMsim3 installation.

$ export DRAMSIM3_HOME=$HOME/local/packages/dramsim3

3. Build the DRAMsim3 library

$ mkdir build
$ cd build
$ cmake ..
$ make -j4
$ cd ..

4. Install DRAMsim3 library

$ cp -r . $DRAMSIM3_HOME

5. Configure SST-Elements to use DRAMsim3

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-dramsim3=$DRAMSIM3_HOME
$ make install


Intel Pin Tool 2.14-71313

OPTIONAL EXTERNAL COMPONENT - Required for Balar Element

General Infomation:

Where to find:

Build Instructions:

- Instructions specific to Linux Operating Systems.

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive pin

$ cd $HOME/scratch/src
$ tar xfz pin-2.14-71313-gcc.4.4.7-linux.tar.gz

2. Set the home directory environment variable of the PinTool installation.

$ export PIN_HOME=$HOME/local/packages/pin-2.14-71313-gcc.4.4.7-linux
$ export INTEL_PIN_DIRECTORY=$PIN_HOME

3. Copy the Pin directory to the SST elements directory

$ cp -r pin-2.14-71313-gcc.4.4.7-linux $PIN_HOME

4. Configure SST to use PinTool

$ cd <to SST-Elements base directory>
$ ./configure <all other SST-Elements configure options> --with-pin=$PIN_HOME
$ make install


Intel Pin Tool 3.22-98547

OPTIONAL EXTERNAL COMPONENT - Required for Ariel Element

General Infomation:

Where to find:

Build Instructions:

- Instructions specific to Linux Operating Systems.

1. Assuming that the tarfile has been downloaded to $HOME/scratch/src, unarchive pin

$ cd $HOME/scratch/src
$ tar xfz pin-3.22-98547-g7a303a835-gcc-linux.tar.gz

2. Set the home directory environment variable of the PinTool installation.

$ export PIN_HOME=$HOME/local/packages/pin-3.22-98547-g7a303a835-gcc-linux
$ export INTEL_PIN_DIRECTORY=$PIN_HOME

3. Configure SST-Elements to use PinTool.

$ cd <to SST-Elements base directory>
$ ./configure <all other SST-Elements configure options> --with-pin=$PIN_HOME
$ make install


Goblin HMCSim

OPTIONAL EXTERNAL COMPONENT - Used by MemHierarchy Element for optional enhanced features

General Infomation:

Where to find:

Build Instructions:

1. Assuming that the zipfile has been downloaded to $HOME/scratch/src, unzip gc64-hmcsim-sst-8.0.0-release.zip

$ cd $HOME/scratch/src
$ unzip gc64-hmcsim-sst-8.0.0-release.zip
$ cd gc64-hmcsim-sst-8.0.0-release

2. Set the home directory environment variable of the Goblin HMCSim installation.

$ export GOBLINHMCSIM_HOME=$HOME/local/packages/GoblinHMCSim

3. Build Goblin HMCSim

$ make

4. Install Goblin HMCSim library

$ ln -s `pwd` $GOBLINHMCSIM_HOME

5. Configure SST-Elements to use Goblin HMCSim

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-goblin-hmcsim=$GOBLINHMCSIM_HOME
$ make install


HBM Dramsim2

OPTIONAL EXTERNAL COMPONENT - Used by MemHierarchy Element for optional enhanced features

General Infomation:

Where to find:

Build Instructions:

1. HBM Dramsim2 must be cloned using Git, and a specific Tag must be used.

$ cd $HOME/scratch/src
$ git clone https://github.com/tactcomplabs/HBM.git
$ cd HBM
$ git checkout hbm-1.0.0-release

2. Set the home directory environment variable of the HBM Dramsim2 installation.

$ export HBMDRAMSIM2_HOME=$HOME/local/packages/HBMDramsim2

3. Build HBM Dramsim2

$ make

4. Install HBM Dramsim2 library

$ ln -s `pwd` $HBMDRAMSIM2_HOME

5. Configure SST-Elements to use HBM Dramsim2

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-hbmdramsim==$HBMDRAMSIM2_HOME
$ make install


Ramulator

OPTIONAL EXTERNAL COMPONENT - Used by MemHierarchy Element for optional enhanced features

General Infomation:

Where to find:

Build Instructions:

1. Ramulator must be cloned using Git, and a specific SHA must be used.

$ cd $HOME/scratch/src
$ git clone https://github.com/CMU-SAFARI/ramulator.git
$ cd ramulator
$ git checkout 7d2e72306c6079768e11a1867eb67b60cee34a1c

2. Apply patches to the Ramulator source.

$ patch -p1 -i ramulator_sha_7d2e723_gcc48Patch.patch
$ patch -p1 -i ramulator_sha_7d2e723_libPatch.patch

3. Set the home directory environment variable of the Ramulator installation.

$ export RAMULATOR_HOME=$HOME/local/packages/ramulator

4. Build Ramulator

- Instructions specific to Linux Operating Systems.

$ make CXX=g++ libramulator.so

- Instructions specific to Mac OSX Operating Systems.

$ make libramulator.a

5. Install Ramulator library

$ ln -s `pwd` $RAMULATOR_HOME

6. Configure SST-Elements to use Ramulator

$ cd <to SST-Elements base directory>
$ ./configure <all other SST configure options> --with-ramulator=$RAMULATOR_HOME
$ make install


GPGPUSIM

OPTIONAL EXTERNAL COMPONENT - Used by Balar Element for simulation

- Instructions specific to Linux Operating Systems.

General Infomation:

Where to find:

Build Instructions:

1. GPGPUSIM must be cloned using Git, and a specific tag must be used.

$ cd $HOME/scratch/src
$ git clone https://github.com/purdue-aalp/sst-gpgpusim-external.git sst-gpgpusim
$ cd sst-gpgpusim
$ git checkout v1.1   (Note: This may indicate a detached head in git)

2. Set the home directory environment variable of the GPGPUSIM installation.

$ export GPGPUSIM_ROOT=`pwd`

3. Setup GPGPUSIM’s required environment variables.

$ source setup_environment

4. Build GPGPUSIM

$ make

Run Instructions:

1. Prior to running GPGPUSim/Balar, set up GPGPUSim’s environment variables. If you encounter runtime errors, double check that this step has been taken. The environment variable $GPGPUSIM_ROOT should point to the location of sst-gpgpusim (as shown in the build instructions above).

cd $GPGPUSIM_ROOT
source setup_environment


MUSL Compiler

OPTIONAL EXTERNAL COMPONENT - Used by Vanadis Element for compiling code for simulations

- Instructions specific to Linux Operating Systems.

General Infomation:

Where to find:

Installation Instructions:

1. The musl compiler must be must be download and extracted and then added to the PATH

$ cd $HOME/scratch/src
$ wget https://musl.cc/mipsel-linux-musl-cross.tgz
$ tar xf  mipsel-linux-musl-cross.tgz
$ export PATH=$PWD/mipsel-linux-musl-cross/bin:$PATH

SST-STONNE

OPTIONAL EXTERNAL COMPONENT for DNN accelerators

SST-STONNE is a cycle-level microarchitectural simulator for flexible DNN inference accelerators. This library is developed and maintained by a third-party here. More information is available on the SST Community page.

Installation Instructions:

1. Clone the SST-STONNE element.

git clone https://github.com/stonne-simulator/sst-elements-with-stonne

2. Copy the stonne element into your official SST-Elements source code. Assuming that your SST-Elements resides at $SST_ELEMENTS_HOME:

cp -r $HOME/scratch/src/sst-elements-with-stonne/src/sst/elements/sstStonne $SST_ELEMENTS_HOME/src/sst/elements

3. Build and install SST-Elements as usual. You will need to run ./autogen.sh prior to configuring and building.

cd $SST_ELEMENTS_HOME
./autogen.sh
./configure <CONFIGURE_OPTIONS>
make
make install

Using STONNE

sstStonne must be instantiated in the SST Python Configuration file, along with the memory hierarchy elements that will be used to model the memory hierarchy. The following examples, along with scripts to generate memory initialization files and calcuate memory address locations are provided. After running the generation script, remember to update the SST input script with the memory address locations and memory initialization file for each kernel to be launched.