ExaSAT - Exascale Static Analysis Tool
C C++ Fortran Makefile Python Perl Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
examples
playground
scripts
src
tools
.gitignore
LICENSE
README.md
rose.mk

README.md

ExaSAT: Exascale Static Analysis Tool


Prerequisites:

  • ROSE and its prerequisites (check website):
    • gcc-4.4.7, Boost, Java
    • python
  • OMEGA and CHILL (optional)

Compiler Analysis Component Usage:

  • To build, run make from src/
  • Set environment variables:
    • FILTER=<fname>: fname is function that we want to analyze, or
    • NOFILTER=1: analyze all functions in input file
  • Add Boost and Java lib dirs to LD_LIBRARY_PATH
  • Run: genCodeDescript <input_file>
    • Produces XML on stdout
  • Example: run ./genxml.py from examples/cns-smc/
    • Crawls the inputs/ sub-directory and tries to run the compiler analysis on all files
      • May produce errors for some because it can’t find some dependent module files (it’s safe to ignore these)
    • Stores the produced XMLs in the xml_new/ sub-directory

Performance Model Component Usage (in exasat/tools/post):

Set environment variables:
  • xml=<input-XML-file>: The input XML generated by the compiler analysis component above.
  • symsubs=<symsubs-XML-file>: The symsubs XML specifies a list of symbolic substitutions to be made in the code to help simplify parameter substitution and analysis.
  • namesubs=<namesubs-XML-file>: The namesubs XML specifies a list of string substitutions to be made in the variable names to simplify reading of the output.
  • params=<params-XML-file>: The parameters XML specifies values for problem parameters that appear in the code (loop bounds and array index expressions), which include problem size, number of ghost cells, number of chemical species, etc.
  • block_params=<block-params-XML-file>: The cache blocking parameters XML specifies cache blocking parameters. It contains a list of (lo, hi) symbol pairs, where any loop that contains such a pair in its loop bounds should be blocked. For each (lo, hi) symbolic key pair, a (block_lo, block_hi) numerical value pair should be given.
  • machine=<machine-XML-file>: The machine XML specifies machine parameters, such as memory bandwidth, FP compute throughput, registers, cache sizes, word size, cache line size, whether to utilize streaming writes and non-temporal access hints, and relative costs of arithmetic operations (+,-,*,/,specials) and memory operations (R,W,RW). Defaults will be chosen if no file is specified.
  • conds=<conds-XML-file>: The conds XML specifies a list of conditionals and an associated probability 0.0 <= p <= 1.0 that the model will use for calculating branch taken percentages.
  • flag_sub_params=0 or 1: Set this to 1 to substitute the numerical paramter values for all analyses. Default will conduct most analyses symbolically, and only substitute parameters where numerical values are needed (e.g. for the memory traffic analysis).
Run from command line:
  • Example analyses given by running ./runModel.py <mode>
    • mode = {cns, smc}
  • Analyze a new code by setting above environment variables to point to the XMLs.

Performance Model Component (old version) Usage (in exasat/tools/post-old):

Set environment variables:
  • problem_xml=<problem-XML-file>: The problem XML specifies problem parameters and software optimizations to be evaluated, such as problem size, number of ghost cells, how many chemical species to evaluate, cache blocking parameters, whether to utilize streaming writes and non-temporal access hints. Defaults will be chosen if no file is specified.
  • machine_xml=<machine-XML-file>: The machine XML specifies machine parameters, such as memory bandwidth, FP compute throughput, number registers, cache sizes, word size, cache line size, and relative costs of arithmetic operations (+,-,*,/,specials) and memory operations (R,W,RW). Defaults will be chosen if no file is specified.
Generate analysis spreadsheet (in tools/post-old/ directory):
  • ./analyze.py <xml-input> <tsv-output>
  • Example: problem_xml=../../examples/problem.xml ./analyze.py ../../examples/cns-smc/xml/advance-nomod.xml advance-nomod.tsv
    • Generates an analysis spreadsheet advance-nomod.tsv
  • Example script: ./gentsvs.sh
    • Analyze advance routines from CNS and SMC codes as well as chemistry routines from SMC code
  • Can generate dependency graphs by setting options.flag_graph=True in common.py
Or run in script mode:
  • Call analysis from another Python script through analyze and runner modules
    • Step 1: analyze an input XML file to recognize loop structures and calculate working sets, etc. (analyze module)
    • Step 2: use static analysis info to run a performance model for a given problem and hardware configuration (runner module)
  • Multiple example analyses given by running ./runModel.py <mode>
    • mode = {micro, cns, smc, smc-regs, smc-summary, diffterm}

Copyright

"Exascale Static Analysis Tool (ExaSAT)" Copyright (c) 2016, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved.

If you have questions about your rights to use or distribute this software, please contact Berkeley Lab's Innovation & Partnerships Office at IPO@lbl.gov.

NOTICE. This Software was developed under funding from the U.S. Department of Energy and the U.S. Government consequently retains certain rights. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, distribute copies to the public, prepare derivative works, and perform publicly and display publicly, and to permit other to do so.