IP Library › Granted Patent US 12,210,867
Granted Patent B2
US 12,210,867 · App. 17/473,850 · Granted Jan 28, 2025

Compiled shader program caches in a cloud computing environment

Inventors: Michael Oxford (San Jose, CA); Patrick Neill (Sherwood, OR); Franck Diard (Roquefort les pins, FR); Paul Albert Lalonde (Victoria, CA)
Assignee: NVIDIA Corporation
G06F8/70G06F8/10G06F8/441G06F9/45558G06T1/60G06T15/80G06F2009/45562G06F2009/45595
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 12,210,867
App. No.
17/473,850
Filed
Sep 13, 2021
Granted
Jan 28, 2025
Kind
B2
Examiner
WU, CHONG
Art Unit
2613
USPC
345/522
Abstract

Apparatuses, systems, and techniques for a compiled shader program caches in a cloud computing environment.

Claims (51)

1. A method comprising:

receiving, by an application hosting platform, a request to modify a shader cache associated with an application based on a set of compiled shader programs for the application, wherein at least one compiled shader program of the set of compiled shader programs was compiled by a first client device while running a first instance of the application;

modifying, by the application hosting platform, the shader cache for the application to produce a modified shader cache that includes the at least one compiled shader program of the set of compiled shader programs;

and

responsive to modifying the shader cache, providing, by the application hosting platform, an additional set of compiled shader programs from the modified shader cache to a second client device that has initialized a second instance of the application, wherein the additional set of compiled shader programs comprises the at least one compiled shader program of the set of compiled shader programs.

2. The method of claim 1 , wherein modifying the shader cache for the application comprises:

determining that the at least one compiled shader program does not correspond to a compiled shader program of the shader cache; and

adding the at least one compiled shader program to the shader cache.

3. The method of claim 1 , further comprising:

detecting a discrepancy between the at least one compiled shader program and a corresponding compiled shader program of the shader cache; and

replacing the compiled shader program of the shader cache with the at least one compiled shader program.

4. The method of claim 1 , further comprising:

responsive to determining that the at least one compiled shader program corresponds to a compiled shader program stored at a temporary buffer for the shader cache, updating a counter associated with the compiled shader program at the temporary buffer.

5. The method of claim 4 , further comprising:

responsive to determining that the at least one compiled shader program does not correspond to a compiled shader program stored at the temporary buffer, storing the at least one compiled shader program at the temporary buffer; and

initializing an additional counter associated with the at least one compiled shader program.

6. The method of claim 4 , wherein the shader cache for the application is modified responsive to determining that the counter associated with the at least one compiled shader program exceeds a threshold value.

7. The method of claim 1 , wherein each of the additional set of compiled shader programs from the modified shader cache satisfies one or more conditions associated with the second client device.

8. The method of claim 7 , wherein the one or more conditions associated with the second client device comprise at least one of a hardware parameter or a software parameter corresponding to the second client device.

9. The method of claim 1 , further comprising:

obtaining a source code for an additional shader program associated with the application;

generating a compiled version of the additional shader program; and

adding the compiled version of the additional shader program to the shader cache associated with the application.

10. The method of claim 9 , wherein the source code for the additional shader program is obtained responsive to determining that at least one of a hardware state or a software state of one or more of the first client device or the second client device has been modified from a first version to a second version, and wherein the compiled version of the additional shader program is compatible with the second version of the at least one of the hardware state or the software state.

11. The method of claim 1 , wherein at least one of the first client device or the second client device comprises a virtual machine instantiated using a cloud computing environment.

12. A non-transitory computer-readable medium storing instructions thereon, wherein the instructions, when executed by a processing device, cause the processing device to:

receive a request to modify an shader cache associated with an application based on a set of compiled shader programs for the application, wherein at least one compiled shader program of the set of compiled shader programs was compiled by a first client device while running a first instance of the application;

modify the shader cache for the application to produce a modified shader cache that includes the at least one compiled shader program of the set of compiled shader programs;

and

responsive to modifying the shader cache, provide an additional set of compiled shader programs from the modified shader cache to a second client device that has initialized a second instance of the application, wherein the additional set of compiled shader programs comprises the at least one compiled shader program of the set of compiled shader programs.

13. The non-transitory computer-readable medium of claim 12 , wherein to modify the shader cache for the application, the processing device is to:

determine that the at least one compiled shader program does not correspond to a compiled shader program of the shader cache; and

add the at least one compiled shader program to the shader cache.

14. The non-transitory computer-readable medium of claim 12 , wherein the processing device is further to:

detect a discrepancy between the at least one compiled shader program and a corresponding compiled shader program of the shader cache; and

replace the compiled shader program of the shader cache with the at least one compiled shader program.

15. The non-transitory computer-readable medium of claim 12 , wherein the processing device is further to:

responsive to determining that the at least one compiled shader program corresponds to a compiled shader program stored at a temporary buffer for the shader cache, update a counter associated with the compiled shader program at the temporary buffer.

16. The non-transitory computer-readable medium of claim 15 , wherein the processing device is further to:

responsive to determining that the at least one compiled shader program does not correspond to a compiled shader program stored at the temporary buffer, store the at least one compiled shader program at the temporary buffer; and

initialize an additional counter associated with the at least one compiled shader program.

17. The non-transitory computer-readable medium of claim 15 , wherein the shader cache for the application is modified responsive to determining that the counter associated with the at least one compiled shader program exceeds a threshold value.

18. The non-transitory computer-readable medium of claim 12 , wherein each of the additional set of compiled shader programs from the modified shader cache satisfies one or more conditions associated with the second client device.

19. The non-transitory computer-readable medium of claim 18 , wherein the one or more conditions associated with the second client device comprise at least one of a hardware parameter or a software parameter corresponding to the second client device.

20. A system comprising:

a memory device; and

a processing device coupled to the memory device, the processing device to perform operations comprising:

receiving, by an application hosting platform, a request to modify a shader cache associated with an application based on a set of compiled shader programs for the application, wherein at least one compiled shader program of the set of compiled shader programs was compiled by a first client device while running a first instance of the application;

modifying, by the application hosting platform, the shader cache for the application to produce a modified shader cache that includes the at least one compiled shader program of the set of compiled shader programs;

and

responsive to modifying the shader cache, providing, by the application hosting platform, an additional set of compiled shader programs from the modified shader cache to a second client device that has initialized a second instance of the application, wherein the additional set of compiled shader programs comprises the at least one compiled shader program of the set of compiled shader programs.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2021
From: OXFORD, MICHAEL; NEILL, PATRICK; DIARD, FRANCK; LALONDE, PAUL ALBERT
To: NVIDIA CORPORATION
Reel/Frame 057469/0026 →
Continuity (1)
Related Publication 20230077865A1 · Mar 16, 2023
References Cited (15)
US 10423463B1 · Wilt · 2019 [cited by applicant]
US 11069119B1 · Anderegg · 2021 [cited by applicant]
US 11240348B2 · Vlachogiannis et al. · 2022 [cited by applicant]
US 11726755B2 · Lalonde · 2023 [cited by examiner]
US 20160070549A1 · Hall · 2016 [cited by applicant]
US 20160307364A1 · Fabius · 2016 [cited by applicant]
US 20170308364A1 · Munshi et al. · 2017 [cited by applicant]
US 20180286008A1 · Panneer et al. · 2018 [cited by applicant]
US 20190232164A1 · Griffais · 2019 [cited by applicant]
US 20190308099A1 · Lalonde et al. · 2019 [cited by applicant]
US 20200167985A1 · Brennan · 2020 [cited by applicant]
US 20210065441A1 · Colbert et al. · 2021 [cited by applicant]
US 20230376291A1 · Lalonde · 2023 [cited by examiner]
CN 107426286A · 2017 [cited by applicant]
Sitthi-Amorn et al., “An Improved Shading Cache for Modern GP Us”, 2008, [Online], pp. 95-101, [Retrieved from internet on Feb. 24, 2023],<https://diglib.eg .org/bitstream/handle/10.2312/EGGH. EGGH08.095-101/095-101.pdf… [cited by applicant]