John Hable Profile picture
Nov 26 6 tweets 3 min read Read on X
What does game dev optimization look like? When I was in college, one of my professors told the class: Do not optimize code because the compiler is smarter than you. He was wrong. As an example, here is the timeline of a frame from Uncharted 2 (my old gdc talk). Image
The SPUs are mostly fully occupied. For context, anything in blue was hand-optimized by the ICE team. Everything in RED was hand-optimized by the game team. And the rest was optimized to various degrees. Without hand-optimization, we wouldn't have fit in frame. Image
Here's an example of what it looked like. The first step is to vectorize the code. On PS3, we generally got a 4x to 8x speedup from vectorization on SPU. On modern pcs, it varies by application but I tend to get 2x perf from manually vectorizing code. YMMV. Image
The next step was to lay out all the instructions in order, keeping track of the latency. SPUs could dual issue one even and odd instruction per cycle, and since there was no cache all memory loads/stores took the exact same amount of time. Image
Image
The next step was to software pipeline the code. The {} was a comment, where e6:1 means even instruction, 6 cycle latency, and runs from iteration 1 in the loop. This way we could run the loop with no stalls. On SPUs, this generally gave us a 2x improvement after vectorization. Image
It was a rare time where such hyper optimization netted notable wins. But game devs constantly optimize vectorize code wherever bottlenecks may be. If you think game devs don't optimize code that beats the compiler, then I don't really know what to tell you.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with John Hable

John Hable Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(