diff --git a/src/Magnum/GL/OpenGLTester.h b/src/Magnum/GL/OpenGLTester.h index 57230d6d2..3445afee9 100644 --- a/src/Magnum/GL/OpenGLTester.h +++ b/src/Magnum/GL/OpenGLTester.h @@ -138,6 +138,24 @@ If @gl_extension{ARB,timer_query} desktop extension (part of OpenGL 3.3), available, GPU time benchmarks will get automatically skipped, producing a @cb{.ansi} SKIP @ce message on the output. +Note that GPUs are subject to the same frequency scaling as CPUs, and depending +on the vendor and driver the variance may be so high that the measurements are +useless. This is particlarly the case with Intel integrated GPUs, which heavily +downclock for power saving, and do so independently on the CPU power mode. On +Linux it's possible to tune the behavior by setting the min and max frequency +to the same value, for example: + +@m_class{m-console-wrap} + +@code{.sh} +cat /sys/class/drm/card1/gt/gt0/rps_max_freq_mhz > /sys/class/drm/card1/gt/gt0/rps_min_freq_mhz +@endcode + +On systems that have multiple GPUs, pick `cardN` based on whether it has a +`gt/` subdirectory, NVidia GPUs for example don't have it. Discrete GPUs have +additional tunables, see the [official Intel docs](https://www.intel.com/content/www/us/en/docs/oneapi/optimization-guide-gpu/2024-2/configuring-gpu-device.html) +for more information. + @note This class is available only if Magnum is compiled with @ref MAGNUM_TARGET_GL enabled (done by default). See @ref building-features for more information.