IP Library Granted Patent US 9,092,267
Granted Patent B2
US 9,092,267 · App. 13/164,615 · Granted Jul 28, 2015

Memory sharing in graphics processing unit

Inventor: Jukka-Pekka Arvo (Raisio, FI)
Assignee: QUALCOMM Incorporated
G06F9/5033
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 9,092,267
App. No.
13/164,615
Granted
Jul 28, 2015
Kind
B2
Abstract

Aspects of this disclosure are directed to a method of processing data with a graphics processing unit (GPU). According to some aspects of the disclosure, the method comprises receiving input defining execution orders for a shader processor, wherein the execution orders comprise a plurality of kernel designations and a plurality of workgroup designations. The method may also include assigning workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to the shader processor. The method may also include executing, by the shader processor, the workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to process input data.

Claims (45)

1. A method of processing data with a graphics processing unit (GPU), the method comprising:

receiving execution orders for a first shader processor of a plurality of shader processors, wherein the execution orders comprise a plurality of kernel designations and a plurality of workgroup designations of workgroups included in the designated kernels, and wherein the execution orders virtually link workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to operate on input data associated with the received execution orders;

assigning workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to the first shader processor of the plurality of shader processors;

storing the input data to memory of the first shader processor; and

serially executing, by the first shader processor of the plurality of shader processors, the virtually linked workgroups, including sharing the input data stored to the memory of the first shader processor during execution of the virtually linked workgroups and without storing other input data to the memory of the first shader processor during execution of the virtually linked workgroups.

2. The method of claim 1 , wherein the plurality of kernel designations identify a plurality of kernels, and wherein each kernel of the plurality of kernels defines a function carried out by the GPU.

3. The method of claim 1 , wherein the plurality of workgroup designations identify a plurality of workgroups, and wherein each workgroup of the plurality of workgroups comprises instructions that are executed on the input data by the GPU.

4. The method of claim 1 , wherein the execution orders virtually link a first workgroup of a first kernel to a first workgroup of a second kernel, wherein the first workgroup of the first kernel and the first workgroup of the second kernel operate on the input data.

5. The method of claim 4 , wherein serially executing the execution orders comprises executing, by the first shader processor, the first workgroup of the second kernel after the first workgroup of the first kernel.

6. The method of claim 1 , wherein the input data is associated with a group of pixels of an image, such that the execution orders virtually link the workgroups to operate on the group of pixels.

7. The method of claim 6 , wherein serially executing the virtually linked workgroups comprises serially executing the virtually linked workgroups without storing other input data associated with another group of pixels of the image to the memory.

8. The method of claim 1 , further comprising, in response to user input, generating the input defining the execution orders using an application programming interface (API).

9. A graphics processing unit (GPU) comprising:

a sequencer module configured to receive execution orders for a first shader processor of a plurality of shader processors, wherein the execution orders comprise a plurality of kernel designations and a plurality of workgroup designations of workgroups included in the designated kernels, and wherein the execution orders virtually link workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to operate on input data associated with the received execution orders;

wherein the sequencer module is configured to assign workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to the first shader processor of the plurality of shader processors;

wherein the first shader processor comprises a memory configured to store the input data; and

wherein the first shader processor of the plurality of shader processors is configured to serially execute the virtually linked workgroups, including sharing the input data stored to the memory of the first shader processor during execution of the virtually linked workgroups and without storing other input data to the memory of the first shader processor during execution of the virtually linked workgroups.

10. The GPU of claim 9 , wherein the plurality of kernel designations identify a plurality of kernels, and wherein each kernel of the plurality of kernels defines a function carried out by the GPU.

11. The GPU of claim 9 , wherein the plurality of workgroup designations identify a plurality of workgroups, and wherein each workgroup of the plurality of workgroups comprises instructions that are executed on the input data by the GPU.

12. The GPU of claim 9 , wherein the execution orders virtually link a first workgroup of a first kernel to a first workgroup of a second kernel, wherein the first workgroup of the first kernel and the first workgroup of the second kernel operate on the input data.

13. The GPU of claim 12 , wherein the first shader processor is further configured to serially execute the first workgroup of the second kernel after the first workgroup of the first kernel.

14. The GPU of claim 9 , wherein the input data is associated with a group of pixels of an image, such that the execution orders virtually link the workgroups to operate on the group of pixels.

15. The GPU of claim 14 , wherein to serially execute the virtually linked workgroups, the first shader processor is configured to serially execute the virtually linked workgroups without storing other input data associated with another group of pixels of the image to the memory.

16. A graphics processing unit (GPU) comprising:

means for receiving execution orders for a first shader processor of a plurality of shader processors, wherein the execution orders comprise a plurality of kernel designations and a plurality of workgroup designations of workgroups included in the designated kernels, and wherein the execution orders virtually link workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to operate on input data associated with the received execution orders;

means for assigning workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to the first shader processor of the plurality of shader processors; and

means for storing the input data to memory of the first shader processor;

means for serially executing the virtually linked workgroups, including means for sharing the input data stored to the memory of the first shader processor during execution of the virtually linked workgroups and without storing other input data to the memory of the first shader processor during execution of the virtually linked workgroups.

17. The GPU of claim 16 , wherein the plurality of kernel designations identify a plurality of kernels, and wherein each kernel of the plurality of kernels defines a function carried out by the GPU.

18. The GPU of claim 16 , wherein the plurality of workgroup designations identify a plurality of workgroups, and wherein each workgroup of the plurality of workgroups comprises instructions that are executed on the input data by the GPU.

19. The GPU of claim 16 , wherein the execution orders virtually link a first workgroup of a first kernel to a first workgroup of a second kernel, wherein the first workgroup of the first kernel and the first workgroup of the second kernel operate on the input data.

20. The GPU of claim 19 , wherein the means for serially executing is further configured to execute the first workgroup of the second kernel after the first workgroup of the first kernel.

21. The GPU of claim 16 , wherein the means for sharing the input data is associated with a group of pixels of an image, such that the execution orders virtually link the workgroups to operate on the group of pixels.

22. The GPU of claim 21 , wherein the means for serially executing the virtually linked workgroups comprises means for serially executing the virtually linked workgroups without storing other input data associated with another group of pixels of the image to the memory.

23. A non-transitory computer-readable storage medium encoded with instructions for causing one or more programmable processors of a computing device having a graphics processing unit (GPU) to:

receive execution orders for a first shader processor of a plurality of shader processors, wherein the execution orders comprise a plurality of kernel designations and a plurality of workgroup designations of workgroups included in the designated kernels, and wherein the execution orders virtually link workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to operate on input data associated with the received execution orders;

assign workgroups of kernels identified in the plurality of workgroup designations and the plurality of kernel designations to the first shader processor of the plurality of shader processors;

store the input data to memory of the first shader processor; and

serially execute, by the first shader processor of the plurality of shader processors, the virtually linked workgroups, including sharing the input data stored to the memory of the first shader processor during execution of the virtually linked workgroups and without storing other input data to the memory of the first shader processor during execution of the virtually linked workgroups.

24. The non-transitory computer-readable storage medium of claim 23 , wherein the plurality of kernel designations identify a plurality of kernels, and wherein each kernel of the plurality of kernels defines a function carried out by the GPU.

25. The non-transitory computer-readable storage medium of claim 23 , wherein the plurality of workgroup designations identify a plurality of workgroups, and wherein each workgroup of the plurality of workgroups comprises instructions that are executed on the input data by the GPU.

26. The non-transitory computer-readable storage medium of claim 23 , wherein the execution orders virtually link a first workgroup of a first kernel to a first workgroup of a second kernel, wherein the first workgroup of the first kernel and the first workgroup of the second kernel operate on the input data.

27. The non-transitory computer-readable storage medium of claim 26 , wherein serially executing the execution orders comprises executing, by the first shader processor, the first workgroup of the second kernel after the first workgroup of the first kernel.

28. The non-transitory computer-readable storage medium of claim 23 , wherein the input data is associated with a group of pixels of an image, such that the execution orders virtually link the workgroups to operate on the group of pixels.

29. The non-transitory computer-readable storage medium of claim 28 , wherein to serially execute the virtually linked workgroups, the instructions cause the one or more programmable processors to serially execute the virtually linked workgroups without storing other input data associated with another group of pixels of the image to the memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2011
From: ARVO, JUKKA-PEKKA
To: QUALCOMM INCORPORATED
Reel/Frame 026482/0698 →
Continuity (1)
Related Publication 20120320070A1 · Dec 20, 2012