IP Library Granted Patent US 12,229,865
Granted Patent B2
US 12,229,865 · App. 18/133,088 · Granted Feb 18, 2025

Graphics processor with non-blocking concurrent architecture

Inventors: Luke T. Peterson (San Francisco, CA); James A. McCombe (San Francisco, CA); Steven J. Clohset (San Francisco, CA); Jason R. Redgrave (Mountain View, CA)
Assignee: Imagination Technologies Limited
G06T15/005G06F9/5033G06F9/505G06F9/52G06F15/8007G06T1/20G06T1/60G06T15/06G06T2200/28
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,229,865
App. No.
18/133,088
Granted
Feb 18, 2025
Kind
B2
Abstract

In some aspects, systems and methods provide for forming groupings of a plurality of independently-specified computation workloads, such as graphics processing workloads, and in a specific example, ray tracing workloads. The workloads include a scheduling key, which is one basis on which the groupings can be formed. Workloads grouped together can all execute from the same source of instructions, on one or more different private data elements. Such workloads can recursively instantiate other workloads that reference the same private data elements. In some examples, the scheduling key can be used to identify a data element to be used by all the workloads of a grouping. Memory conflicts to private data elements are handled through scheduling of non-conflicted workloads or specific instructions and/or deferring conflicted workloads instead of locking memory locations.

Claims (36)

1. A computer-implemented method for processing workloads in a computer system comprising a plurality of computation elements, the method comprising:

receiving a plurality of fibres, each of the fibres comprising computer executable instructions, and each of the fibres having an associated priority;

identifying a scheduling key for each of the fibres;

grouping the fibres into one or more groups of fibres based on the identified scheduling key for each of the fibres;

determining a priority for each of the one or more groups of fibres based on the priority of the one or more fibres contained within that group; and

scheduling, for execution, the one or more groups of fibres based on the priority of each of the one or more groups of fibres.

2. The method according to claim 1 , wherein each of the fibres are instantiated individually either by a thread or another fibre.

3. The method according to claim 1 , further comprising determining a packet identifier representing one of the groups of fibres.

4. The method according to claim 1 , wherein the priority of each of the one or more groups of fibres is determined by determining an average of the individual priorities of the one or more fibres contained within that group.

5. The method according to claim 4 , wherein the determined average is a weighted average.

6. The method according to claim 1 , wherein the priority of each of the one or more groups of fibres is determined by assigning a priority to each of the groups of fibres based on the current execution state of the fibres within the computer system.

7. The method according to claim 1 , wherein the priority of each of the one or more groups of fibres is determined based on a storage location of the group of fibres.

8. The method according to claim 1 , wherein the computer executable instructions of a fibre are operable to:

read and write to a fibre storage memory, and

instantiate additional fibres.

9. The method according to claim 1 , wherein the computer executable instructions of a fibre are operable to read data from the fibre storage memory through a Non-Uniform Memory Access (NUMA) architecture.

10. The method according to claim 1 , wherein the fibres grouped together for execution are executed to perform ray tracing.

11. The method according to claim 1 , wherein the fibres grouped together for execution are executed to perform database traversal.

12. The method according to claim 1 , wherein the fibres grouped together for execution are executed to perform sorting.

13. The method according to claim 1 , wherein the fibres grouped together for execution are executed to perform spatial searching.

14. The method according to claim 1 , wherein the computer executable instructions of the fibres grouped together for execution are executed on a GPU.

15. A computing system configured to process workloads, wherein the computing system comprises:

a plurality of computation elements configured to execute fibres that comprise computer executable instructions; and

a controller configured to:

receive a plurality of fibres, each of the fibres having an associated priority;

identify a scheduling key for each of the fibres;

group the fibres into one or more groups of fibres based on the identified scheduling key for each of the fibres;

determine a priority for each of the one or more groups of fibres based on the priority of the one or more fibres contained within that group; and

schedule, for execution, the one or more groups of fibres based on the priority of each of the one or more groups of fibres.

16. The computing system according to claim 15 , further comprising a host processor which is configured to execute threads, and wherein the computer system further comprises a computing module that is a fibre API which is further configured to interface with the host processor to allow threads running on the host processor to instantiate a plurality of fibres for execution on one or more computation elements.

17. A non-transitory computer readable storage medium having stored thereon computer readable instructions, which when executed on at least one processor in a computer system comprising a plurality of computation elements, causes the computer system to:

receive a plurality of fibres, each of the fibres comprising computer executable instructions, and each of the fibres having an associated priority;

identify a scheduling key for each of the fibres;

group the fibres into one or more groups of fibres based on the identified scheduling key for each of the fibres;

determine a priority for each of the one or more groups of fibres based on the priority of the one or more fibres contained within that group; and

schedule, for execution, the one or more groups of fibres based on the priority of each of the one or more groups of fibres.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Continuity (8)
Continuation 17098089 · Nov 13, 2020
Continuation 15219860 · Jul 26, 2016
Continuation 14817747 · Aug 4, 2015
Continuation 14230093 · Mar 31, 2014
Continuation 13567091 · Aug 6, 2012
Continuation PCTUS2012042591 · Jun 15, 2012
Provisional Application 61497915 · Jun 16, 2011
Related Publication 20230245374A1 · Aug 3, 2023
References Cited (38)
US 4466061A · DeSantis et al. · 1984 [cited by applicant]
US 5239654A · Ing-Simmons et al. · 1993 [cited by applicant]
US 7324112B1 · Lindholm et al. · 2008 [cited by applicant]
US 7460126B2 · Grantham et al. · 2008 [cited by applicant]
US 7602395B1 · Diard · 2009 [cited by applicant]
US 7634637B1 · Lindholm et al. · 2009 [cited by applicant]
US 7925860B1 · Juffa et al. · 2011 [cited by applicant]
US 8108625B1 · Coon et al. · 2012 [cited by applicant]
US 8200594B1 · Bleiweiss · 2012 [cited by applicant]
US 8390631B2 · Mcmullen et al. · 2013 [cited by applicant]
US 8627331B1 · Grunwald et al. · 2014 [cited by applicant]
US 9183662B1 · Sams et al. · 2015 [cited by applicant]
US 20060053189A1 · Mantor · 2006 [cited by applicant]
US 20070030277A1 · Prokopenko et al. · 2007 [cited by applicant]
US 20070030278A1 · Prokopenko et al. · 2007 [cited by applicant]
US 20080005547A1 · Papakipos et al. · 2008 [cited by applicant]
US 20080066072A1 · Yurekli et al. · 2008 [cited by applicant]
US 20080074433A1 · Jiao et al. · 2008 [cited by applicant]
US 20080077926A1 · Jeter et al. · 2008 [cited by applicant]
US 20080143730A1 · Lindholm et al. · 2008 [cited by applicant]
US 20090138890A1 · Blake et al. · 2009 [cited by applicant]
US 20090322752A1 · Peterson et al. · 2009 [cited by applicant]
US 20100146200A1 · Wood et al. · 2010 [cited by applicant]
US 20120133654A1 · Redgrave et al. · 2012 [cited by applicant]
US 20120139926A1 · Clohset et al. · 2012 [cited by applicant]
US 20120151145A1 · Lyashevsky · 2012 [cited by applicant]
CN 101479704A · 2009 [cited by applicant]
CN 101589366A · 2009 [cited by applicant]
CN 101802789A · 2010 [cited by applicant]
Chunyang Gou; “Elastic Pipeline: Addressing GPU On-chip Shared Memory Bank Conflicts”, CF'11, May 3-5, 2011, Ischia, Italy. Copyright 2011 ACM 978-4503-0698-01/11/05(Year: 2011). [cited by applicant]
German Examination Report dated Jan. 16, 2020, in corresponding German Application No. 11 2012 002 465.6 (English translation). [cited by applicant]
German Examination Report dated Nov. 18, 2014, in corresponding German Application No. 11 2012 002 465.6 (English translation). [cited by applicant]
Nvidia, “Nvidia Cuda C Programming Guide,” Version 3.1.1, Jul. 21, 2010. [cited by applicant]
Wikipedia, “Mutual exclusion,” Jun. 11, 2011, 4 pages. [cited by applicant]
*(Note: NPL in parent application). [cited by applicant]
Fung; “Dynamic Warp Formation: Efficient MIMD Control Flow on SIMD Graphics Hardware”; Jun. 7, 2009; ACM Transactions on Architecture and Code Optimization; vol. 6; No. 2; 37 pages. [cited by applicant]
Narasiman et al; “Improving GPU Performance via Large Warps and Two-Level Warp Scheduling”; Technical Report TR-HPS-2010-006, High Performance Systems Group, University of Texas at Austin and NVIDIA Research; Dec. 2010;… [cited by applicant]
Schiffer; “A Parallel Geometry Core for High Performance Ray Tracing”; Diploma Thesis; Technical University Graz; Apr. 2008; 103 pages. [cited by applicant]