Multi-user multi-GPU render server apparatus and methods
First Claim
1. A method to render image requests comprising the steps of:
- a) executing a render server program;
b) receiving two or more render requests to generate two or more rendered images from one or more clients, where each of the two or more render requests include a time of receipt of the render request;
c) selecting from the two or more render requests the render request requiring the most processing time as a large render request, where one or more render requests are not selected as the large render request;
d) ‘
breaking down’
the large render request into a plurality of partial render requests including at least a first partial render request a second partial render request and remaining partial render requests, where each of the plurality of partial render requests require one or both less compute time and less graphics resources than one or both the requirements for compute time and graphics resources of the large render request;
e) assigning a time of receipt of the first partial render request based on the time of receipt of the large render request;
f) assigning a time of receipt of the second partial render request such that at least one of the one or more render requests is assigned a time of receipt after the time of receipt of the first partial render request and before the time of receipt of the second partial render request;
g) assigning a time of receipt of the remaining partial render request such that at least one of the one or more render requests is assigned a time of receipt after the time of receipt of the second partial render request and before the time of receipt of the remaining partial render requests;
h) determining a sequence of interleaved commands for rendering the one or more render requests and the plurality of partial render requests based on the time of receipt of the one or more render requests and the assigned time of receipt of the first partial render request and the assigned time of receipt of the second partial render request and the assigned time of receipt of the remaining partial render requests;
i) issuing the sequence of interleaved commands to one or more graphics processing units to generate the two or more rendered images; and
j) sending to the one or more clients the two or more rendered images.
2 Assignments
0 Petitions
Accused Products
Abstract
The invention provides, in some aspects, a system for rendering images, the system having one or more client digital data processors and a server digital data processor in communications coupling with the one or more client digital data processors, the server digital data processor having one or more graphics processing units. The system additionally comprises a render server module executing on the server digital data processor and in communications coupling with the graphics processing units, where the render server module issues a command in response to a request from a first client digital data processor. The graphics processing units on the server digital data processor simultaneously process image data in response to interleaved commands from (i) the render server module on behalf of the first client digital data processor, and (ii) one or more requests from (a) the render server module on behalf of any of the other client digital data processors, and (b) other functionality on the server digital data processor.
-
Citations
19 Claims
-
1. A method to render image requests comprising the steps of:
-
a) executing a render server program; b) receiving two or more render requests to generate two or more rendered images from one or more clients, where each of the two or more render requests include a time of receipt of the render request; c) selecting from the two or more render requests the render request requiring the most processing time as a large render request, where one or more render requests are not selected as the large render request; d) ‘
breaking down’
the large render request into a plurality of partial render requests including at least a first partial render request a second partial render request and remaining partial render requests, where each of the plurality of partial render requests require one or both less compute time and less graphics resources than one or both the requirements for compute time and graphics resources of the large render request;e) assigning a time of receipt of the first partial render request based on the time of receipt of the large render request; f) assigning a time of receipt of the second partial render request such that at least one of the one or more render requests is assigned a time of receipt after the time of receipt of the first partial render request and before the time of receipt of the second partial render request; g) assigning a time of receipt of the remaining partial render request such that at least one of the one or more render requests is assigned a time of receipt after the time of receipt of the second partial render request and before the time of receipt of the remaining partial render requests; h) determining a sequence of interleaved commands for rendering the one or more render requests and the plurality of partial render requests based on the time of receipt of the one or more render requests and the assigned time of receipt of the first partial render request and the assigned time of receipt of the second partial render request and the assigned time of receipt of the remaining partial render requests; i) issuing the sequence of interleaved commands to one or more graphics processing units to generate the two or more rendered images; and j) sending to the one or more clients the two or more rendered images. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method to render image requests comprising the steps of:
-
a) receiving a plurality of render requests at one or more request times from two or more clients; b) selecting the render request requiring most processing time as a large render request and the remaining render requests as smaller render requests; c) breaking down the large render request into a first partial render request and one or more remaining partial render requests, where the first partial render request is assigned the request time of the largest render request and the remaining partial render requests are assigned a time of receipt such that at least one of the smaller render requests is assigned a time of receipt after the time of receipt of the first partial render request and before the time of receipt of the remaining partial render requests; d) determining a sequence of interleaved commands based on one or more of the time of receipt of the smaller render requests, the assigned time of receipt of the first partial render request and the assigned time of receipt of the remaining partial render requests; e) issuing the sequence of interleaved commands to one or more graphics processing units to generate a plurality of rendered images; and f) sending to the two or more clients the plurality of rendered images. - View Dependent Claims (15, 16)
-
-
17. A method to render image requests comprising the steps of:
-
a) receiving a render request of a dataset from a client; b) breaking down the render request into a first partial render request and one or more remaining partial render requests; c) determining a sequence of interleaved commands to render the first partial render request and to render the one or more remaining partial render requests; d) issuing the sequence of interleaved commands to one or more graphics processing units to generate rendered images corresponding to the first partial render request and the one or more remaining partial render requests, where the first partial render request is assigned the request time of the render request and the one or more remaining partial render requests are assigned a time of receipt such that at least a second render requests is assigned a time of receipt after the time of receipt of the first partial render request and before the time of receipt of the remaining partial render requests; e) selecting the brightest value for a pixel based on the corresponding brightest value for that pixel in the rendered image generated from the first partial render request and the one or more rendered images generated from the remaining partial render requests; and f) generating a composite render image based on the brightest value for each pixel. - View Dependent Claims (18, 19)
-
Specification