Linear and Relational Algebra Compiler
Linear algebra operations like matrix multiplication are at the heart of neural networks, while relational algebra computations operations joins are at the heart of most database systems.
A line of work has studied how to unify these two areas. The idea is that both arrays and relations can be seen as a special kind of dictionary: Arrays map indices to floats, while relations map rows to natural numbers (stating how often a given row exists in a database table). From this perspective, matrix multiplication and relational joins are instances of the same operation! The use of a common representation allows using one codebase for both types of computations and makes combined linear-relational workloads more efficient.
In this project, you will write a compiler for linear and relational computations. Possible directions are:
- Designing an intermediate representation (IR) for linear-relational workloads,
- Compiling the IR to C,
- Translating from linear to relational algebra,
- Implementing automatic differentiation to enable learning,
- Supporting different data representations and indexes,
and/or
- Supporting the compilation of a subset of SQL.