Eric Holk

I am a Ph.D. candidate at Indiana University. My research interests relate to designing and implementing programming languages that facilitate the production of safer, more reliable, and better performing software. I am part of the Center for Research in Extreme Scale Technologies (CREST).



Harlan is a high level language for general purpose GPU computing. It supports a full complement of functional programming features that work seamlessly on both CPUs and GPUs. For more information, see our OOPSLA paper. The code for Harlan is available at

GPU Graph Algorithms

In collaboration with the Software Engineering Institute at Carnegie Mellon University, CREST is developing a library of graph algorithms that effectively leverage GPU for performance and scalability.


The goal of this project is to apply HPX in a challenging real-time and power-constrained environment. We are doing this by means of an autonomous quadcopter. This is in connection with CREST's Fabrication Lab.

Elegant Weapons

Elegant Weapons is an R6RS Scheme library for creating compilers that generate C code. This project is used by Harlan.


Rust is a new systems language that is being developed by Mozilla. It features a powerful type system, explicit control over garbage collection, and safe communication primitives. I worked at Mozilla as an intern during the summers of 2011 and 2012. My biggest contributions were implementing the task system as well as designing and implementing the pipes communication system.

Computational Photography

My advisor, Andrew Lumsdaine, is interested in photography with plenoptic cameras. These cameras capture directional information, which enables things such as refocusing an image after the fact. I have produced a web-based refocusing algorithm in WebGL. See the live demo!


Kanor is a declarative language for specifying collective communication patterns in MPI programs. See our PADL paper for more information.


    1. Eric Holk
    2. Ryan Newton
    3. Jeremy Siek
    4. Andrew Lumsdaine
    Region-based Memory Management for GPU Programming Languages: Enabling Rich Data Structures on a Spartan Host October 2014 International Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA 2014) PDF ACM
    1. Jason Hemann
    2. Eric Holk
    Visualizing the Turing Tarpit October 2013 Workshop on Function Art, Music, Modeling and Design (FARM 2013) PDF
    1. Eric Holk
    2. Milinda Pathirage
    3. Arun Chauhan
    4. Andrew Lumsdaine
    5. Nicholas D. Matsakis
    GPU Programming in Rust: Implementing High-level Abstractions in a Systems-level Language May 2013 Workshop on High-level Parallel Programming Models and Supportive Environments (HIPS 2013) PDF
    1. Joseph A. Cottam
    2. Eric Holk
    3. William Byrd
    4. Arun Chauhan
    5. Andrew Lumsdaine
    High Level Coordination Specification February 2013 Workshop on Leveraging Abstractions and Semantics in High-performance Computing (LASH-C 2013) PDF
    1. William Byrd
    2. Eric Holk
    3. Daniel Friedman
    miniKanren, Live and Untagged September 2012 Workshop on Scheme and Functional Programming (SFP12) PDF
    1. Eric Holk
    2. William Byrd
    3. Nilesh Mahajan
    4. Jeremiah Willock
    5. Arun Chauhan
    6. Andrew Lumsdaine
    Declarative Programming for GPUs September 2011 International Conference on Parallel Computing (ParCo 2011) PDF
    1. Eric Holk
    2. William E. Byrd
    3. Jeremiah Willcock
    4. Torsten Hoefler
    5. Arun Chauhan
    6. Andrew Lumsdaine
    Kanor — A Declarative Language for Explicit Communication Jan. 2011 Thirteenth International Symposium on Practical Aspects of Declarative Languages (PADL'11) PDF

Press Coverage