Expressing parallel execution relationships in a sequential programming language
First Claim
1. A method of processing data comprising:
- receiving a first command instructing a first process to be executed on a processing circuit, the first command including a first indication that may be used to indicate when the first process has completed execution;
receiving a second command instructing a second process to be executed on the processing circuit, the second command including a second indication that may be used to indicate when the second process has completed execution;
receiving a third command instructing a third process to be executed on the processing circuit, the third command instructing the third process not to begin until the first indication and the second indication have been received, wherein data generated by the third process is stored in a memory, andwherein the first command, the second command, and the third command are compatible with a sequential programming language.
1 Assignment
0 Petitions
Accused Products
Abstract
Circuits, methods, and apparatus that provide parallel execution relationships to be included in a function call or other appropriate portion of a command or instruction in a sequential programming language. One example provides a token-based method of expressing parallel execution relationships. Each process that can be executed in parallel is given a separate token. Later processes that depend on earlier processes wait to receive the appropriate token before being executed. In another example, counters are used in place to tokens to determine when a process is completed. Each function is a number of individual functions or threads, where each thread performs the same operation on a different piece of data. A counter is used to track the number of threads that have been executed. When each thread in the function has been executed, a later function that relies on data generated by the earlier function may be executed.
-
Citations
16 Claims
-
1. A method of processing data comprising:
-
receiving a first command instructing a first process to be executed on a processing circuit, the first command including a first indication that may be used to indicate when the first process has completed execution; receiving a second command instructing a second process to be executed on the processing circuit, the second command including a second indication that may be used to indicate when the second process has completed execution; receiving a third command instructing a third process to be executed on the processing circuit, the third command instructing the third process not to begin until the first indication and the second indication have been received, wherein data generated by the third process is stored in a memory, and wherein the first command, the second command, and the third command are compatible with a sequential programming language. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. An integrated circuit comprising:
-
a processing circuit capable of executing at least a first and a second process; a first counter configured to track a number of times the first process has been executed on the processing circuit; a second counter configured to track a number of times the second process has been executed on the processing circuit; and a memory interface circuit to receive a plurality of instructions from a command buffer in a memory, wherein one of the plurality of instructions prevent execution of a third process until the first counter reaches a first number and the second counter reaches a second number, and wherein the plurality of instructions are compatible with a sequential programming language. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method of processing data comprising:
-
receiving a first command to execute a first process a first number of times on a processing circuit; receiving a second command to execute a second process a second number of times on the processing circuit; tracking a number of times the first process has been executed on the processing circuit; tracking a number of times the second process has been executed on the processing circuit; determining that the first process has been executed the first number of times on the processing circuit; determining that the second process has been executed the second number of times on the processing circuit; receiving a third command to execute, after the first process has been executed the first number of times and the second process has been executed the second number of times, a third process a third number of times on the processing circuit; and
thenreceiving one or more additional commands to use data generated by the third process to generate display data and to display the display data, wherein the first, second, and third commands are compatible with a sequential programming language. - View Dependent Claims (14, 15, 16)
-
Specification