Switch branches/tags
Nothing to show
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.project Work in progress refactoring reachability. Dec 14, 2018
alice Add more alice docs. Jun 11, 2018
compilers Implement LLVM CFG support. Dec 15, 2018
config Move //lib/labm8 to //labm8. Dec 6, 2018
datasets Work in progress on OpenCL CFG dataset. Dec 15, 2018
deeplearning Begin work on OpenCL CFG dataset. Dec 15, 2018
docs Automatic code format of git submodules. Dec 6, 2018
experimental Change dataset columns. Dec 16, 2018
gpu Move //lib/labm8 to //labm8. Dec 6, 2018
graphics Automated code format. Dec 6, 2018
http Revert chriscummins.cc auto code style. Dec 10, 2018
labm8 Fix typo in type annotation. Dec 15, 2018
learn Work in progress on graph net notebook. Dec 15, 2018
lib/phd Move //lib/labm8 to //labm8. Dec 6, 2018
notebooks Add labtypes to colab notebook. Dec 12, 2018
phd Move debugging macros from test to macros header. Dec 14, 2018
system Update rsync test mock. Dec 12, 2018
talks Fix talks README instructions. Jul 31, 2018
third_party Add pydot to //third_party/py packages. Dec 15, 2018
tools Add pydot to //third_party/py packages. Dec 15, 2018
util Replace create_if_not_exist arg with must_exist. Dec 10, 2018
.bazelrc Move bazelrc into new location. Nov 18, 2018
.gitignore Don’t ignore in-tree protobufs. Dec 6, 2018
.gitmodules Update git submodule names. May 22, 2018
.pylintrc Complete transition of photolib into build system. Mar 3, 2018
.travis.yml Use named variable test for OS-dependent install. Jun 16, 2018
.travisignore Remove dead directory from Travis ignore. May 16, 2018
BUILD Move //lib/labm8 to //labm8. Dec 6, 2018
README.md Add ffmpeg to list of deps. Nov 18, 2018
WORKSPACE Update gtest, switch to their bazel build system. Dec 1, 2018
configure Add comment header to files generated by configure. Dec 12, 2018
configure_test.py Move //lib/labm8 to //labm8. Dec 6, 2018
package-lock.json Install husky. May 26, 2018
package.json Add a post-rebase hook. Jun 2, 2018

README.md

My PhD

A monolothic repository for (almost) everything I have done while at the University of Edinburgh. Living an #open life.

Publications

  1. Chris Cummins, Pavlos Petoumenos, Alastair Murray, Hugh Leather. "Compiler Fuzzing through Deep Learning". ISSTA '18. [source code]. [pdf]. Build command: $ bazel build //docs/2018_07_issta.
  2. Chris Cummins, Pavlos Petoumenos, Alastair Murray, Hugh Leather. "DeepSmith: Compiler Fuzzing through Deep Learning". ACACES '18. [source code]. [pdf]. Build command: $ bazel build //docs/2018_07_acaces.
  3. Chris Cummins, Pavlos Petoumenos, Zheng Wang, Hugh Leather. "End-to-end Deep Learning of Optimization Heuristics". PACT '17. [source code]. [pdf]. Build command: $ bazel build //docs/2017_09_pact.
  4. Chris Cummins, Pavlos Petoumenos, Zheng Wang, Hugh Leather. "Synthesizing Benchmarks for Predictive Modeling". CGO '17. [source code]. [pdf]. [acm]. Build command: $ bazel build //docs/2017_02_cgo.
  5. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather. "Autotuning OpenCL Workgroup Sizes". ACACES '16. [source code]. Build command: $ bazel build //docs/2016_07_acaces.
  6. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather. "Towards Collaborative Performance Tuning of Algorithmic Skeletons". HLPGPU '16, HiPEAC. [source code]. [pdf]. Build command: $ bazel build //docs/2016_01_hlpgpu.
  7. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather. "Autotuning OpenCL Workgroup Size for Stencil Patterns". ADAPT '16, HiPEAC. [source code]. [pdf]. [arxiv]. Build command: $ bazel build //docs/2016_01_adapt.
  8. Chris Cummins. "Autotuning Stencils Codes with Algorithmic Skeletons". MSc Thesis, 2015. The University of Edinburgh. [source code]. Build command: $ bazel build //docs/2015_08_msc_thesis.

Talks

  1. Chris Cummins. "Compiler Fuzzing through Deep Learning", 3rd August, 2018. Codeplay, Edinburgh, Scotland. [files]. [slides].
  2. Chris Cummins. "Machine Learning for Compilers", 20th July, 2018. Workshop on Introspective Systems for Automatically Generating Tests (ISAGT), Amsterdam, Netherlands. [files]. [pdf].
  3. Chris Cummins. "Compiler Fuzzing through Deep Learning", 16th July, 2018. ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA), Amsterdam, Netherlands. [files]. [slides].
  4. Chris Cummins. "End-to-end Deep Learning of Optimization Heuristics", 23rd March, 2018. Facebook, Menlo Park. [files]. [slides].
  5. Chris Cummins. "End-to-end Deep Learning of Optimization Heuristics", 2nd Feb, 2018. Google, Mountain View. [files]. [slides].
  6. Chris Cummins. "Second Year Progression Review", 18th Dec, 2017. The University of Edinburgh, Scotland. [files]. [pdf].
  7. Chris Cummins. "End-to-end Deep Learning of Optimization Heuristics", 4th Oct, 2017. The University of Edinburgh, Scotland. [files]. [slides].
  8. Chris Cummins. "End-to-end Deep Learning of Optimization Heuristics", 12th Sep, 2017. International Conference on Parallel Architectures and Compilation Techniques (PACT), Portland, Oregon, USA. [files]. [slides].
  9. Chris Cummins. "Deep Learning in Compilers", 14th Jun, 2017. The University of Edinburgh, Scotland. [files]. [pdf]. [transcript].
  10. Chris Cummins. "Using Deep Learning to Generate Human-like Code", 22nd April, 2017. Scottish Programming Languages Seminar, University of St. Andrews, Scotland. [files]. [pdf].
  11. Chris Cummins. "Synthesizing Benchmarks for Predictive Modeling", 6th Febuary, 2017. International Symposium on Code Generationand Optimization (CGO), Austin, Texas, USA. [files]. [slides].
  12. Chris Cummins. "Machine Learning & Compilers", 9th September, 2016. Codeplay, Edinburgh, Scotland. [files]. [slides].
  13. Chris Cummins. "Building an AI that Codes", 22nd July, 2016. Ocado Technology, Hatfield, England. [files]. [pdf].
  14. Chris Cummins. "All the OpenCL on GitHub: Teaching an AI to code, one character at a time", 19th May, 2016. Amazon Development Centre, Edinburgh, Scotland. [files]. [pdf].
  15. Chris Cummins. "Autotuning and Algorithmic Skeletons", Wed 10th Feb, 2016. The University of Edinburgh, Scotland. [files]. [pdf].
  16. Chris Cummins. "Towards Collaborative Performance Tuning of Algorithmic Skeletons", Tues 19th Jan, 2016. HLPGPU, HiPEAC, Prague. [files]. [pdf].
  17. Chris Cummins. "Autotuning OpenCL Workgroup Size for Stencil Patterns", Mon 18th Jan, 2016. ADAPT, HiPEAC, Prague. [files]. [pdf].
  18. Chris Cummins. "Towards Collaborative Performance Tuning of Algorithmic Skeletons", Thurs 14th Jan, 2016. The University of Edinburgh, Scotland. [files]. [pdf].

Misc

  1. Curriculum Vitae. [source code]. [pdf]. [html]. Build command: $ bazel build //docs/cv.
  2. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather. "Collaborative Autotuning of Algorithmic Skeletons for GPUs and CPUs". Incomplete journal version of ADAPT and HLPGPU papers. [source code]. Build command: $ bazel build //docs/2016_12_wip_taco.
  3. Chris Cummins. "Deep Learning for Compilers". PhD First Year Review Document, 2016. [source code]. Build command: $ bazel build //docs/2016_11_first_year_review.
  4. Chris Cummins, Hugh Leather. "Autotuning OpenCL Workgroup Sizes". Rejected submission for PACT'16 Student Research Competition. [source code]. Build command: $ bazel build //docs/2016_07_pact.
  5. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather. "Autotuning OpenCL Workgroup Sizes". Submission for PLDI'16 Student Poster Session. [source code]. Build command: $ bazel build //docs/2016_06_pldi.
  6. Chris Cummins. "Autotuning and Skeleton-aware Compilation". PhD Progression Review, 2015. [source code]. Build command: $ bazel build //docs/2015_09_progression_review.

Building the code

I use Bazel as my build system of choice, with a preliminary configure script to setup the build. I'm gradually working towards a completely hermetic build, but for now there remains a couple of dependencies on the host C++ toolchain and Python runtime.

This project can only be built on a modern version of Ubuntu Linux or macOS. This is a requirement I inherit from my dependencies, which eschew Windows and other Linux distros. Fortunately, you can use a Docker image and follow the Ubuntu instructions (just drop the sudo prefixes from commands):

$ docker run -it ubuntu:18.04 /bin/bash

If you have success building this project on other platforms, I'd love to hear about it and accept patches.

Installing Ubuntu requirements

First install the required packages:

$ sudo apt-get update
$ sudo apt install -y --no-install-recommends \
   ca-certificates curl g++ git libmysqlclient-dev ocl-icd-opencl-dev \
   pkg-config python python-dev python3.6 python3.6-dev python3-distutils \
   unzip zip zlib1g-dev openjdk-11-jdk  m4 libexempi-dev rsync texlive-full \
   python3-numpy build-essential libsdl2-dev libjpeg-dev nasm tar libbz2-dev \
   libgtk2.0-dev cmake libfluidsynth-dev libgme-dev libopenal-dev timidity \
   libwildmidi-dev libboost-all-dev julia libsdl2-dev

Please note that this list of packages is for Ubuntu 18.04. On older distributions some of the packages may not exist. For example, Ubuntu distributions prior to 16.10 require a custom PPA to provide the python3.6 package.

Next, install Bazel:

$ curl -L -o /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.14.1/bazel-0.14.1-installer-linux-x86_64.sh
$ sudo bash /tmp/bazel.sh && rm /tmp/bazel.sh

Now proceed to the "Build (all platforms)" section.

Installing macOS requirements

Install the Homebrew package manager:

$ yes | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install the required packages:

$ brew install bazel coreutils exempi findutils gnu-indent gnu-sed gnu-tar \
    gnu-time gnu-which python cmake boost sdl2 wget ffmpeg
$ brew cask install julia mactex

Now proceed to the "Build (all platforms)" section.

Build (all platforms)

Install the requirements which are common across platforms:

$ julia -e 'Pkg.add("CxxWrap")'

Clone this project:

$ git clone https://github.com/ChrisCummins/phd.git
$ cd phd

Configure the build and answer the yes/no questions. The default answers should be fine:

$ ./configure

Note that CUDA support requires CUDA to have been installed separately, see the TensorFlow build docs for instructions. CUDA support has only been tested for Linux builds, not macOS or Docker containers.

Finally, we must set up the shell environment for running bazel. The file .env is created by the configure process and must be sourced for every shell we want to use bazel with:

$ source $PWD/.env

Now build or test whatever bazel targets you'd like. Use bazel query //... to list the available targets. E.g. to run the entire test suite, run:

$ bazel test //...