Measuring GPU Load in Windows
Most modern operating systems offer a simple and graphical way to monitor CPU usage. However, when you work with OpenCL, you are going to be interested in measuring GPU load as well. Two free utilities let you measure GPU load in modern Windows versions.
GPU manufacturers offer utilities that display the core clock, memory clock, temperature and load for each GPU found in the system. However, one of the great disadvantages of these utilities is that they work with the GPUs from a specific manufacturer. Thus, if you are developing OpenCL applications and you want to test them with diverse GPUs from different manufacturers, you have to use a many proprietary utilities to measure the GPU load in each computer.
Luckily, there are two free utilities that can help you to measure the GPU load in modern Windows versions and they support most modern GPUs from diverse manufacturers. GPU-Z 0.4.4, developed by TechPowerUp and PC-Wizard 2010 version 1.94, developed by CPUID, allow you to track GPU load.
GPU-Z provides the most complete information about the GPU usage in real-time. When you launch this utility and click on the Sensors tab, it displays real-time information for the following variables:
- GPU Core Clock
- GPU Memory Clock
- GPU Temperature
- Fan Speed
- GPU Load
- Fan Speed
- GPU Temp. (DISPIO)
- GPU Temp. (MEMIO)
- GPU Temp. (SHADERCORE)
You can click on the arrow located at the right-hand side of each of the aforementioned variables and select the desired reading that you want the utility to display for the variable. A context menu displays four options related to the desired reading:
- Show current reading
- Show lowest reading
- Show highest reading
- Show average reading
By default, the utility shows the current reading for each variable. GPU-Z displays the GPU core clock and the GPU load. You can log the values for both variables to a file and analyze them after running your OpenCL application. Most modern GPUs don't work with a fixed core clock. The core clock frequency changes according to the load, and therefore, it is very important to consider both the core clock frequency and the GPU load.
You can click on the value displayed for each variable and GPU-Z will switch to the maximum, minimum, average and current values. However, if you want to analyze the information, it is very convenient to log the desired values to a file because the graphs shown for each variable are very small. Figure 1 shows the values and the graphs for an OpenCL application that showed a 98 % for GPU load and made the GPU increase its core clock from 200 MHz to 300 MHz. The graph at the right-hand side of the GPU core clock label displays the frequency increment.
Figure 1: GPU-Z displaying the GPU core clock and the GPU load.
PC-Wizard is a great utility to discover detailed information about the underlying hardware. When you minimize the latest version of this excellent software, it displays an icon in Windows notification area. However, by default, PC-Wizard keeps monitoring many variables in real-time and shows an on screen display on Windows desktop. In previous versions, the utility showed the load for each physical core found in the system. In the latest version, this information adds the GPU load. PC-Wizard uses GFX load as the label to indicate the GPU load, as in Figure 2.
Figure 2: PC-Wizard 2010 displaying the GPU load (GFX load).
PC-Wizard also offers information about the GPU clock. However, this information doesn't appear included in the real-time on screen display. If you don't need to log data to a file and you just want to have an idea of GPU load, this information can be helpful. If you need complete data about the GPU usage, GPU-Z will offer you detailed information and you will be able to log it to a file.