Why do GPUs Use SIMT – Isn’t SIMT Slow With Branching?

Almost all modern GPUs use the Single-Instruction Multiple-Thread (SIMT) architecture. With SIMT a group of threads (or wavefront) execute the same instruction in lock-step. Apart from making it a pain to program, it also means that when threads execute different code paths (e.g., if/else), the GPU must execute each branch one-by-one instead of simultaneously. This […]

Why Writing SIMT (GPU) Assembly is Hard

Years ago someone asked me if I would add the ability to write shader assembly to the graphics drivers I was writing. My reply was: you really don’t want to do that. I’ve been working on adding switch support to Warp3D Nova’s drivers, and decided to explain why writing GPU code is hard: Modern GPUs […]

How Daily Journaling Helps Me Get More Done

Daily journalling is a key part of how I keep my projects moving. Without it I’d be wasting time every day trying to remember what I was up to, and what I should do next. That wasted time quickly adds up. This is particularly true when I switch between projects (currently weekly).The ProcessHere’s what I […]

Duct Tape Programming is Hard

A few weeks ago I watched Ian Cooper’s talk titled “Test Driven Design (TDD) – Where Did it All Go Wrong?” In it, he suggests being more like a duct tape programmer (first time round). It sounded great, so I decided to try it and hit a snag almost immediately…Duct Tape ProgrammerA “duct tape programmer” […]

The Perils of Writing Reusable Code

If you’ve taken a programming course, the chances are that you’ve been told to write reusable code when possible. It certainly sounds great. Writing software is time consuming, so being able to reuse code instantly improves your productivity.I’m going to push back a little. Yes, code reuse is great. I reuse code; I use libraries […]

Shopping Cart
Scroll to Top