A Brief Note on Scheduling

Scheduling is a process of assigning resources such as processor, network, IO to tasks such as processes and threads. Operating systems like Windows, macOS, and Linux-based carry out scheduling with the help of a module known as Scheduler. The job of Scheduler is to assign resources to process in such a way that it maximizes throughput, minimizes latency and wait time among other things. Schedulers have been traditionally a part of the Operating System i.e.; they are essentially a piece of software. Even though hardware schedulers are available (in the form of programmable FPGAs or ASICs), they are confined mainly to hard real-time systems to support one scheduling algorithm. Unlike software schedulers, hardware schedulers are less flexible in terms of features, modifications, and application support. As a result, many non-real-time systems such as regular PCs still use software scheduling.

GPU Scheduling in Windows

Coming to the GPU side, Windows developed WDDM or Windows Display Driver Model, which is a graphic driver architecture for graphics cards. It supported virtual memory, scheduling, sharing of Direct3D surfaces, etc. Out of all these features, the WDDM GPU Scheduler is very important as it changed the traditional “FIFO” style queue with priority-based scheduling. Even with newer versions of WDDM, the scheduling algorithm was more or less the same i.e., a high-priority thread has the CPU time. This approach has some fundamental limitations. For example, an application thread to work on GPU at time ‘x’ must have the CPU prepare the commands for GPU at the time ‘x-1’. So, when the GPU is working on frame ‘n’, the CPU started work commands for frame ‘n+1’. Essentially, this buffering of GPU commands by CPU might minimize the scheduling overload but will have a significant impact on latency. The user input picked up by the CPU will not be processed by the GPU until the next frame.

What is Hardware-Accelerated GPU Scheduling?

In May 2020, Microsoft released an update for Windows that introduced Hardware-Accelerated GPU Scheduling as an option for supported graphics cards and drivers. With this update, Windows has now the ability to offload the GPU Scheduling to a dedicated GPU Scheduling hardware. While Windows still has control over the prioritization of tasks and decides which application has the priority for context switching, it offloads high-frequency tasks to the dedicated GPU Scheduler to handle context switching among various GPU engines. Both NVIDIA and AMD (the two main graphics cards manufacturers) welcomed this move. They said that this new feature of moving scheduling jobs from software to hardware will improve the GPU performance, responsiveness and also reduce latency.

How to Enable Hardware-Accelerated GPU Scheduling?

if you have a supporting Graphics Card with correct drivers and Windows update, the Hardware-Accelerated GPU Scheduling feature will be available as an option. By default, Hardware-Accelerated GPU Scheduling is disabled in both Windows 10 and Windows 11. But you can enable it from the settings. Before that, make sure that you have Windows 10 Version 2004 or later and also install the latest drivers from NVIDIA and AMD. Follow these steps to enable Hardware-Accelerated GPU Scheduling in your Windows machine.

Click on Start, open Settings 

System

Display Click on Graphics settings

If your GPU supports hardware scheduling and you have installed the supporting driver, you will get the option “Hardware-accelerated GPU scheduling”. Toggle the option and restart the PC.

Which GPUs support Hardware Scheduling?

Currently, almost all modern graphics cards from NVIDIA and AMD support hardware-accelerated GPU scheduling. To test whether your graphics card supports this feature or not, you can take a look at the manufacturer’s product page or try to find out yourself by downloading the latest updates from Windows and drivers from AMD and NVIDIA.

Impact of New GPU Scheduler

Microsoft boasted that the new hardware-accelerated GPU scheduling will significantly improve the GPU performance and reduce latency. But the initial testing by many popular reviewers has expressed mixed results. Some testers posted an improvement with synthetic benchmarks and in-game benchmarks but observed no significant improvement in the majority of the games.

Conclusion

Hardware-Accelerated GPU Scheduling is a process of offloading the scheduling task to a dedicated scheduler on the GPU rather than the CPU taking care of it. When Microsoft first announced this feature, the whole gaming industry was extremely excited but the results and reviews were disappointing (at least in the beginning). We saw how easy it is to enable (or disable) hardware-accelerated GPU scheduling. You can experiment with this feature if you have the right GPU and driver combination and share your experience. Comment * Name * Email * Website

Δ

Hardware Accelerated GPU Scheduling - 16Hardware Accelerated GPU Scheduling - 60Hardware Accelerated GPU Scheduling - 74Hardware Accelerated GPU Scheduling - 56Hardware Accelerated GPU Scheduling - 39Hardware Accelerated GPU Scheduling - 35Hardware Accelerated GPU Scheduling - 90Hardware Accelerated GPU Scheduling - 69Hardware Accelerated GPU Scheduling - 57