Skip to content
forked from LLNL/Gremlins

Flexible and extensible framework to emulate expected exascale architecture characteristics

License

Notifications You must be signed in to change notification settings

maiterth/Gremlins

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

##############################################################################
# Copyright (c) 2013-2014, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory
#
# Written by Martin Schulz et al <schulzm@llnl.gov>
# LLNL-CODE-645436
# All rights reserved.
#
# This file is part of the GREMLINS framework.
# For details, see http://scalability.llnl.gov/gremlins.
# Please read the LICENSE file for further information.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the disclaimer below.
#
#     * Redistributions in binary form must reproduce the above
#       copyright notice, this list of conditions and the disclaimer (as
#       noted below) in the documentation and/or other materials
#       provided with the distribution.
#
#     * Neither the name of the LLNS/LLNL nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE
# LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Written by Martin Schulz and Matthias Maiterth
##############################################################################


-------------------------------------------------------------------------------

                                   GREMLINs
              Emulating Exascale Conditions on Today's Platforms

-------------------------------------------------------------------------------

1. INTRODUCTION

The GREMLINs emulate the behavior of anticipated future architectures on 
current machines. We focus on the impact of resource limitations (by 
artificially restricting them), as well as noise and faults by using injection 
techniques--these issues are generally expected to be the dominating challenges 
in future machine generations.

We have four different classes of GREMLINS: 

(1) Power: artificially reduce the operating power using DVFS or cap power on a 
per node basis; 
(2) Memory: limit resources in the memory hierarchy such as cache size or 
memory bandwidth by running interference threads; 
(3) Reselience: inject faults into target applications and enable us to study 
the efficiency and correctness of recovery techniques;
(4) Noise: inject periodic or random noise events to emulate system and OS 
interference


2. CODE STRUCTURE

\gremlin-release
 \BUILD
 \cmakefiles
 \latency  
 \memory
 \noise
 \power
 \resilience
 \thermal
 |-CMakeList.txt
 |-LICENSE
 |-README

The cmakefiles folder contains cmake specifications. The BUILD folder is used for out of source builds.

All other folders should be named according to the resource they focus on.
In each of these the CMakeList.txt describes how the gremlins in the folder are built.
There should be at least one gremlin that measures the resource and one that controlls or influences it.



3. INSTALL

Build using cmake

E.g.:
mkdir BUILD
cd BUILD
cmake .. -DLIBMSR_HOME=/*YOUR_PATH_TO_LIBMSR_HOME*/libmsr -DCMAKE_INSTALL_PREFIX=../INSTALL -DCMAKE_BUILD_TYPE=RelWithDebugInfo -Dwrap_DIR=/*YOUR_PATH_TO_PnMPI_INSTALL*/share/cmake/PnMPI
make 
make install 

This will create a BUILD directory and configure all out of source configure files.
Calling make in the BUILD directory creates the files as specified by cmake.
make install copies the binaries to the INSTALL folder.

LIBMSR can be obtained from Barry Roundtree (https://github.com/scalability-llnl/libmsr)

To genearte source code from the wrapper files, the pnmpi wrapper is used.


To change these settings, see the cmake manual or use ccmake in the BUILD directory


The structure of the INSTALL folder is
\INSTALL
 \lib

,where lib contains all dynamic linked libraries.



These libraries can be used using LD_PRELOAD:

export LD_PRELOAD=$INSTALL/lib/libPowerMeter.so  
srun -n 16 ./helloMPI
export LD_PRELOAD=""



The Gremlins framework supports multiple preloads for the combination of different GREMLINS and to study their impacts.
This is achieved using pnmpi (https://computation-rnd.llnl.gov/pnmpi/). 
Please make sure the pnmpi version used supports signals and multiple preloads of libraries using signals.

The wrapper script used is provided by pnmpi.

About

Flexible and extensible framework to emulate expected exascale architecture characteristics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 83.1%
  • C 13.6%
  • Shell 1.6%
  • Other 1.7%