Education

University of Alberta

B.Sc. Honors in Computing Science

Experience

Software Engineer Intern (Triton Compiler Team)

Advanced Micro Devices (AMD)

  • Profiled AMD ATOM LLM serving workloads on MI350 accelerators across Qwen, DeepSeek, and GPT-OSS models to measure Triton vs non-Triton operator usage.
  • Analyzed operator backend coverage across Triton, HIP, AITER, and Composable Kernel, identifying non-Triton execution paths that could be replaced with optimized Triton kernels.
  • Assessed feasibility of rewriting selected RMSNorm, MoE, and attention operators in Triton to improve maintainability, compiler coverage, and backend optimization opportunities.

Undergraduate Research Assistant

Compiler Design and Optimization Laboratory (CDOL)

  • Developed system architecture assignments based on SiFive processors using the gem5 simulator and RISC-V instruction set to model processor behavior for a computer architecture course.
  • Reproduced AMD GPU accelerator behavior in gem5 from HIP binaries, analyzing AMDGPU assembly to study the effects of branching and access strides on thread divergence and memory coalescing.
  • Implemented a Spectre V1 proof-of-concept in gem5 to evaluate how cache timing and branch prediction affect speculative-execution side channels.
  • Prototyped PyTorch operators in a new Triton-based DSL called Decoupled Triton, developing kernels and microbenchmarks to evaluate language ergonomics.

Technical Skills

Languages

C/C++ Python CUDA/HIP TypeScript/JavaScript Rust x86/RISC-V/AArch64 Assembly Java LaTeX

Developer Tools

Docker Clangd/Clang-Format CMake Git/GitHub AWS Google Cloud Linux macOS

Technologies/Frameworks

LLVM MLIR Triton PyTorch gem5 ANTLR4 NumPy OpenGL Vulkan SDL

Projects

Gazprea Compiler

C++MLIRLLVMANTLR4CMakeGit

Built an end-to-end compiler for Gazprea, a statically typed language with native array, vector, and matrix types, array arithmetic, reference semantics, tuples, and structs.

  • Authored the ANTLR4 grammar for lexing/parsing and used MLIR/LLVM for code generation.
  • Designed a fully typed heterogeneous AST pass pipeline with an abstract AST interface using CRTP and std::variant nodes, avoiding virtual dispatch for symbol resolution, type checking/promotion, and code generation.
  • Implemented AST-to-MLIR lowering through a BackEnd MLIR/LLVM facade, isolating IR construction for language constructs, runtime calls, implicit casts, and dynamic shape/size checks behind a clean API.
  • Created a C++ runtime library for the custom language with fast buffered I/O through the {fmt} library.

Game Boy Emulator Web App

C/C++SDL3EmscriptenCMake

Built a Game Boy emulator and deployed it to the browser as WebAssembly with SDL3 for graphics, audio, and controls.

  • Built a Game Boy emulator and deployed it publicly on my personal website as WebAssembly via Emscripten, using SDL3 for graphics, audio, and controls.
  • Implemented a Sharp SM83 CPU, MMU memory mapping and MMIO, and PPU to emulate Game Boy hardware.
  • Validated behavior using commercial Game Boy ROMs including Tetris, Kirby's Dream Land, and Pokemon Red/Blue.

ECS Rendering Engine

C++CMakeVulkanOpenGLSDL3

Designed a modular engine with Vulkan and OpenGL backends behind a shared RenderDevice API.

  • Designed a modular engine with separate Vulkan and OpenGL backends behind a single abstract RenderDevice API; implemented a complete Vulkan backend using the Vulkan-Hpp RAII C++ bindings instead of the raw Vulkan C API.
  • Used modern C++ features including perfect forwarding, variadic templates, format, type traits, concepts, smart pointers, and STL containers to ensure safety and performance.