Adaptive load balancing in a multi processor graphics processing system
AssigneeNVIDIA Corporation
InventorFranck R. Diard
Life of this patent
Estimating the term…
Loading patent…
AssigneeNVIDIA Corporation
InventorFranck R. Diard
Estimating the term…
Systems and methods for balancing a load among multiple graphics processors that perform different portions of a rendering task. A rendering task is partitioned into portions for each of two (or more) graphics processors. The graphics processors perform their respective portions of the rendering task and return feedback data indicating completion of the assigned portion. Based on the feedback data, an imbalance can be detected between respective loads of two of the graphics processors. In the event that an imbalance exists, the rendering task is re-partitioned to increase the portion assigned to the less heavily loaded processor and to decrease the portion assigned to the more heavily loaded processor.
A method for load balancing in a graphics processing system, the method comprising:
A computer program product comprising a non-transitory computer-readable storage medium storing driver program code that when executed causes a processor to implement a driver for a graphics processing subsystem having a plurality of graphics processors, the driver program code comprising:
A computer program product comprising a non-transitory computer readable storage medium storing program code that, when executed, causes a central processor in a computer that includes a plurality of graphics processors to execute a method, the method comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Three-dimensional [3D] image rendering: general purpose rendering architectures
Control of the bit-mapped memory: arrangements for updating the contents of the bit-mapped memory
Indexing scheme for image generation or computer graphics: parallel processing
Parallel handling of streams of display data
Term ended 18 Aug 2023 (estimated)
The present disclosure is related to the following commonly assigned co pending U.S. application Ser. No. 10/643,072, filed Aug. 18, 2003, entitled “Private Addressing in a Multi Processor Graphics Processing System” and application Ser. No. 10/639,893, filed Aug. 12, 2003, entitled “Programming Multiple Chips from a Command Buffer,” the respective disclosures of which are incorporated herein by reference for all purposes.
The present invention relates generally to graphics processing subsystems with multiple processors and in particular to adaptive load balancing for such graphics processing subsystems.
Graphics processing subsystems are designed to render realistic animated images in real time, e.g., at 30 or more frames per second. These subsystems are most often implemented on expansion cards that can be inserted into appropriately configured slots on a motherboard of a computer system and generally include one or more dedicated graphics processing units (GPUs) and dedicated graphics memory. The typical GPU is a highly complex integrated circuit device optimized to perform graphics computations (e.g., matrix transformations, scan-conversion and/or other rasterization techniques, texture blending, etc.) and write the results to the graphics memory. The GPU is a “slave” processor that operates in response to commands received from a driver program executing on a “master” processor, generally the central processing unit (CPU) of the system.
FIG. 1 is a simplified block diagram of a computer system according to an embodiment of the present invention;
FIG. 2 is an illustration of a display area showing spatial parallelism according to an embodiment of the present invention;
FIG. 3 is an illustration of a command stream according to an embodiment of the present invention;
The present invention provides systems and methods for balancing a load among multiple graphics processors that render different portions of a frame. In some embodiments, load balancing is performed by determining whether one of two graphics processors finishes rendering a frame last more often than the other. If one of the processors finishes last more often, a portion of the processing burden (e.g., a number of lines of pixels to render) is shifted from that processor to the other processor. The comparison can be repeated and the load adjusted as often as desired. The technique of pairwise load comparisons and balancing can be extended to systems with any number of graphics processors.
FIG. 1 is a block diagram of a computer system 100 according to an embodiment of the present invention. Computer system 100 includes a central processing unit (CPU) 102 and a system memory 104 communicating via a bus 106. User input is received from one or more user input devices 108 (e.g., keyboard, mouse) coupled to bus 106. Visual output is provided on a pixel based display device 110 (e.g., a conventional CRT or LCD based monitor) operating under control of a graphics processing subsystem 112 coupled to system bus 106. A system disk 128 and other components, such as one or more removable storage devices 129 (e.g., floppy disk drive, compact disk (CD) drive, and/or DVD drive), may also be coupled to system bus 106.
Graphics processing subsystem 112 is advantageously implemented using a printed circuit card adapted to be connected to an appropriate bus slot (e.g., PCI or AGP) on a motherboard of system 100. In this embodiment, graphics processing subsystem 112 includes two (or more) graphics processing units (GPUs) 114a, 114b, each of which is advantageously implemented as a separate integrated circuit device (e.g., programmable processor or application-specific integrated circuit (ASIC)). GPUs 114a, 114b are configured to perform various rendering functions in response to instructions (commands) received via system bus 106. In some embodiments, the rendering functions correspond to various steps in a graphics processing pipeline by which geometry data describing a scene is transformed to pixel data for displaying on display device 110. These functions can include, for example, lighting transformations, coordinate transformations, scan-conversion of geometric primitives to rasterized data, shading computations, shadow rendering, texture blending, and so on. Numerous implementations of rendering functions are known in the art and may be implemented in GPUs 114a, 114b. GPUs 114a, 114b are advantageously configured identically so that any graphics processing instruction can be executed by either GPU with substantially identical results.