Skip to content

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

License

Notifications You must be signed in to change notification settings

CharithYMendis/Helium

Repository files navigation

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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published