The Power of Uber-Parallel Processing - the new WGL_AMD_GPU_association extension
GPUs are highly parallel processors, generating results for millions of pixels, possibly hundreds of times per second. But at the same time, a GPU is a single processor that can only work on one task at a time. A single application, or even multiple applications, can rarely utilize the resources of multi-GPU systems efficiently.
Some modern GPU features help to address this issue. MultiView allows each OpenGL application on Windows XP to run locally on the GPU the monitor is attached to. CrossFire accelerates applications by tasking each GPU with a portion of rendering workload, a whole frame for instance. These options make a considerable impact by distributing work among GPUs. AMD is currently releasing an extension which allows applications to further enhance and optimize the use of multiple GPUs.
WGL_AMD_GPU_association allows applications to make the decision of what work to task to each GPU. A workstation application can use this extension to determine what types of GPUs are in a system and pick which contexts to allocate on each GPU. This allows a workstation application, especially those that do off-screen rendering, to process multiple images or datasets simultaneously and combine the final image for display. The decision of how to divide up the work is left to the application.
GPU Association is currently available in Catalyst 9.1. The extension specification can be found in the OpenGL extension registry. Soon to follow will be a Linux specific version. With this new tool, applications can fully exploit all of the graphics processing power of the next generation multi-GPU systems.
Note: Catalyst 9.1 does support the GPU association, but the extension name in this release is WGL_AMDX_GPU_association.