The first major project I ever worked on started as my introduction to Rust in 2023. Being a computer science undergrad at a university that emphasizes ML and Deep Learning, my first project for fun (which you will not see on this blog) was a deep learning backwards and forwards runtime from scratch. It was absolutely awful, but it has a special space in my heart. Matrices were represented as Vectors of Vectors, in other words extraordinarily memory inefficient. It only supported linear layers and activations such as ReLu and Sigmoid, yet through it all I still grew a passion for it and a delusional idea for what it's future might be
A couple months after I started this inefficient project, a couple of developers who actually know what they were doing saw my project and reached out for a bit of a rebranding. This became my first true dive into a graph-based ML compiler. It wrote to XLA as a backend, and through no real work of my own supported a whole bunch of cool operations and tensor math I had never seen before (I pretty much only worked on constant folding).
After a couple years of learning and silly side projects (not to say that I am ever going to not work on silly side projects), I started up MatStack as my tried and true attempt at an ML Compiler. I didn't just stop at compiling however, as my Computer Engineering minor has introduced me to the awesome world of computer architecture! As such, my goal with MatStack was to create 1. A language frontend like python that can describe tensor operations, 2. A bytecode compiler that translates this language into tensor operations on a stack-based machine, 3. A stack-based virtual machine to run these instructions, and finally 4. A computer architecture that can run some MatStack bytecode on an FPGA and display the result.