In this guide, I will describe a method to "override" Nvidia's GPU Boost algorithm and lock to a particular frequency. In its current form, Nvidia's GPU Boost will set a GPU's core clock frequency according to the voltage-frequency (VF) curve, which can be observed using MSI Afterburner and other GPU overclocking software. In particular, it will boost as high as it can up the VF curve with a few caveats:
There is a voltage limit associated with Nvidia graphics cards, which is usually around 1.093-1.100V. In most cases, the highest you will achieve is 1.05-1.063V unless you increase the voltage slider to 100% in MSI Afterburner and manually tune the VF curve.
If the graphics card's power limit is reached, the GPU core clock will throttle downwards to keep the power draw below the limit. This is usually associated with drops in core voltage as well. Things are a bit more complicated with Ampere, as there are multiple power limits aside from the one you see advertised, which refers to total board power draw.
If the graphic's card temperature limit is reached, the GPU core clock will throttle downwards to keep the temperature below the limit.
There are 15MHz core clock frequency drops at certain temperature thresholds, which are BIOS-specific. For example, there may be 15MHz drops every 10C.
Caveat 4 is probably the most obnoxious limitation. The method in this guide eliminates this caveat and produces the following result instead: GPU core clock remains locked at the value you set it at, but core voltage will increase in response to higher temperatures. Note that the first three caveats above still hold. There are ways around those as well, but that will not be covered in this guide.
For this task, you will need GPU overclocking software. I recommend MSI Afterburner, as it offers a lot more flexibility over software such as EVGA Precision X1. To lock the core frequency, I will be using Nvidia's System Management Interface (SMI). To learn more about SMI, click here.
Open a text editor such as Windows Notepad and enter the following line of code:
nvidia-smi -lgc 2010
The value '2010' refers to the core clock frequency I have chosen. This is a placeholder, so obviously you'll want to enter a different value unless you also want to run your card at 2010MHz. Another thing to note is that Turing and Ampere GPU core clocks are adjusted in increments of 15MHz. Also note that you will not be able to achieve some higher clock speeds unless you increase the core clock offset in MSI Afterburner.
Important: Save the file with a .bat extension.
You will want to write a batch file to reset the core frequency when desired. Again, open a text editor and enter the following line of code:
nvidia-smi -rgc
Save the file with a .bat extension.
Run the batch file from Step 1 as an administrator to apply it. Your GPU core clock frequency should be locked at the value specified in the file. Next, run the batch file from Step 2 as an administrator to apply it. Your GPU core clock frequency should be reset. That's all there is to it. Just run the batch file from Step 1 whenever you want to lock the core clock, then run the batch file from Step 2 whenever you want to reset the core clock.
You can undervolt your card at a given frequency by simply increasing the core clock offset. By increasing this offset, the VF curve shifts upward, pushing the desired frequency below and to the left along the curve. For example, if your card was running at 2010MHz at 1.05V and you increase the core clock offset by some positive amount, then it'll run 2010MHz at a lower voltage (without loss of generality, let's say 0.975V). Obviously, you'll want to test the stability of the card as you increase the core clock offset. Additionally, increasing the core clock offset will "unlock" higher frequencies for the method above.