ABSTRACT

Multi-GPU configurations are becoming a common and affordable option for OpenGL applications to scale performance, data size, display size, image quality, and the number of users per GPU in server-based environments. Current technologies targeted for multi-GPU configurations like NVIDIA SLI or ATI Crossfire require no application changes; the OpenGL driver transparently handles command dispatch to all GPUs. However, this limits scalability as applications are still single threaded, which requires a single CPU core to keep the multiple GPU hardware queues busy. This is particularly evident in scene-graph based applications where the scene traversal is typically done on the CPU. Moreover, both commands and data are replicated across all GPUs. To achieve maximum performance, applications require fine-grained programmability to manage individual GPU workloads as well as to optimize communication between GPUs.