RSSAmplifier

Blog

Alex Reinking

alexreinking.comRSS feed ↗14 posts

Latest posts

Halide and Python Quick-Start Guide

I spent a solid amount of my engineering time last year getting Halide's pip packaging up to snuff. Distributing binaries that are compatible with manylinux and use heavy, slow-to-build dependencies like LLVM is a particular sort of nightmare 1 ... wiring up dozens of moving parts between GitHub Actions, Docker, cibuildwheel …

Exo 2: Growing a Scheduling Language

Published at ASPLOS 2025. Link to paper User-schedulable languages (USLs) help programmers productively optimize programs by providing safe means of transforming them. Current USLs are designed to give programmers exactly the control they want, while automating all other concerns. However, there is no universal answer for what performance-conscious programmers want …

I'm Giving an Invited Talk on Halide at ASPLOS 2025!

I'm honored to be giving an invited talk at the inaugural User-Schedulable Languages (USL) workshop , part of ASPLOS 2025. If you'll be in Rotterdam for the conference, come say hi! My talk, titled "Halide: Industrial Experience, Design Retrospective, and Future Directions," is scheduled for 11:20 AM local time and …

I'm at Adobe now!

It's been a while since I updated my website, or published anything on my blog, but there's no time like the present... yes, this announcement is back-dated. As of today, I'm a Research Scientist/Engineer at Adobe ! I'm working full-time on Halide research and engineering now. I've got two projects …

I Finished my Ph.D.!

It took six and a half years, but I'm happy to announce that I finally got my Ph.D. in Computer Science. Hooray! As I write this, I'm starting a short-term post-doc at MIT to wrap up a few research projects, but I'm actively applying to jobs. If you have …

Exocompilation for Productive Programming of Hardware Accelerators

Published at PLDI 2022. Link to paper High-performance kernel libraries are critical to exploiting accelerators and specialized instructions in many applications. Because compilers are difficult to extend to support diverse and rapidly-evolving hardware targets, and automatic optimization is often insufficient to guarantee state-of-the-art performance, these libraries are commonly still coded …

How to Use CMake Without the Agonizing Pain - Part 2

Welcome back to Part 2 of this series! I was very happy to see the warm reception Part 1 got over on /r/cpp . Before we get started, I thought I would take this opportunity to clarify a couple of points about this series. First, this series is not a …

How to Use CMake Without the Agonizing Pain - Part 1

When age fell upon the world, and wonder went out of the minds of men; when grey cities reared to smoky skies tall towers grim and ugly, in whose shadow none might dream of the sun or of spring's flowering meads; when learning stripped earth of her mantle of beauty …

Building a Faster Triangular Solver than MKL

A significant part of my research involves investigating algorithms with interesting properties and then trying to optimize them to fully understand how they work. One recent, and fairly successful, exploration was into triangular substitution solvers. In this blog post, I'm going to explain the algorithm and an unconventional recursive approach …

CMake IS a Build System

One of the most common things you'll hear when learning CMake is that "CMake is not a build system". This is technically correct, depending on one's definition of a "build system". However, this statement alone is meaningless on a practical level as it doesn't communicate anything actionable regarding how to …

Building a Dual Shared and Static Library with CMake

When packaging software libraries, it is a common requirement to deploy both a static and a shared version. However, CMake library targets are always either one or the other. How do we make it easy for our users to choose which one they want to link to, and why is …

Perceus: Garbage Free Reference Counting with Reuse

PLDI 2021 Distinguished Paper Link to paper We introduce Perceus, an algorithm for precise reference counting with reuse and specialization. Starting from a functional core language with explicit control-flow, Perceus emits precise reference counting instructions such that programs are garbage-free, where only live references are retained.This enables further optimizations …

Formal Semantics for the Halide Language

Pre-print on arXiv We present the first formalization and metatheory of language soundness for a user-schedulable language, the widely used array processing language Halide. User-schedulable languages strike a balance between abstraction and control in high-performance computing by separating the specification of what a program should compute from a schedule for …

A Type-Directed Approach to Program Repair

Published at CAV 2015. Link to paper Developing enterprise software often requires composing several libraries together with a large body of in-house code. Large APIs introduce a steep learning curve for new developers as a result of their complex object-oriented underpinnings. While the written code in general reflects a programmer …