SpMV on GPUs using DirectX Work Graphs
Sparse Matrix–Vector Multiplication (SpMV) is an important operation used to accelerate deep learning models on the GPU, but its irregular structure makes it hard to load balance.
This project implements load-balanced SpMV using DirectX12 Work Graphs, letting the GPU schedule work dynamically to achieve better performance despite the irregular nature of the application.
July 2025 – Oct 2025 | DirectX12 | HLSL
GitHub
KV Cache Compression with KV Press
A KV cache eviction policy for LLM inference that considers both recent attention scores and value vectors when deciding which entries to keep.
- Integrated with the kvpress framework.
- Benchmarked using lm-eval-harness on LongBench with the Mistral-7B-Instruct LLM.
Sept 2025 – Dec 2025 | PyTorch | kvpress | lm-eval-harness
GitHub
Vulkan Forward Clustered Renderer
Written from the ground up to render 3D GLTF Scenes, with a focus on an easy-to-modify rendering pipeline.
Forward++, aka Forward Clustered Rendering, is achieved using a compute shader to determine which lights influence which chunk of the view frustum. This is followed by traditional forward rendering, which calculates lighting only for lights in the same chunk of the view frustum as the surfel. This lets it handle large numbers of lights.
Also includes a voxel renderer with compute shader-based meshing that reduces draw count by 6x.
April 2023 – July 2024 | C++17 | Vulkan
GitHub
Engine 2
A 3D rendering engine capable of drawing massive amounts of geometry efficiently, made possible using per-cluster culling.
Meshes are divided into clusters. A compute shader determines currently visible clusters to minimize the amount of geometry drawn. We are currently working to make this culling use hierarchical z.
Visibility buffer-based rendering is used to save on GPU bandwidth. All triangles are loaded directly from storage buffers, and all vertex attributes are software-interpolated manually in the pixel shader.
There is a complete separation of Geometry, Material, and Lighting passes.
It also includes an automatic asset management system for loading/unloading from disk.
A custom Sparse Array Entity Component System (ECS) implementation is included.
C++17 | OpenGL
GitHub
RayCer: Rust Path Tracer
A multithreaded path tracer. Based on the book series
"Ray Tracing in One Weekend"
Rust
GitHub
Terrain Generation Experiments
I have been experimenting with various terrain generation methods like
Generation on the GPU
and
fractal landscapes
C++ | OpenGL
GitHub
Lyra Engine
My first and worst 3D rendering engine.
C++ | OpenGL
GitHub
Latent Diffusion Based Image Inpainting with Multimodal Guidance
Better image inpainting that can be guided by
- Text prompts
- Masks
- Reference images
Finetuning the stable diffusion inpainting model on a custom-prepared dataset from the
Open-Images Localized Narratives dataset
Also, by modifying the existing classifier free guidance mechanism, reference images are supported to guide the generated output. [WIP]
Pytorch | HuggingFace Diffusers