A method of dynamic load-balancing in a PC-based computing system including (i) system memory for storing software graphics applications, software drivers and graphics libraries, (ii) an operating system (OS), stored in said system memory, (iii) one or more graphics applications, stored in said system memory, for generating a stream of geometrical data and graphics commands supporting the representation of one or more 3D objects in a scene having 3D geometrical characteristics and the viewing of images of said one or more 3D objects in said scene during an interactive process carried out between said PC-based computing system and a user thereof, (iv) one or more graphic libraries, stored in said system memory, for storing data used to implement said stream of geometrical data and graphics commands, (v) a central processing unit (CPU), for executing said OS, said graphics applications, said drivers and said graphics libraries, and (vi) a display surface for displaying said images by graphically displaying frames of pixel data produced by a plurality of graphic processing units (GPUs) arranged in a parallel architecture and data communication with said CPU, and operating according to one or more parallelization modes of operation during the execution of said graphics application, so that said GPUs support multiple graphics pipelines and process data in a parallel manner, wherein said one or more parallelization modes of operation include (1) a time division mode wherein each GPU renders a different frame of pixel data to be displayed at a different moment of time, (2) an image division mode wherein each GPU renders a subset of the pixels used to compose each frame of pixel data to be displayed, and (3) an object division mode wherein the object which is to be displayed as a frame of pixels, is decomposed into said stream of geometrical data and graphic commands which are distributed to said GPUs for rendering the frames of pixel data compositing the images for display on said display surface;
- said method comprising the steps of:
- (a) during the execution of said graphics application, analyzing said stream of geometrical data and said graphics commands;
- (b) determining the mode of parallelization of said GPUs during each frame, using results of the analysis of said stream of geometrical data and said graphics commands, and one or more policies for determining said mode of parallelization;
- (c) distributing said stream of geometrical data and graphic commands to said GPUs according to said mode of parallelization determined in step (b);
- (d) during the generation of each said frame, using one or more of said GPUs to process said stream of geometrical data and graphic commands, or a portion thereof, while operating in said parallelization mode, so as to generate pixel data corresponding to at least a portion of said image;
- (e) transferring pixel data output from one or more of said GPUs and composing a frame of pixel data, representative of the image of said 3D object;
- and
- (f) displaying said frame of pixel data on said display surface.