Software

Software

The group's research ships as software: compilers, languages, and libraries. Together they form a connected line of work on making computation portable across data representations and machines.

Sparse tensor & array compilation

Compilers and libraries that make tensor and array code portable across dense and sparse formats.

Distributed sparse computation

Compilers and runtimes that scale sparse and dense computation across machines.

  • Legate Sparse

    Distributed sparse computation

    A distributed, accelerated drop-in replacement for the scipy.sparse library that runs unmodified sparse SciPy programs across clusters of CPUs and GPUs.

    Python Legate CUDA

Compiler representations & iteration models

Intermediate representations and iteration abstractions that other compilers build on.

  • Etch: Indexed Streams

    Compiler representations & iteration models

    A Lean 4 compiler and formalization of indexed streams — an operational intermediate representation for the fused execution of contraction programs across sparse tensor and relational algebra.

    Lean 4

  • Looplets

    Compiler representations & iteration models

    A language for structured coiteration that breaks iteration over structured and sparse arrays into cases the compiler can specialize, implemented in the open-source Finch array compiler.

    Julia

Domain-specific languages

Languages that raise the level of abstraction for a specific domain.

Meta-compilers, JITs & virtual machines

Systems that generate compilers, interpreters, and fast baseline JITs.

  • Copy-and-Patch Compilation

    Meta-compilers, JITs & virtual machines

    A technique that generates machine code by copying pre-built binary stencils and patching in constants and addresses, producing baseline code far faster than a traditional compiler backend.

    C++ LLVM

  • Deegen: A JIT-Capable VM Generator

    Meta-compilers, JITs & virtual machines

    A meta-compiler that takes a dynamic language's bytecode semantics, written as C++ functions, and generates a high-performance interpreter and a Copy-and-Patch baseline JIT.

    C++ LLVM

Accelerator & dataflow compilation

Compilers and simulators targeting reconfigurable and dataflow hardware.

  • SAM: The Sparse Abstract Machine

    Accelerator & dataflow compilation

    A streaming-dataflow abstract machine and intermediate representation for compiling sparse tensor algebra to reconfigurable and fixed-function dataflow accelerators.

    Python C++