Benchmarking GPU Generations
Running the same kernels across architectures to see which generational claims survive contact with a workload.
Vendor performance claims are not lies, but they are answers to questions you did not ask. The honest way to find out what a new architecture does for you is to run your own kernels on it.
This project did exactly that: the same set of workloads, compiled and tuned per-target, measured across several GPU architectures.
The pattern
Generational gains were real and highly uneven. Kernels bound by arithmetic throughput tracked the marketing closely. Kernels bound by memory bandwidth tracked the memory subsystem instead, which improved on a completely different schedule. Anything bound by occupancy or divergence did whatever the scheduler felt like.
The practical conclusion is boring and correct: knowing which of those three categories your kernel falls into predicts your upgrade benefit better than any headline figure.
Methodology notes
Comparing across architectures is mostly an exercise in not fooling yourself. Different compilers, different optimal launch configurations, different clock behaviour under sustained load. A comparison where one side was tuned and the other was not is worse than no comparison, because it looks like data.
Most of the effort went into making the comparison fair rather than making it fast.