IP Library Granted Patent US 10,825,126
Granted Patent B2
US 10,825,126 · App. 16/403,233 · Granted Nov 3, 2020

Multi-user multi-GPU render server apparatus and methods

Inventors: Malte Westerhoff (Berlin, DE); Detlev Stalling (Berlin, DE)
Assignee: PME IP PTY LTD
G06T1/20G06T1/60G06T15/005
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,825,126
App. No.
16/403,233
Granted
Nov 3, 2020
Kind
B2
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.

Claims (37)

1. A method for rendering images comprising:

a) executing on a server a render server program, where the server includes a server digital data processor and a graphics resource including one or more graphics processing units (GPUs);

b) receiving a render request at the server from one of a plurality of clients, where the render request is one of a plurality of render requests, where the render request is a request to render a data set including an image, where the plurality of render requests require a plurality of rendering time slices;

c) if the render server program determines that one or more of the plurality of rendering time slices would exceed a graphics resource limit then breaking down one or more of the plurality of render requests corresponding to the one or more of the plurality of rendering time slices which exceed the graphics resource limit, where the graphics resource limit depends on a parameter selected from the group consisting of a rendering mode of the image, a resolution of the image, a size of the image and the time required for rendering a time slice;

d) scheduling on the server one or more interleaved commands that correspond to the plurality of render requests;

e) rendering a plurality of images based on the scheduling of the one or more interleaved commands; and

f) sending from the server one or more of the plurality of images to one or more of the plurality of clients.

2. The method of claim 1 , where if the rendering mode is maximum intensity projection, then the voxels intersected by each viewing ray which intersects a broken down render request are assigned the maximum grey value of any of the voxels which the viewing ray corresponding to the screen pixel intersects.

3. The method of claim 1 , where if the rendering mode is a volume rendering technique, then for each pixel of a resulting image, a color and/or opacity is computed from sub images blended over each other in back to front order, one after the other using the formula c_result=(1−a_front)*c_back+a_front*c_front, where, a_front denotes the opacity of a front picture and c_front denotes the color of the front picture, and c_back denotes the color of a back picture.

4. The method of claim 1 , where the graphics resource limit is exceeded when a rendering time slice of the plurality of rendering time slices is greater than 100 milliseconds.

5. The method of claim 1 , where the graphics resource limit is exceeded when a rendering time slice of the plurality of rendering time slices is greater than a few hundred milliseconds.

6. The method of claim 1 , where the graphics resource limit is exceeded when a rendering time slice of the plurality of rendering time slices is significantly stalled.

7. The method of claim 1 , where the graphics resource limit is exceeded when the screen update/second rate is less than 25 per second.

8. The method of claim 1 , where the graphics resource limit is exceeded when the screen update/second rate is less than 5 per second.

9. The method of claim 1 , where the scheduling results in the plurality of render requests being processed in an alternating fashion.

10. The method of claim 9 , where multiple render requests are issued to the same graphics board simultaneously.

11. The method of claim 1 , where the scheduling of the plurality of render requests enables concurrent execution of two or more render requests.

12. A method for rendering images comprising:

a) executing, on a server a render server program, where the server includes a server digital data processor and a graphics resource including one or more graphics processing units (GPUs);

b) receiving at the server from a first client selected from a plurality of client digital data processors one or more first render requests, where the one or more first render requests require one or more first rendering time slices;

c) receiving at the server from a second client selected from the plurality of client digital data processors one or more second render requests, where the one or more second render requests require one or more second rendering time slices;

d) if the render server program determines that one or more first rendering time slices or one or more second rendering time slices would exceed a graphics resource limit then breaking down one or both one or more first render requests and one or more second render requests corresponding to the one or more first rendering time slices and/or one or more second rendering time slices which exceed the graphics resource limit, where the graphics resource limit is exceeded when a rendering time slice of one of the one or more first rendering time slices or the one or more second rendering time slices is greater than 100 milliseconds;

e) scheduling on the server one or more interleaved commands that correspond to the plurality of render requests;

f) rendering a plurality of images based on the scheduling of the one or more interleaved commands; and

g) sending from the server one or more of the plurality of images to one or both of the first client and the second client.

13. The method of claim 12 , where the graphics resource limit is exceeded when the screen update/second rate is less than 5 per second.

14. The method of claim 12 , where the scheduling of the plurality of render requests results in the processing of the plurality of render requests in an alternating fashion.

15. The method of claim 14 , where multiple render requests are issued to the same graphics board simultaneously.

16. The method of claim 12 , where the scheduling of the plurality of render requests enables concurrent execution of two or more render requests.

17. A method for rendering images comprising:

a) executing, on a server a render server program, where the server includes a server digital data processor and a graphics resource including one or more graphics processing units (GPUs);

b) receiving at the server from a first client selected from a plurality of client digital data processors one or more first render requests to render at least a first image, where the one or more first render requests require one or more first rendering time slices;

c) receiving at the server from a second client selected from the plurality of client digital data processors one or more second render requests to render at least a second image, where the one or more second render requests require one or more second rendering time slices;

d) if the render server program determines that one or more first rendering time slices or one or more second rendering time slices would exceed a graphics resource limit then breaking down one or both one or more first render requests and one or more second render requests corresponding to the one or more first rendering time slices and/or one or more second rendering time slices which exceed the graphics resource limit, where the graphics resource limit is exceeded when a rendering time slice of one of the one or more first rendering time slices or the one or more second rendering time slices is greater than a few hundred milliseconds;

e) scheduling on the server one or more interleaved commands that correspond to the plurality of render requests, where the scheduling results in the plurality of render requests being processed in an alternating fashion;

f) rendering a plurality of images based on the scheduling of the one or more interleaved commands; and

g) sending from the server one or both the first image to the first client and the second image to the second client.

Continuity (6)
Continuation 15640294 · Jun 30, 2017
Continuation 14641248 · Mar 6, 2015
Continuation 13684464 · Nov 23, 2012
Continuation 12275421 · Nov 21, 2008
Provisional Application 60989881 · Nov 23, 2007
Related Publication 20190259131A1 · Aug 22, 2019