Skip to content

Commit

Permalink
Automated subtree export at 2019-08-05T16:30:57.263890
Browse files Browse the repository at this point in the history
  • Loading branch information
[Git export bot] committed Aug 5, 2019
1 parent ce57cdd commit 7ad1a2b
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 280 deletions.
64 changes: 59 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,65 @@
language: generic
os:
- linux
- osx

# Sudo is required to swap out GCC for GCC-5 on linux.
sudo: required

osx_image: xcode10.2

dist: trusty

language:
- generic

env:
global:
# ./configure script symlinks python3 to ~/.local/bin/python, and macos
# image needs GNU tools in PATH, rather than BSD versions.
- PATH="$HOME/.local/bin:/usr/local/opt/coreutils/libexec/gnubin/stat:/usr/local/opt/findutils/libexec/gnubin:/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
# Environment variables needed for zlib.
# See: https://github.com/pyenv/pyenv/issues/530
- PKG_CONFIG_PATH="$PKG_CONFIG_PATH /usr/local/opt/zlib/lib/pkgconfig"
- LDFLAGS="$LDFLAGS -L/usr/local/opt/zlib/lib"
- CPPFLAGS="$CPPFLAGS -I/usr/local/opt/zlib/include"

addons:
homebrew:
brewfile: tools/Brewfile.travis
apt:
sources:
- sourceline: 'ppa:jonathonf/python-3.6'
- sourceline: 'deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8'
key_url: 'https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg'
- ubuntu-toolchain-r-test
packages:
- openjdk-8-jdk
- python
- python3.6
- python3.6-dev
- bazel
- gcc-5
- g++-5

services:
- docker
- mysql

install:
- docker pull chriscummins/phd_build:latest
- chmod -R 777 $TRAVIS_BUILD_DIR
# Remove pyenv, since we use the system package managers to install python.
- rm -rf $(pyenv root)
# Swap out GCC for GCC-5 on linux to enable support for --std=c++14.
# See: https://gist.github.com/cotsog/3ce84675af0d74438d91
- if [[ $TRAVIS_OS_NAME == "linux" ]]; then sudo unlink /usr/bin/gcc && sudo ln -s /usr/bin/gcc-5 /usr/bin/gcc; fi
- ./configure --noninteractive
# Symlink the system python2 in place so that we bypass the pyenv shim.
- if [[ $TRAVIS_OS_NAME == "linux" ]]; then ln -s /usr/bin/python2 $HOME/.local/bin; fi

before_script:
# Print version numbers for debugging.
- python2 --version
- python3 --version
- bazel version
- gcc --version

script:
- docker run -v$TRAVIS_BUILD_DIR:/phd chriscummins/phd_build:latest -c "./configure --noninteractive && bazel run //tools:whoami"
- bazel test --config=travis //labm8:all
254 changes: 24 additions & 230 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,238 +1,32 @@
# My PhD
![labm8](https://raw.github.com/ChrisCummins/labm8/master/labm8/labm8.jpg)

<!-- repo size -->
<a href="https://github.com/ChrisCummins/phd">
<img src="https://img.shields.io/github/repo-size/ChrisCummins/phd.svg">
<!-- pypi version -->
<a href="https://badge.fury.io/py/labm8">
<img src="https://img.shields.io/pypi/v/labm8.svg?color=brightgreen">
</a>
<!-- Travis CI -->
<a href="https://github.com/ChrisCummins/labm8">
<img src="https://img.shields.io/travis/ChrisCummins/labm8/master.svg">
</a>
<!-- downloads counter -->
<a href="https://github.com/ChrisCummins/labm8">
<img src="https://pepy.tech/badge/labm8">
</a>
<!-- commit counter -->
<a href="https://github.com/ChrisCummins/phd">
<img src="https://img.shields.io/github/commit-activity/y/ChrisCummins/phd.svg?color=yellow">
<a href="https://github.com/ChrisCummins/labm8">
<img src="https://img.shields.io/github/commit-activity/y/ChrisCummins/labm8.svg?color=yellow">
</a>
<!-- Travis CI -->
<a href="https://github.com/ChrisCummins/phd">
<img src="https://img.shields.io/travis/ChrisCummins/phd/master.svg">
<!-- repo size -->
<a href="https://github.com/ChrisCummins/labm8">
<img src="https://img.shields.io/github/repo-size/ChrisCummins/labm8.svg">
</a>
<!-- license -->
<a href="https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)">
<img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat">
</a>

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]](/docs/2018_07_issta).
[[pdf]](https://chriscummins.cc/pub/2018-issta.pdf).
Build command: `$ bazel build //docs/2018_07_issta`.
1. Chris Cummins, Pavlos Petoumenos, Alastair Murray, Hugh Leather.
"**DeepSmith: Compiler Fuzzing through Deep Learning**".
ACACES '18.
[[source code]](/docs/2018_07_acaces).
[[pdf]](https://chriscummins.cc/pub/2018-acaces.pdf).
Build command: `$ bazel build //docs/2018_07_acaces`.
1. Chris Cummins, Pavlos Petoumenos, Zheng Wang, Hugh Leather.
"**End-to-end Deep Learning of Optimization Heuristics**".
PACT '17.
[[source code]](https://github.com/ChrisCummins/paper-end2end-dl/).
[[pdf]](https://github.com/ChrisCummins/paper-end2end-dl/raw/master/paper.pdf).
Build command: `$ bazel build //docs/2017_09_pact`.
1. Chris Cummins, Pavlos Petoumenos, Zheng Wang, Hugh Leather.
"**Synthesizing Benchmarks for Predictive Modeling**".
CGO '17.
[[source code]](https://github.com/ChrisCummins/paper-synthesizing-benchmarks/).
[[pdf]](https://github.com/ChrisCummins/paper-synthesizing-benchmarks/raw/master/paper.pdf).
[[acm]](https://dl.acm.org/citation.cfm?id=3049843).
Build command: `$ bazel build //docs/2017_02_cgo`.
1. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather.
"**Autotuning OpenCL Workgroup Sizes**". ACACES '16.
[[source code]](/docs/2016_07_acaces).
Build command: `$ bazel build //docs/2016_07_acaces`.
1. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather.
"**Towards Collaborative Performance Tuning of Algorithmic Skeletons**".
HLPGPU '16, HiPEAC.
[[source code]](https://github.com/ChrisCummins/paper-towards-collaborative-performance-tuning).
[[pdf]](https://github.com/ChrisCummins/paper-towards-collaborative-performance-tuning/raw/master/paper.pdf).
Build command: `$ bazel build //docs/2016_01_hlpgpu`.
1. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather.
"**Autotuning OpenCL Workgroup Size for Stencil Patterns**".
ADAPT '16, HiPEAC.
[[source code]](https://github.com/ChrisCummins/paper-autotuning-opencl-wgsize).
[[pdf]](https://github.com/ChrisCummins/paper-autotuning-opencl-wgsize/raw/master/paper.pdf).
[[arxiv]](https://arxiv.org/abs/1511.02490).
Build command: `$ bazel build //docs/2016_01_adapt`.
1. Chris Cummins. "**Autotuning Stencils Codes with Algorithmic Skeletons**".
MSc Thesis, 2015. The University of Edinburgh.
[[source code]](/docs/2015_08_msc_thesis).
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]](/talks/2018_08_codeplay).
[[slides]](https://speakerdeck.com/chriscummins/compiler-fuzzing-through-deep-learning-issta-18).
1. Chris Cummins. "**Machine Learning for Compilers**", 20th July, 2018.
Workshop on Introspective Systems for Automatically Generating Tests (ISAGT),
Amsterdam, Netherlands.
[[files]](/talks/2018_07_isagt).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2018_07_isagt/2018_07_isagt.pdf).
1. Chris Cummins. "**Compiler Fuzzing through Deep Learning**", 16th July, 2018.
ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA), Amsterdam, Netherlands.
[[files]](/talks/2018_07_issta).
[[slides]](https://speakerdeck.com/chriscummins/compiler-fuzzing-through-deep-learning-issta-18).
1. Chris Cummins. "**End-to-end Deep Learning of Optimization Heuristics**", 23rd March, 2018.
Facebook, Menlo Park.
[[files]](/talks/2018_03_facebook).
[[slides]](https://speakerdeck.com/chriscummins/end-to-end-deep-learning-of-optimization-heuristics-pact-17).
1. Chris Cummins. "**End-to-end Deep Learning of Optimization Heuristics**", 2nd Feb, 2018.
Google, Mountain View.
[[files]](/talks/2018_02_google).
[[slides]](https://speakerdeck.com/chriscummins/end-to-end-deep-learning-of-optimization-heuristics-pact-17).
1. Chris Cummins. "**Second Year Progression Review**", 18th Dec, 2017.
The University of Edinburgh, Scotland.
[[files]](/talks/2017_12_second_year_review).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2017-12-second-year-review/2017-12-second-year-review.pdf).
1. Chris Cummins. "**End-to-end Deep Learning of Optimization Heuristics**", 4th Oct, 2017.
The University of Edinburgh, Scotland.
[[files]](/talks/2017_10_ppar).
[[slides]](https://speakerdeck.com/chriscummins/end-to-end-deep-learning-of-optimization-heuristics-pact-17).
1. 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]](/talks/2017_09_pact).
[[slides]](https://speakerdeck.com/chriscummins/end-to-end-deep-learning-of-optimization-heuristics-pact-17).
1. Chris Cummins. "**Deep Learning in Compilers**", 14th Jun, 2017.
The University of Edinburgh, Scotland.
[[files]](/talks/2017_06_ppar).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2017-06-ppar/2017-06-ppar.pdf). [[transcript]](https://chriscummins.cc/2017/deep-learning-in-compilers/).
1. Chris Cummins. "**Using Deep Learning to Generate Human-like Code**", 22nd April, 2017.
Scottish Programming Languages Seminar, University of St.
Andrews, Scotland.
[[files]](/talks/2017_03_spls).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2017-03-spls/2017-03-spls.pdf).
1. Chris Cummins. "**Synthesizing Benchmarks for Predictive Modeling**", 6th Febuary, 2017.
International Symposium on Code Generationand Optimization (CGO), Austin, Texas, USA.
[[files]](/talks/2017_02_cgo).
[[slides]](https://speakerdeck.com/chriscummins/synthesizing-benchmarks-for-predictive-modelling-cgo-17).
1. Chris Cummins. "**Machine Learning & Compilers**", 9th September, 2016.
Codeplay, Edinburgh, Scotland.
[[files]](/talks/2017_02_cgo).
[[slides]](https://speakerdeck.com/chriscummins/machine-learning-and-compilers).
1. Chris Cummins. "**Building an AI that Codes**", 22nd July, 2016.
Ocado Technology, Hatfield, England.
[[files]](/talks/2016_07_ocado).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2016-07-ocado/2016-07-ocado.pdf).
1. 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]](/talks/2016_05_amazon).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2016-05-amazon/2016-05-amazon.pdf).
1. Chris Cummins. "**Autotuning and Algorithmic Skeletons**", Wed 10th Feb, 2016.
The University of Edinburgh, Scotland.
[[files]](/talks/2016_02_ppar).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2016-02-ppar/2016-02-ppar.pdf).
1. Chris Cummins. "**Towards Collaborative Performance Tuning of Algorithmic Skeletons**", Tues 19th Jan, 2016.
HLPGPU, HiPEAC, Prague.
[[files]](/talks/2016_01_hlpgpu).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2016-01-hlpgpu/2016-01-hlpgpu.pdf).
1. Chris Cummins. "**Autotuning OpenCL Workgroup Size for Stencil Patterns**", Mon 18th Jan, 2016.
ADAPT, HiPEAC, Prague.
[[files]](/talks/2016_01_adapt).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2016-01-adapt/2016-01-adapt.pdf).
1. Chris Cummins.
"**Towards Collaborative Performance Tuning of Algorithmic Skeletons**", Thurs 14th Jan, 2016.
The University of Edinburgh, Scotland.
[[files]](/talks/2016_01_hlpgpu).
[[pdf]](https://github.com/ChrisCummins/phd/raw/master/talks/2016-01-hlpgpu/2016-01-hlpgpu.pdf).


## Misc

1. **Curriculum Vitae**.
[[source code]](/docs/cv).
[[pdf]](https://chriscummins.cc/cv.pdf).
[[html]](https://chriscummins.cc/cv/).
Build command: `$ bazel build //docs/cv`.
1. 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]](/docs/2016_12_wip_taco).
Build command: `$ bazel build //docs/2016_12_wip_taco`.
1. Chris Cummins. "**Deep Learning for Compilers**". PhD First Year Review
Document, 2016.
[[source code]](/docs/2016_11_first_year_review).
Build command: `$ bazel build //docs/2016_11_first_year_review`.
1. Chris Cummins, Hugh Leather. "**Autotuning OpenCL Workgroup Sizes**".
Rejected submission for PACT'16 Student Research Competition.
[[source code]](/docs/2016_07_pact).
Build command: `$ bazel build //docs/2016_07_pact`.
1. Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather.
"**Autotuning OpenCL Workgroup Sizes**".
Submission for PLDI'16 Student Poster Session.
[[source code]](/docs/2016_06_pldi).
Build command: `$ bazel build //docs/2016_06_pldi`.
1. Chris Cummins. "**Autotuning and Skeleton-aware Compilation**".
PhD Progression Review, 2015.
[[source code]](/docs/2015_09_progression-review).
Build command: `$ bazel build //docs/2015_09_progression_review`.


<h2>
Building the code
</h2>

I use [Bazel](https://bazel.build) as my build system of choice, with a
preliminary [configure](/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](https://www.docker.com/community-edition) image and follow the Ubuntu
instructions:

```sh
$ 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.

#### Ubuntu/MacOS instructions

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

```sh
$ ./configure
```

Note that CUDA support requires CUDA to have been installed separately,
see the [TensorFlow build docs](https://www.tensorflow.org/install/) for
instructions. CUDA support has only been tested for Linux builds, not macOS or
Docker containers.

The configure process generates a `bootstrap.sh` script which will install the
required dependent packages. Since installing these packages will affect the
global state of your system, and may requires root access, inspect this script
carefully. Once you're happy to proceed, run it using:

```sh
$ bash ./bootstrap.sh
```

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:

```sh
$ 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:
Copyright 2015-2019 Chris Cummins <chrisc.101@gmail.com>.

```bash
$ bazel test //...
```
Released under the terms of the Apache 2.0 license. See
`LICENSE` for details.
13 changes: 0 additions & 13 deletions labm8/LICENSE

This file was deleted.

32 changes: 0 additions & 32 deletions labm8/README.md

This file was deleted.

Loading

0 comments on commit 7ad1a2b

Please sign in to comment.