2025¶
Post from Dec 08, 2025
The new engine that'll power Easy Diffusion's upcoming v4 release (i.e. sdkit3) has now been integrated into Easy Diffusion. It's available to test by selecting v4 engine in the Settings tab (after enabling Beta). Please press Save and restart Easy Diffusion after selecting this.
Post from Nov 27, 2025
Managed to get stable-diffusion.cpp integrated into sdkit v3 and Easy Diffusion.
Post from Nov 18, 2025
Successfully compiled the VAE of Stable Diffusion 1.5 using graph-compiler.
Post from Nov 13, 2025
PolyBlocks is another interesting ML compiler, written using MLIR. It's a startup incubated in IISc Bangalore, run by someone (Uday Bondhugula) who co-authored a paper on compiler optimizations for GPGPUs back in 2008 (17 years ago)!
Post from Nov 07, 2025
Wrote a simple script to convert ONNX to GGML. It auto-generates C++ code that calls the corresponding ggml functions (for each ONNX operator). This file can then be compiled and run like a normal C++ ggml program, and will produce the same results as the original model in PyTorch.
Post from Nov 05, 2025
This post concludes (for now) my ongoing deep-dive into ML compilers, while researching for sdkit v3. I've linked (at the end) to some of the papers that I read related to graph execution on GPUs.
Post from Oct 27, 2025
A possible intuition for understanding GPU memory hierarchy (and the performance penalty for data transfer between various layers) is to think of it like a manufacturing logistics problem:
- CPU (host) to GPU (device) is like travelling overnight between two cities. The CPU city is like the "headquarters", and contains a mega-sized warehouse of parts (think football field sizes), also known as 'Host memory'.
- Each GPU is like a different city, containing its own warehouse outside the city, also known as 'Global Memory'. This warehouse stockpiles whatever it needs from the headquarters city (CPU).
- Each SM/Core/Tile is a factory located in different areas of the city. Each factory contains a small warehouse for stockpiling whatever inventory it needs, also known as 'Shared Memory'.
- Each warp is a bulk stamping machine inside the factory, producing 32 items in one shot. There's a tray next to each machine, also known as 'Registers'. This tray is used for keeping stuff temporarily for each stamping process.