IP Library Granted Patent US 10,620,916
Granted Patent B2
US 10,620,916 · App. 15/252,192 · Granted Apr 14, 2020

Read-only communication operator

Inventors: Yosseff Levanoni (Redmond, WA); Paul F. Ringseth (Bellevue, WA); Weirong Zhu (Kirkland, WA); Lingli Zhang (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/314G06F8/458
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 10,620,916
App. No.
15/252,192
Granted
Apr 14, 2020
Kind
B2
Abstract

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.

Claims (31)

1. A system comprising:

processing elements; and

memory to store computer executable instructions to control the processing elements to:

apply a read-only communication operator, in a data parallel source code configured to execute on one or more data parallel compute nodes, to an input indexable type to define only immutable index operators and subscript operators to generate an output indexable type to form an immutable computational space; and

implement the read-only communication operator with a template operator that defines one or more of constant accessors, index operators, and subscript operators for the output indexable type to perform a data parallel algorithm using the output indexable type, the template operator to define only immutable index and subscript operators for the output indexable type to eliminate non-constant index and subscript operators of the input indexable type, the template operator configured to: check a type and range of the input indexable type and conditionally return a read-only range.

2. The system 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 system of claim 1 , wherein the data parallel algorithm is a visual shader.

4. The system of claim 1 , wherein the read-only communication operator is applied in an invocation of a vector function.

5. The system of claim 4 , wherein the read-only communication operator is applied to a parameter in an invocation of a kernel function.

6. The system of claim 1 , wherein the data parallel source code is written in a programming language with data parallel extensions.

7. The system of claim 1 , wherein the data parallel source code is written in a high level data parallel programming language.

8. The system of claim 1 , wherein the one or more data parallel compute nodes include at least one graphics processing unit.

9. The system of claim 1 , wherein the one or more data parallel compute nodes include at least one general purpose processor.

10. A method performed by a compiler in a computer system, 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; and

generating data parallel executable code from the data parallel source code such that the data parallel executable code applies the read-only communication operator to an input indexable type to define only immutable index operators and subscript operators to generate an output indexable type to form an immutable computational space by implementing the read-only communication operator with a template operator that defines one or more of constant accessors, index operators, and subscript operators for the output indexable type, the template operator to defines only immutable index and subscript operators for the output indexable type to eliminate non-constant index and subscript operators of the input indexable type, the template operator configured to: check a type and range of the input indexable type and conditionally return a read-only range.

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 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 comprising:

generating the data parallel executable code using a template operator corresponding to the read-only communication operator.

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 to control a computer system to:

apply a read-only communication operator, in a data parallel source code configured to execute on one or more data parallel compute nodes, to an input indexable type to define only immutable index operators and subscript operators to generate an output indexable type to form an immutable computational space; and

perform a data parallel algorithm using the output indexable type by implementing the read-only communication operator with a template operator that defines one or more of constant accessors, index operators, and subscript operators for the output indexable type, the template operator to define only immutable index and subscript operators for the output indexable type to eliminate non-constant index and subscript operators of the input indexable type, the template operator configured to: check a type and range of the input indexable type and conditionally return a read-only range.

20. The computer readable storage device of claim 19 , the computer-executable instructions to control the computer system to:

apply the read-only communication operator in an invocation of a vector function.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2017
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 044850/0237 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2016
From: LEVANONI, YOSSEFF; RINGSETH, PAUL F.; ZHU, WEIRONG; ZHANG, LINGLI
To: MICROSOFT CORPORATION
Reel/Frame 039676/0926 →