nvbench icon indicating copy to clipboard operation
nvbench copied to clipboard

Extend nvbench to measure SOL for compute-bound workloads

Open samaid opened this issue 1 year ago • 1 comments

Existing nvbench allows to measure SOL for memory bound workloads by providing

state.addGlobalMemoryReads(nbytes)
state.addGlobalMemoryWrites(nbytes)

It would be useful to extend this concept to provide flops such that we can measure how close workload is to the compute roofline.

samaid avatar Jul 26 '24 16:07 samaid

We briefly discussed this internally and concluded that there is no good way to provide this feature for the following two reasons:

  1. There is no easy way to query peak flops for a given GPU architecture.
  2. The instruction mix may not use floating point at all, leading to a different peak instruction issue rate

We could work around issue 1. and figure out the peak FLOPS for various GPU architectures. However, this still does not address issue 2. that different kinds of compute bound benchmarks will have different theoretical maximums, depending on what kind of instructions they use.

The only valid way would be if users provided the peak metric themselves depending on their benchmark, since only they can know what the bound is (whether that is FLOPs or integer operations, or shuffles, reductions, atomic throughput etc.)

This metrics could also relate to CUPTI metrics.

bernhardmgruber avatar Dec 02 '25 22:12 bernhardmgruber