nvmlDeviceGetClockInfo function (NVML) does not work on my GPU

I’m now working on my PhD thesis which is to be in the field of GPU computing specially in thread scheduling.
In these days I am dealing with NVAPI and NVML. These two libraries are tools for a developer to manage GPUs. Unfortunately I faced with the limitation that some important functions in these libraries specially in NVML such as “nvmlDeviceGetClockInfo” function does not work in my GPU. Whereas there are some softwares such as “GPU Caps viewer” or "GPU-Z"​ that monitors almost all of the GPU parameters such as clock frequency (which is important to me) and when I run it, it shows me the temperature, fan speed, core clock frequency, memory clock frequency, etc. I have the question that how I can get these information in my code? How does GPU Caps get these information? Is there any other sdk or library that can help me?
​ More important is that whether I can change the frequency (like DVFS)? i.e does my GPU support DVFS? During running a benchmark I found out (by using GPU-Z o GPU Caps Viewer) that the frequency of my GPU is changing. How is it possible?

My next question is: I read some research papers. There is a big question for me: Can I get the threads before arriving to driver? Can I reorder them? How? Should I modify the driver?​

[i]My system specifications:
System 1:
CPU: Intel Core i7 4770k
Memory: 8 G
Graphics: Zotac NVIDIA Geforce GTX 760

System 1 (laptop):
CPU: Intel Core i7 4500
Memory: 4 G
Graphics: NVIDIA Geforce 740M
The problem exists on both systems.