Tokenized streams for concurrent execution between asymmetric multiprocessors
First Claim
1. A method for executing application commands associated with a plurality of streams, the method comprising:
- receiving from an application program a first command that is associated with a first stream token;
parsing, via a device driver, the first command to identify the first stream token, wherein the first stream token indicates to the device driver that commands associated with the first stream, including the first command, can be executed in parallel with commands associated with another stream across different execution units within a graphics processing unit;
querying a memory location associated with the first stream for a first semaphore;
determining that the first semaphore has not yet been released; and
until the first semaphore has been released, either blocking execution of each command in the application program subsequent to the first command until the graphics processing unit has finished executing all operations associated with the first stream, or waiting until all operations associated with the first stream have finished executing before executing any operations associated with a second stream.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for executing an application program using streams. A device driver receives a first command within an application program and parses the first command to identify a first stream token that is associated with a first stream. The device driver checks a memory location associated with the first stream for a first semaphore, and determines whether the first semaphore has been released. Once the first semaphore has been released, a second command within the application program is executed. Advantageously, embodiments of the invention provide a technique for developers to take advantage of the parallel execution capabilities of a GPU.
24 Citations
14 Claims
-
1. A method for executing application commands associated with a plurality of streams, the method comprising:
-
receiving from an application program a first command that is associated with a first stream token; parsing, via a device driver, the first command to identify the first stream token, wherein the first stream token indicates to the device driver that commands associated with the first stream, including the first command, can be executed in parallel with commands associated with another stream across different execution units within a graphics processing unit; querying a memory location associated with the first stream for a first semaphore; determining that the first semaphore has not yet been released; and until the first semaphore has been released, either blocking execution of each command in the application program subsequent to the first command until the graphics processing unit has finished executing all operations associated with the first stream, or waiting until all operations associated with the first stream have finished executing before executing any operations associated with a second stream. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to execute application commands associated with a plurality of streams by performing the steps of:
-
receiving from an application program a first command that is associated with a first stream token; parsing the first command to identify the first stream token, wherein the first stream token indicates to a device driver that commands associated with the first stream, including the first command, can be executed in parallel with commands associated with another stream across different execution units within a graphics processing unit querying a memory location associated with the first stream for a first semaphore; determining that the first semaphore has not yet been released; and until the first semaphore has been released, either blocking execution of each command in the application program subsequent to the first command until the graphics processing unit has finished executing all operations associated with the first stream, or waiting until all operations associated with the first stream have finished executing before executing any operations associated with a second stream. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A computing system configured to execute application commands from an application program using a plurality of streams, comprising:
-
a graphics processing unit; and a system memory coupled to the graphics processing unit and storing a device driver and the application program, wherein the device driver is configured to; receive from an application program a first command that is associated with a first stream token; parse the first command to identify the first stream token, wherein the first stream token indicates to the device driver that commands associated with the first stream, including the first command, can be executed in parallel with commands associated with another stream across different execution units within a graphics processing unit; querying a memory location associated with the first stream for a first semaphore; determine that the first semaphore has not yet been released; and until the first semaphore has been released, either block execution of each command in the application program subsequent to the first command until the graphics processing unit has finished executing all operations associated with the first stream, or wait until all operations associated with the first stream have finished executing before executing any operations associated with a second stream.
-
Specification