GPU Failure Recovery via Command Buffering and Readback
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current graphics processing unit (GPU) failure recovery methods are inefficient and inconsistent, as they rely on applications to manage and reissue commands, often leading to slow and undesirable results due to the asynchronous nature of pipelined graphics commands.
Innovation Solution
Implementing a method that transparently manages pipelined graphics commands by delaying the alert to applications until a readback request response is received, allowing for the transmission of rendered frame data and subsequent commands to a functioning GPU, thereby ensuring seamless recovery from failures without application intervention.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If applications are responsible for recovering from GPU failure by deriving graphics state and reissuing commands, then application control over recovery is maintained, but recovery speed decreases and results become inconsistent
Solution Approach 1:
The graphics driver acts as an intermediary between the application and GPU, taking over the recovery process. The driver captures graphics state and commands before GPU failure, then automatically reconstructs and reissues these to a recovered or alternative GPU, eliminating the need for application intervention while ensuring consistent and fast recovery.
Solution Approach 2:
The driver performs preliminary capture and storage of graphics state and commands in a buffer before failure occurs. This advance preparation allows the system to immediately reconstruct and reissue the complete graphics state upon failure detection, achieving fast recovery without application intervention.
2Productivity
If pipelined graphics commands are processed asynchronously, then rendering performance is improved, but failure recovery becomes complex and inconsistent
Solution Approach 1:
The driver captures and buffers graphics commands and state in advance as they are processed in the pipeline, before any failure occurs. This preliminary accumulation of complete command sequences allows the system to maintain asynchronous processing during normal operation while having all necessary recovery data ready when failure occurs.
Solution Approach 2:
The driver segments the pipelined graphics commands into discrete, complete units with associated state information, capturing each segment before failure. This segmentation allows the recovery process to reconstruct and reissue complete, independent command segments in the correct sequence, simplifying recovery despite the asynchronous pipeline nature of modern graphics processing.
3Adaptability or versatility
If applications manually manage recovery by reissuing commands, then application-specific recovery logic is implemented, but recovery time increases significantly
Solution Approach 1:
The graphics driver performs self-service by automatically capturing, storing, and reissuing graphics commands without application intervention. The driver monitors its own state and automatically initiates recovery using pre-captured data, eliminating the time-consuming manual recovery process while maintaining application-specific recovery characteristics through the driver's built-in state management capabilities.
Data Source
AI summary
Exemplary methods, apparatuses, and systems receive a command from a program to render graphics data on a display device, transmit the command to a graphics processing unit (GPU), and transmit a readback request to the GPU. Upon receiving a response to the readback request from the GPU, the program is alerted that the command has been transmitted to the GPU. The response to the readback request is a pointer to a memory location at which the GPU has written rendered frame data representing the command. In response to receiving notification of a failure of the GPU, the rendered frame data written in response to the readback request and any additional commands to render the additional graphics requests received subsequent to the transmission of the readback request are transmitting to the GPU upon recovery from the failure, or to another GPU.


