IP Library Granted Patent US 12,118,398
Granted Patent B2
US 12,118,398 · App. 16/041,066 · Granted Oct 15, 2024

Scheduling heterogeneous computation on multithreaded processors

Inventors: Luke Tilman Peterson (Oakland, CA); James Alexander McCombe (San Francisco, CA)
Assignee: Imagination Technologies Limited
G06F9/5038G06F9/3828G06F9/3851G06F9/3891G06F2209/506
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,118,398
App. No.
16/041,066
Granted
Oct 15, 2024
Kind
B2
Abstract

Aspects include computation systems that can identify computation instances that are not capable of being reentrant, or are not reentrant capable on a target architecture, or are non-reentrant as a result of having a memory conflict in a particular execution situation. For example, a system can have a plurality of computation units, each with an independently schedulable SIMD vector. Computation instances can be defined by a program module, and a data element(s) that may be stored in a local cache for a particular computation unit of the plurality. Each local cache does not maintain coherency controls for such data elements. During scheduling, a scheduler can maintain a list of running (or runnable) instances, and attempt to schedule new computation instances by determining whether any new computation instance conflicts with a running instance and responsively defer scheduling. Such memory conflict checks can be conditioned on a flag or other indication of the potential for non-reentrancy.

Claims (42)

1. A graphics rendering system for performing graphics computation, comprising:

a memory for storing variables for use in graphics computation;

a plurality of computation units configured to execute instances of graphics computation for updating variables in the memory; and

a scheduler configured to schedule instances of graphics computation for execution by the computation units,

wherein the scheduler is configured to:

identify two instances of graphics computation whose concurrent execution could cause a memory conflict in accessing the memory, wherein the two instances of graphics computation are identified prior to scheduling the execution of the two instances of graphics computation;

as a result of identifying the two instances of graphics computation whose concurrent execution could cause a memory conflict in accessing the memory, adjust an execution priority of at least one of the identified two instances of graphics computation; and

schedule, in dependence on the adjusted execution priority, the execution of the identified two instances of graphics computation, to thereby serialize the execution of the identified two instances of graphics computation on the computation units to avoid the memory conflict;

wherein said adjusting an execution priority of said at least one of the identified two instances of graphics computation results in a reduction in a time taken to execute the at least one identified instance of graphics computation.

2. The graphics rendering system of claim 1 wherein the scheduler comprises a serializer which is configured to fill available computation slots for the computation units with scheduled instances of graphics computation, and wherein the serializer is configured to:

determine, during each execution cycle, whether any of the instances of graphics computation to be executed during that execution cycle make conflicting accesses to the memory; and

if it is determined that two or more instances of graphics computation to be executed during an execution cycle make conflicting accesses to the memory, providing one or more substitute instances of graphics computation to be executed instead of a respective one or more of said two or more instances of graphics computation.

3. The system of claim 1 wherein the scheduler is configured to schedule instances of graphics computation for execution by the computation units according to a scheduling key.

4. The system of claim 1 wherein some of the instances of graphics computation are reentrant and other ones of the instances of graphics computation are non-reentrant.

5. The system of claim 1 wherein only non-reentrant instances of graphics computation cause potential memory conflicts in accessing the memory.

6. The system of claim 1 wherein the scheduler comprises a profiler configured to profile program code and to flag instances of graphics computation as being re-entrant or non-reentrant.

7. The system of claim 1 wherein the scheduler is configured to determine whether a computation instance is re-entrant or non-reentrant by comparing a memory location in the memory referenced by the computation instance with a set of memory locations identified as containing data associated with non-reentrant computation instances.

8. The system of claim 1 wherein the scheduler is configured to categorize a computation instance as non-reentrant by comparing a memory location in the memory referenced by the computation instance with a set of memory locations identified as containing data and which can be written by a set of computation instances currently scheduled for execution.

9. The system of claim 1 wherein the computation units are configured to operate as Single Instruction Multiple Data (SIMD) computation units.

10. The system of claim 1 wherein the system is a ray tracing system and wherein the graphics computation is ray tracing computation.

11. The graphics rendering system of claim 1 , wherein the scheduler is configured to schedule, in dependence on the adjusted execution priority, the execution of both of the identified instances of graphics computation after adjusting said execution priority of at least one of the identified instances of graphics computation.

12. The graphics rendering system of claim 1 , wherein said adjusting an execution priority of said at least one of the two identified instances of graphics computation results in an increase to an allocation of computation resources to the identified instance of graphics computation.

13. A computer-implemented graphics rendering method of executing instances of graphics computation on a plurality of computation units, the method comprising:

identifying two instances of graphics computation whose concurrent execution could cause a memory conflict in accessing a memory;

in response to identifying the two instances of graphics computation whose concurrent execution could cause a memory conflict in accessing the memory, adjusting an execution priority of at least one of the identified two instances of graphics computation;

scheduling the identified two instances of graphics computation for execution on the computation units in dependence on the adjusted execution priority for said at least one of the identified two instances of graphics computation; and

executing the identified two instances of graphics computation on the computation units in accordance with said scheduling,

wherein the identified two instances of graphics computation are scheduled to serialize the execution of the two identified instances of graphics computation on the computation units to avoid the memory conflict, wherein the two instances of graphics computation are identified prior to scheduling the execution of the two instances of graphics computation; and

wherein said adjusting an execution priority of said at least one of the identified two instances of graphics computation results in a reduction in a time taken to execute the at least one identified instance of graphics computation.

14. The graphics rendering method of claim 13 further comprising:

determining, during each execution cycle, whether any of the instances of graphics computation to be executed during that execution cycle make conflicting accesses to the memory; and

if it is determined that two or more instances of graphics computation to be executed during an execution cycle make conflicting accesses to the memory, providing one or more substitute instances of graphics computation to be executed instead of a respective one or more of said two or more instances of graphics computation.

15. The graphics rendering method of claim 13 wherein said scheduling the instances of graphics computation comprises scheduling the instances of graphics computation for execution by the computation units according to a scheduling key.

16. The graphics rendering method of claim 13 wherein some of the instances of graphics computation are reentrant and other ones of the instances of graphics computation are non-reentrant, and wherein the method further comprises profiling program code and flagging instances of graphics computation as being re-entrant or non-reentrant.

17. The graphics rendering method of claim 13 wherein said scheduling the instances of graphics computation comprises determining whether a computation instance is re-entrant or non-reentrant by comparing a memory location in the memory referenced by the computation instance with a set of memory locations identified as containing data associated with non-reentrant computation instances.

18. The graphics rendering method of claim 13 wherein said scheduling the instances of graphics computation comprises categorizing a computation instance as non-reentrant by comparing a memory location in the memory referenced by the computation instance with a set of memory locations identified as containing data and which can be written by a set of computation instances currently scheduled for execution.

19. The graphics rendering method of claim 13 wherein the method is implemented in a ray tracing system and wherein the instances of graphics computation are for use in performing ray tracing.

20. A non-transitory computer readable storage medium having stored thereon computer readable code that, when executed, causes a method of scheduling instances of graphics computation to be performed in a graphics rendering system, wherein the method comprises:

identifying two instances of graphics computation whose concurrent execution could cause a memory conflict in accessing a memory, wherein the two instances of graphics computation are identified prior to scheduling the execution of the two instances of graphics computation;

as a result of identifying the two instances of graphics computation whose concurrent execution could cause a memory conflict in accessing the memory, adjusting an execution priority of at least one of the identified two instances of graphics computation; and

scheduling the identified two instances of graphics computation for execution on the computation units in dependence on the adjusted execution priority, wherein the identified two instances of graphics computation are scheduled to serialize the execution of the identified two instances of graphics computation on the computation units to avoid the memory conflict;

wherein said adjusting an execution priority of said at least one of the two identified instances of graphics computation results in a reduction in a time taken to execute the at least one identified instance of graphics computation.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Continuity (4)
Continuation 13368682 · Feb 8, 2012
Provisional Application 61515824 · Aug 5, 2011
Provisional Application 61497915 · Jun 16, 2011
Related Publication 20180329753A1 · Nov 15, 2018