IP Library › Granted Patent US 10,289,393
Granted Patent B2
US 10,289,393 · App. 15/630,797 · Granted May 14, 2019

GPU-executed program sequence cross-compilation

Inventors: Matthew Gordon (Redmond, WA); Aaron Blake Stover (Sammamish, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F8/4435G06T15/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,289,393
App. No.
15/630,797
Granted
May 14, 2019
Kind
B2
Abstract

According to one embodiment of the present disclosure, a computing system is provided, including a graphical processing unit (GPU) and a processor. The processor may be configured to execute a run-time executable cross-compiler to receive a GPU-executed program of a plurality of GPU-executed programs. The processor may be further configured to receive summary data associated with the GPU-executed program. The summary data may include a sequence in which the plurality of GPU-executed programs are configured to be executed. Based at least in part on the GPU-executed program and the summary data, the processor may be further configured to generate a translated GPU-executed program.

Claims (34)

1. A computing system, comprising:

a graphical processing unit (GPU); and

a processor configured to execute a run-time executable cross-compiler to:

receive a GPU-executed program of a plurality of GPU-executed programs;

receive summary data associated with the GPU-executed program, wherein the summary data includes a sequence in which the plurality of GPU-executed programs are configured to be executed; and

based at least in part on the GPU-executed program and the summary data, generate a translated GPU-executed program.

2. The computing system of claim 1 , wherein the cross-compiled program is configured to be executed in a GPU application binary interface (ABI) of the GPU.

3. The computing system of claim 1 , wherein the processor is further configured to determine instruction data indicating one or more instructions included in at least one other GPU-executed program of the plurality of GPU-executed programs, and wherein the cross-compiled program is generated based at least in part on the instruction data.

4. The computing system of claim 3 , wherein the processor is further configured to determine instruction data for each GPU-executed program of the plurality of GPU-executed programs.

5. The computing system of claim 3 , wherein generating the cross-compiled program includes adding to the GPU-executed program one or more instructions included in the at least one other GPU-executed program.

6. The computing system of claim 3 , wherein generating the translated GPU-executed program includes removing one or more instructions from the GPU-executed program.

7. The computing system of claim 1 , wherein each GPU-executed program of the plurality of GPU-executed programs is a shader program.

8. The computing system of claim 7 , wherein the plurality of GPU-executed programs includes at least one vertex shader program.

9. The computing system of claim 7 , wherein the plurality of GPU-executed programs includes at least one pixel shader program.

10. The computing system of claim 7 , wherein the processor is further configured to generate a plurality of translated GPU-executed programs based at least in part on the GPU-executed program and the summary data.

11. The computing system of claim 10 , wherein the processor is configured to generate a plurality of translated tessellation shader programs based at least in part on two or more GPU-executed programs of the plurality of GPU-executed programs.

12. The computing system of claim 7 , wherein generating the translated GPU-executed program includes applying a coordinate transformation to at least one output of the GPU-executed program.

13. The computing system of claim 1 , wherein the summary data further includes GPU state data that indicates one or more global properties of the GPU.

14. The computing system of claim 13 , wherein the one or more global properties of the GPU include an instruction set architecture (ISA) of the GPU.

15. A method for executing a runtime-executable cross-compiler on a processor of a computing system, the method comprising:

receiving a GPU-executed program of a plurality of GPU-executed programs;

receiving summary data associated with the GPU-executed program, wherein the summary data includes a sequence in which the plurality of GPU-executed programs are configured to be executed; and

based at least in part on the GPU-executed program and the summary data, generating a translated GPU-executed program.

16. The method of claim 15 , further comprising determining instruction data indicating one or more instructions included in at least one other GPU-executed program of the plurality of GPU-executed programs, and wherein the translated GPU-executed program is generated based at least in part on the instruction data.

17. The method of claim 16 , further comprising determining instruction data for each GPU-executed program of the plurality of GPU-executed programs.

18. The method of claim 16 , wherein generating the translated GPU-executed program includes adding to the GPU-executed program one or more instructions included in the at least one other GPU-executed program and/or removing one or more instructions from the GPU-executed program.

19. The method of claim 15 , wherein each GPU-executed program of the plurality of GPU-executed programs is a shader program.

20. A computing system, comprising:

a graphical processing unit (GPU); and

a processor configured to execute a run-time executable cross-compiler to:

receive a GPU-executed program of a plurality of GPU-executed programs, wherein each GPU-executed program of the plurality of GPU-executed programs is a shader program;

receive summary data associated with the GPU-executed program, wherein the summary data includes a sequence in which the plurality of GPU-executed programs are configured to be executed;

determine instruction data indicating instructions included in at least one other GPU-executed program of the plurality of GPU-executed programs; and

based at least in part on the GPU-executed program, the summary data, and the instruction data, generate a translated GPU-executed program.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2017
From: GORDON, MATTHEW; STOVER, AARON BLAKE
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042791/0797 →
Continuity (1)
Related Publication 20180373513A1 · Dec 27, 2018
Cited By (1)
US 12,337,232