Giter Site home page Giter Site logo

exasat's Introduction

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 [email protected].

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.

exasat's People

Contributors

cychan-lbnl avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.