Expressing parallel execution relationships in a sequential programming language

US9317290B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9317290-B2
Application numberUS-201313735438-A
CountryUS
Kind codeB2
Filing dateJan 7, 2013
Priority dateMay 4, 2007
Publication dateApr 19, 2016
Grant dateApr 19, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

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.

First claim

Opening claim text (preview).

What is claimed is: 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. 2. The method of claim 1 wherein the first indication is a token. 3. The method of claim 1 wherein the first indication is a count provided by a counter. 4. The method of claim 1 wherein the first command is compatible with a C++ programming language. 5. The method of claim 1 wherein the processing circuit comprises a single-instruction multiple-data processor. 6. The method of claim 1 wherein the processing circuit comprises a plurality of single-instruction multiple-data processors. 7. The method of claim 1 further comprising: receiving one or more commands to use the stored data to generate display data and to display the display data. 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. 9. The integrated circuit of claim 8 wherein the plurality of instructions are compatible with a C++ programming language. 10. The integrated circuit of claim 8 wherein the processing circuit comprises a single-instruction multiple-data processor. 11. The integrated circuit of claim 8 wherein the processing circuit comprises a plurality of single-instruction multiple-data processors. 12. The integrated circuit of claim 11 wherein the integrated circuit is a graphics processing integrated circuit. 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 then receiving 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. 14. The method of claim 13 wherein the sequential programming language is a C based programming language. 15. The method of claim 13 wherein the sequential programming language is a C++ programming language. 16. The method of claim 13 wherein the processing circuit comprises a plurality of single-instruction multiple-data processors.

Assignees

Inventors

Classifications

  • G06F9/522Primary

    Barrier synchronisation · CPC title

  • G06F9/38Primary

    Concurrent instruction execution, e.g. pipeline or look ahead · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9317290B2 cover?
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 depen…
Who is the assignee on this patent?
Nvidia Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/522. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Apr 19 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).