Split Driver Architecture for Multi-GPU Concurrency
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Computer systems, especially portable devices, face limitations in supporting high-performance graphics rendering and parallel computing due to the complexity and resource-intensive nature of advanced multi-core GPUs, which restricts their ability to handle a large number of graphics-consumer processes efficiently.
Innovation Solution
A client-server environment is established where client devices can leverage the graphics-rendering power of a server system, utilizing a shared front-end driver module and multiple back-end driver modules to manage and route GPU service requests across a plurality of GPUs, allowing for scalable and efficient parallel processing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If a single driver module manages multiple GPUs, then device complexity is reduced, but productivity and concurrency are limited
Solution Approach 1:
The driver is segmented into multiple independent driver instances, each managing a specific GPU. This segmentation allows each driver instance to operate independently, improving concurrency and productivity while maintaining manageable complexity through modular architecture. Each driver instance can be optimized for its specific GPU without affecting other GPUs in the system.
2Productivity
If multiple driver modules are used to manage multiple GPUs, then productivity and concurrency are improved, but device complexity increases
Solution Approach 1:
Multiple instances of the same driver module are deployed, where each instance serves multiple functions: managing its assigned GPU, handling GPU service requests, and coordinating with the graphics stack. This universal approach improves productivity through parallel management while controlling complexity by using identical, well-understood modules rather than creating entirely new complex management systems.
3Power
If advanced multi-core GPUs are deployed, then graphics rendering performance is improved, but device complexity and power consumption increase
Solution Approach 1:
The system segments the management of advanced multi-core GPUs by assigning dedicated driver instances to each GPU. This segmentation simplifies the overall system configuration by providing clear, one-to-one mapping between drivers and GPUs, making it easier to manage and configure complex multi-core GPU systems while maintaining high rendering performance.
4Productivity
If a large number of GPUs are supported, then parallel processing capability is improved, but mapping complexity increases
Solution Approach 1:
The driver management is segmented such that each driver instance manages exactly one GPU, creating simple and predictable mapping relationships. This segmentation reduces mapping complexity significantly compared to a single driver managing multiple GPUs, as the mapping becomes trivial (one-to-one correspondence) while still supporting a large number of GPUs through multiple independent driver instances.
Data Source
AI summary
A computer system includes an operating system having a kernel and configured to launch a plurality of computing processes. The system also includes a plurality of graphics processing units (GPUs), a front-end driver module, and a plurality of back-end driver modules. The GPUs are configured to execute instructions on behalf of the computing processes subject to a GPU service request. The front-end driver module is loaded into the kernel and configured to receive the GPU service request from one of the computing processes. Each back-end driver module is associated with one or more of the GPUs and configured to receive the GPU service request from the front-end driver module and pass the GPU service request to an associated GPU.


