I’m using NVML. I need this to work for both windows and linux.

I’m trying to develop a feature in my software that allows the user to adjust their ampere card’s clock speeds. before they were only able to view information about their card, but i’ve had a lot of requests to add the ability to adjust clock rates.

i found nvmlDeviceSetApplicationsClocks, but this always returns NVML_ERROR_NOT_SUPPORTED. So then i found nvmlDeviceSetGpuLockedClocks, nvmlDeviceResetGpuLockedClocks, nvmlDeviceSetMemoryLockedClocks and nvmlDeviceResetMemoryLockedClocks. These look like exactly what i’m looking for.

However the problem is that while nvmlDeviceSetGpuLockedClocks and nvmlDeviceResetGpuLockedClocks work perfectly fine, nvmlDeviceSetMemoryLockedClocks and nvmlDeviceResetMemoryLockedClocks do absolutely nothing at all. they all return NVML_SUCCESS, but setting or resetting the memory clock just doesn’t do anything at all, the memory clock rate stays exactly the same as it was before the call was made.

How do i fix this? I’ve tried both getting supported clock rates which is needed for the set application clocks functions, as well as just passing in the desired MHz, but neither of them have any affect on the actual memory clock rate. Any ideas?