Read-only communication operator

US9430204B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9430204-B2
Application numberUS-94990810-A
CountryUS
Kind codeB2
Filing dateNov 19, 2010
Priority dateNov 19, 2010
Publication dateAug 30, 2016
Grant dateAug 30, 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.

A high level programming language provides a read-only communication operator that prevents a computational space from being written. An indexable type with a rank and element type defines the computational space. For an input indexable type, the read-only communication operator produces an output indexable type with the same rank and element type as the input indexable type but ensures that the output indexable type may not be written. The read-only communication operator ensures that any attempt to write to the output indexable type will be detected as an error at compile time.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer readable storage device storing computer-executable instructions that, when executed by a computer system, cause the computer system to perform a method comprising: applying a read-only communication operator to an input indexable type to form an immutable computational space, the read-only communication operator applied in a data parallel source code configured for execution on one or more data parallel compute nodes; generating an output indexable type from said application, the output indexable type is a data type forming an immutable computational space; and performing a data parallel algorithm using the output indexable type, wherein the read-only communication operator is based on a template operator that defines one or more of constant accessors, index operators, or subscript operators for the output indexable type, wherein the read-only communication operator includes a template-enclosed code portion that checks a Parent type and range of the input indexable type using a conditional operator that returns a read-only Parent range, wherein the template-enclosed code portion optionally includes an internal casting of the Parent type to prevent a cast inadvertently made to a lvalue-reference of the input indexable type that might occur outside of the template-enclosed code portion, and in case the input indexable type returns its index operators and subscript operators as by-lvalue-references, a template-based conditional base class is implemented to enforce the corresponding return type as a rvalue-reference or a by-value depending on the Parent type. 2. The computer readable storage device of claim 1 , wherein the input indexable type has a rank and an element type, and wherein the output indexable type has the rank and the element type. 3. The computer readable storage device of claim 1 , wherein the data parallel algorithm is a visual shader. 4. The computer readable storage device of claim 1 , wherein the read-only communication operator is applied in an invocation of a vector function. 5. The computer readable storage device of claim 4 , wherein the read-only communication operator is applied to a parameter in an invocation of a kernel function. 6. The computer readable storage device of claim 1 , wherein the data parallel source code is written in a programming language with data parallel extensions. 7. The computer readable storage device of claim 1 , wherein the data parallel source code is written in a high level data parallel programming language. 8. The computer readable storage device of claim 1 , wherein the one or more data parallel compute nodes include at least one graphics processing unit. 9. The computer readable storage device of claim 1 , wherein the one or more data parallel compute nodes include at least one general purpose processor. 10. A method implemented on a computing device having at least one processor, the method comprising: identifying a read-only communication operator in data parallel source code configured for execution on one or more data parallel compute nodes, the read-only communication operator used to form an immutable computational space; and generating data parallel executable code from the data parallel source code such that the data parallel executable code implements read-only communication operator by generating an output indexable type from an input indexable type, the output indexable type forming the immutable computational space in memory, wherein the read-only communication operator is based on a template operator that defines one or more of constant accessors, index operators, and subscript operators for the output indexable type, wherein the read-only communication operator includes a template-enclosed code portion that checks a Parent type and range of the input indexable type using a conditional operator that returns a read-only Parent range, wherein the template-enclosed code portion optionally includes an internal casting of the Parent type to prevent a cast inadvertently made to a lvalue-reference of the input indexable type that might occur outside of the template-enclosed code portion, and in case the input indexable type returns its index operators and subscript operators as by-lvalue-references, a template-based conditional base class is implemented to enforce the corresponding return type as a rvalue-reference or a by-value depending on the Parent type. 11. The method of claim 10 wherein the input indexable type has a rank and an element type, and wherein the output indexable type has the rank and the element type. 12. The method of claim 10 further comprising: generating an error in response to detecting a write to the output indexable type in the data parallel source. 13. The method of claim 10 , wherein the read-only communication operator is applied to a parameter in an invocation of a kernel function. 14. The method of claim 10 , wherein the read-only communication operator is applied in an invocation of a vector function. 15. The method of claim 10 wherein the data parallel source code is written in a high level general purpose programming language with data parallel extensions. 16. The method of claim 10 wherein the data parallel source code is written in a high level data parallel programming language. 17. The method of claim 10 wherein the one or more data parallel compute nodes include at least one graphics processing unit. 18. The method of claim 10 wherein the one or more data parallel compute nodes include at least one general purpose processor. 19. A computer readable storage device storing computer-executable instructions that, when executed by at least one processor, perform a method comprising: applying a read-only communication operator to form an immutable computational space by generating an output indexable type with a rank and an element type from an input indexable type with the rank and the element type; and performing a data parallel algorithm using the output indexable type; wherein the read-only communications operator is included in data parallel source code written in a high level general purpose programming language with data parallel extensions, wherein the read-only communication operator includes a template-enclosed code portion that checks a Parent type and range of the input indexable type using a conditional operator that returns a read-only Parent range, wherein the template-enclosed code portion optionally includes an internal casting of the Parent type to prevent a cast inadvertently made to a lvalue-reference of the input indexable type that might occur outside of the template-enclosed code portion, in case the input indexable type returns its index operators and subscript operators as by-lvalue-references, a template-based conditional base class is implemented to enforce the corresponding return type as a rvalue-reference or a by-value depending on the Parent type, wherein the output indexable type is a data type that forms an immutable computational space in memory, and wherein the read-only communication operator defines one or more of constant accessors, index operators, or subscript operators for the output indexable type. 20. The computer readable storage device of claim 19 , wherein the read-only communication operator is applied in an invocation of a vector function.

Assignees

Inventors

Classifications

  • G06F8/458Primary

    Synchronisation, e.g. post-wait, barriers, locks (synchronisation among tasks G06F9/52) · CPC title

  • G06F8/314Primary

    Parallel programming languages (G06F8/313 takes precedence) · 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 US9430204B2 cover?
A high level programming language provides a read-only communication operator that prevents a computational space from being written. An indexable type with a rank and element type defines the computational space. For an input indexable type, the read-only communication operator produces an output indexable type with the same rank and element type as the input indexable type but ensures that th…
Who is the assignee on this patent?
Levanoni Yosseff, Ringseth Paul F, Zhu Weirong, and 2 more
What technology area does this patent fall under?
Primary CPC classification G06F8/458. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 30 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).