Last updated March 28th, 2022.

I am always looking for students to mentor—it’s one of the best parts of my job! If you’re interested in architecture and/or programming languages, take a look at the project ideas below. If any sound cool (or if you have ideas of your own) feel free to reach out to me at gussmith@cs.washington.edu.

I’m currently working with Vishal Canumalla (GitHub, LinkedIn) and Andrew Cheung (GitHub, LinkedIn) on Glenside. At UW, I’ve also worked with Andrew Liu, who helped me wrap up Bring Your Own Datatypes and begin Glenside. I’ve been lucky to mentor many other students in the past. While at Penn State, I worked with a team of motivated undergrads:

  • Nelson Troncoso Aldas (pursuing PhD at PSU as of 2021)
  • Christopher Pratt (pursuing Bachelor’s at PSU as of 2020)
  • David de Matheu (working at Microsoft as of 2020)
  • Tom Kawchak (working at Microsoft as of 2020)

We worked on developing a haptic glove and computer vision system for the visually impaired. Working with this team remains one of my fondest research memories, and it’s been awesome to see us all go on to do great things! (Not to mention, it’s been cool to have some of them also move to Seattle!)

Here’s an incomplete list of potential mentee projects:

Lakeroad

If you have any interest in FPGAs, program synthesis, or Rust/Racket in general, I’d love your help on my new project!

Restructuring the Glenside Language

I have some ideas about how I might want to change the semantics of the Glenside language. This could be a mentee project!

The Long List of Glenside Issues

Read the Glenside README and check out the Glenside issues list to see if there’s anything you want to contribute to.

An Exploration of Custom Datatypes in Deep Learning

One-liner: Using a framework which I built on top of the deep learning compiler TVM, conduct a thorough investigation of how custom numeric datatypes (alternatives to float and double) affect deep learning workloads.

From fall 2018 to spring 2020, I worked on TVM, which is a compiler for deep learning workloads. TVM takes in a high-level deep learning program (written, e.g., in Tensorflow), converts the program to TVM’s own internal representation, does optimizations over the program, and compiles it down to machine code. Onto TVM, I added a framework that allows people to explore new datatypes—alternatives to the 32-bit float and 64-bit double types that we are so used to. (bfloat16 and posits are great examples!) I ran a small experiment with this new framework, in which I trained models in float32 and then converted their trained weights to various new datatypes to examine whether they’d retain their trained accuracy. (It’s okay if you don’t understand any of this jargon!)

I moved on to a new project after finishing my qualifying exams, and have been looking for someone who could lead an effort to turn this into a paper!

This could mean:

  • Figuring out how to train with custom datatypes
  • Developing a “quantization” scheme to quantize from float32 to smaller custom datatypes (e.g. 8-bit posits)
  • Exploring whether using different datatypes in different layers of a workload would ever be beneficial
  • Developing a system for automatically choosing datatypes for a workload (based on power, performance, model accuracy targets)

No specific experience necessary. Familiarity with C++ and Python would be helpful!