Continuous Nvidia CUDA Profiling in Production
polarsignals.com
Continuous Nvidia CUDA Profiling in Production
1–10 of 11 posts
Re: Continuous Nvidia CUDA Profiling in Production
#2Re: Continuous Nvidia CUDA Profiling in Production
#3Author here, would be happy to field any questions or feedback!
Re: Continuous Nvidia CUDA Profiling in Production
#4Author here, would be happy to field any questions or feedback!
Re: Continuous Nvidia CUDA Profiling in Production
#5Author here, would be happy to field any questions or feedback!
This "low-overhead always on GPU profiler" seems really cool and useful, but we're not using Kubernetes for anything, and the instructions for how to use it seems to only include Kubernetes. Is there a way of running this without Kubernetes?
Re: Continuous Nvidia CUDA Profiling in Production
#6Author here, would be happy to field any questions or feedback!
I feel like I've seen Cupti have fairly high overhead depending on the cuda version, but I'm not very confident -- did you happen to benchmark different workloads with cupti on/off?
---
If you're taking feature requests: a way to subscribe to -- and get tracebacks for -- cuda context creation would be very useful; I've definitely been surprised by finding processes on the wrong gpu and being easily able to figure out where they came from would be great.
I did a hack by using LD_PRELOAD to subscribe/publish the event, but never really followed through on getting the python stack trace.
Re: Continuous Nvidia CUDA Profiling in Production
#7Author here, would be happy to field any questions or feedback!
Does the profiler read any of the GPU's performance counters? Would be super cool to have an open source tool that can capture the same data nsight compute does.
Re: Continuous Nvidia CUDA Profiling in Production
#8Author here, would be happy to field any questions or feedback!
Thanks for the post, this is pretty cool! I feel like I've seen Cupti have fairly high overhead depending on the cuda version, but I'm not very confident -- did you happen to benchmark different workloads with cupti on/off? --- If you're taking feature requests: a way to subscribe to -- and get tracebacks for -- cuda context creation would be very useful; I've definitely been surprised by finding processes on the wro…
Re: Continuous Nvidia CUDA Profiling in Production
#9Earlier quoted context omitted.
Does the profiler read any of the GPU's performance counters? Would be super cool to have an open source tool that can capture the same data nsight compute does.
This profiler is focused on kernel execution but we do scrape high level metrics ( https://www.polarsignals.com/blog/posts/2025/06/04/latest-in... which is based on https://github.com/polarsignals/gpu-metrics-agent ). What performance counters in particular were you interested in?
Re: Continuous Nvidia CUDA Profiling in Production
#10Earlier quoted context omitted.
This profiler is focused on kernel execution but we do scrape high level metrics ( https://www.polarsignals.com/blog/posts/2025/06/04/latest-in... which is based on https://github.com/polarsignals/gpu-metrics-agent ). What performance counters in particular were you interested in?
Cache hit rate is probably the most immediately useful. Although given that this is for always-on profiling maybe this project isn't as geared towards optimizing kernels as I originally thought? In theory reading the counters should be low overhead though.
[ All from my experience on home GPUs, and in lah with 2 nodes with 2 80GB H100 each. Not extensively benchmarked ]
Events like kernel launch, which this profiler reads right now, is a very small overhead (1-2%). Kernel level metrics like DRAM utilisation, cache hit rate, SM occupancy, etc usually give you a 5-10% overhead. If you want to plot a flame graph at a instruction level (mostly useful for learning purposes) then you go off the rails - even 25% overhead I have seen. And finally full traces add tons of overhead but that's pretty much expected - they anyways produce GBs of profiling data.