Skip to content
Helium: Lifting High-Performance Stencil Kernels from Stripped x86 Binaries to Halide DSL Code
C++ C Batchfile CMake Python PowerShell
Branch: refactor
Clone or download
Charith Mendis
Charith Mendis added randomness
Latest commit 139a4a9 Mar 21, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
common cleaning up in progress May 3, 2015
documentation start end pc automated May 2, 2015
dr_clients
images
postprocess added randomness Mar 21, 2016
preprocess
tests full automation added; seperated from the batch scripts May 22, 2015
utility automation script updated Mar 21, 2016
.gitignore cleaning up in progress May 3, 2015
LICENSE.txt LICENSE updated Jun 14, 2015
README.md dr_build updated Jun 15, 2015
out.txt changed a lot of things Mar 29, 2015

README.md

Helium: Lifting High-Performance Stencil Kernels from Stripped x86 Binaries to Halide DSL Code

Dependencies

All the paths mentioned here are relative to the project parent folder. Currently Helium supports only Windows OS.

  • Install VS2013 and have VC++ 2013 runtime. (MSDN allows free download and activation for @edu emails) Make sure you do a default installation with default paths.
  • SVN - download it here and put it on to the PATH
  • Install Cygwin64 from here and install Perl, but not its SVN!! Put Cygwin's bin into the path.
  • Install CMake's latest version from here
  • Download the github repository for the project
  • Installing Dynamorio – run the batch file utility/dr_build.bat (use 'dr_build.bat help' for command line arguments).
  • Installing Halide – just use the nightly builds of Halide from here (do not try to build it in Windows, but if you insist use the powershell scripts in utility/halide_[type]_build.ps -> but this is PAINFUL!!)

Folder Structure

  • dr_clients - contains all the DynamoRIO instrumentation clients
  • preprocess - contains all analysis for code localization
    • code_cov - code coverage instrumentation invocation script
    • code_diff - tool for diffing two code coverage files
    • filter_funcs - tool for localizing the filter function by analyzing the memory traces and profiling information extracted through DynamoRIO instrumentation
    • image_cons - constructing example images for analysis (the generated images are synthetic examples)
  • postprocess - contains all analysis for expression extraction
    • buildex - main analysis project which processes instruction traces and memory dumps to come up with halide version of the filter. This includes various other utilitties for debugging.

Building the project

All batch files should be run inside their folders.

In the utility folder,

  1. Run setup_folders.bat
  2. Run setup.bat
  3. Run build_all_exalgo.bat {arch} {debug/release} {halide_dir}

Running the tools

  • Run utility/automation_all.py - you can run the entire tool chain or parts of it. Please look at the help in the script to figure out command line arguments.
  • There are legacy batch scripts used to automate the tools.

Publications

The ideas of the project are published in the following paper.

You can’t perform that action at this time.