IP Library Granted Patent US 10,325,341
Granted Patent B2
US 10,325,341 · App. 15/493,233 · Granted Jun 18, 2019

Handling pipeline submissions across many compute units

Inventors: Balaji Vembu (Folsom, CA); Altug Koker (El Dorado Hills, CA); Joydeep Ray (Folsom, CA)
Assignee: Intel Corporation
G06T1/20G06T15/005G06T2200/04
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,325,341
App. No.
15/493,233
Granted
Jun 18, 2019
Kind
B2
Abstract

One embodiment provides for a general-purpose graphics processing unit comprising multiple processing units and a pipeline manager to distribute a thread group to the multiple processing units, wherein the pipeline manager is to distribute the thread group as multiple thread sub-groups.

Claims (35)

1. A general-purpose graphics processing unit comprising:

multiple processing units; and

a pipeline manager to distribute a thread group to the multiple processing units, wherein the pipeline manager is to distribute the thread group as multiple thread sub-groups, the pipeline manager includes a thread group manager to manage execution of the thread group and the multiple thread sub-groups, and the thread group manager is to independently retire thread sub-groups of the thread group, wherein the thread group manager is additionally to retire a first thread sub-group of a first thread group and launch a second thread sub-group of the first thread group.

2. The general-purpose graphics processing unit as in claim 1 , the thread group manager including a group identifier manager to allocate a group identifier for the first thread group and a sub-group manager to allocate a sub-group identifier for the first thread sub-group and the second thread sub-group.

3. The general-purpose graphics processing unit as in claim 2 , wherein the thread group manager is configured to track a number of active sub-groups of a thread group.

4. The general-purpose graphics processing unit as in claim 3 , wherein the thread group manager is additionally configured to track a number of active threads of each sub-group of the thread group.

5. The general-purpose graphics processing unit as in claim 4 , wherein the thread group manager includes a launch unit to launch each thread of a thread sub-group on the multiple processing units.

6. The general-purpose graphics processing unit as in claim 5 , the pipeline manager additionally including a sub-group retirement queue and wherein to retire the first thread sub-group of the first thread group includes to store the sub-group identifier for the first thread sub-group to the sub-group retirement queue.

7. The general-purpose graphics processing unit as in claim 6 , the pipeline manager additionally including a run queue and wherein to launch the second thread sub-group of the first thread group includes to store the sub-group identifier for the second thread sub-group to the run queue.

8. The general-purpose graphics processing unit as in claim 6 , wherein the thread group manager is to additionally launch a second thread sub-group of second thread group after the first thread sub-group of the first thread group is retired.

9. The general-purpose graphics processing unit as in claim 8 , wherein the pipeline manager is to configure multiple processing units to execute multiple thread sub-groups associated with multiple different thread groups.

10. A method of managing thread execution on a general-purpose graphics processing unit (GPGPU), the method comprising:

launching multiple thread sub-groups of a thread group on a processing unit of the GPGPU;

monitoring execution of the multiple thread sub-groups until a thread sub-group is complete;

retiring a completed thread sub-group; and

launching one or more pending thread sub-groups on the processing unit after retiring a completed thread sub-group.

11. The method as in claim 10 , additionally comprising checking dependencies of the one or more pending thread sub-groups before launching the one or more pending sub-groups on the processing unit.

12. The method as in claim 11 , additionally comprising:

checking dependencies of a first pending thread sub-group;

checking dependencies of a second pending thread sub-group; and

launching the first pending thread sub-group after determining that the second pending thread sub-group is dependent upon a third thread sub-group.

13. The method as in claim 11 , additionally comprising:

checking dependencies of a first pending thread sub-group;

checking dependencies of a second pending thread sub-group; and

launching the first pending thread sub-group and the second pending thread sub-group after determining that the second pending thread sub-group is dependent upon the first pending thread sub-group.

14. The method as in claim 10 , additionally comprising:

after retiring a completed thread sub-group, launching a pending thread sub-group from a different thread group.

15. A data processing system comprising:

a general-purpose graphics processing unit (GPGPU) comprising multiple processing units and a pipeline manager to distribute a thread group to the multiple processing units, wherein the pipeline manager is to distribute the thread group as multiple thread sub-groups, the pipeline manager additionally includes a thread group manager to manage execution of the thread group and the multiple thread sub-groups, and the thread group manager is to independently retire thread sub-groups of the thread group, wherein the thread group manager is additionally to retire a first thread sub-group of a first thread group and launch a second thread sub-group of the first thread group; and

a memory coupled with the GPGPU.

16. The data processing system as in claim 15 , the thread group manager including a group identifier manager to allocate a group identifier for the first thread group and a sub-group manager to allocate a sub-group identifier for the first thread sub-group and the second thread sub-group.

17. The data processing system as in claim 16 , wherein the thread group manager is configured to track a number of active sub-groups of a thread group.

18. The data processing system as in claim 17 , wherein the thread group manager is additionally configured to track a number of active threads of each sub-group of the thread group.

19. The data processing system as in claim 18 , wherein the thread group manager includes a launch unit to launch each thread of a thread sub-group on the multiple processing units.

20. The data processing system as in claim 19 , the pipeline manager additionally including a sub-group retirement queue and a run queue, wherein to retire the first thread sub-group of the first thread group includes to store the sub-group identifier for the first thread sub-group to the sub-group retirement queue and to launch the second thread sub-group of the first thread group includes to store the sub-group identifier for the second thread sub-group to the run queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2017
From: VEMBU, BALAJI; KOKER, ALTUG; RAY, JOYDEEP
To: INTEL CORPORATION
Reel/Frame 043735/0490 →
Continuity (1)
Related Publication 20180308195A1 · Oct 25, 2018
Cited By (2)
US 12,190,164 US 12,333,339