IP Library Granted Patent US 10,423,391
Granted Patent B2
US 10,423,391 · App. 15/214,448 · Granted Sep 24, 2019

Agile communication operator

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,423,391
App. No.
15/214,448
Granted
Sep 24, 2019
Kind
B2
Abstract

A high level programming language provides an agile communication operator that generates a segmented computational space for distributing the computational space across compute nodes. The agile communication operator decomposes the computational space into segments, causes the segments to be assigned to compute nodes, and allows the user to centrally manage and automate movement of the segments between the compute nodes. The segment movement may be managed using either a full global-view representation or a local-global-view representation of the segments.

Claims (40)

1. A method performed by a compiler in a computer system, the method comprising:

identifying an agile communication operator in data parallel source code configured for execution on one or more data parallel optimal compute nodes; and

generating data parallel executable code from the data parallel source code such that the data parallel executable code implements the agile communication operator by generating an agile indexable type from an input indexable type and a resource map, the agile communication operator to:

facilitate passing the agile indexable type to a data parallel call site in the data parallel source code to cause the input indexable type to be decomposed into a plurality of segments,

generate a segmented computational space, and

assign each of the segments to one of the data parallel optimal compute node as specified by the resource map for distributing the computational space across the data parallel optimal compute nodes.

2. The method of claim 1 wherein the agile output indexable type has a plurality of segments.

3. The method of claim 1 comprising:

generating the data parallel executable code from the data parallel source code such that the data parallel executable code implements the agile communication operator by using a first segment of the agile indexable type on a first one of the one or more data parallel compute nodes and a second segment of the agile indexable type on a second one of the one or more data parallel compute nodes.

4. The method of claim 1 wherein the data parallel source code is coded with a full global-view representation of the agile indexable type.

5. The method of claim 1 wherein the data parallel source code is coded with a local-global-view representation of the agile indexable type.

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

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

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

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

10. A system comprising:

processing elements;

memory storing computer executable instructions including a compiler to control the processing elements to:

identify an agile communication operator in data parallel source code configured for execution on one or more data parallel optimal compute nodes; and

generate data parallel executable code from the data parallel source code such that the data parallel executable code implements the agile communication operator by generating an agile indexable type from an input indexable type and a resource map, the agile communication operator to:

facilitate passing the agile indexable type to a data parallel call site in the data parallel source code to cause the input indexable type to be decomposed into a plurality of segments,

generate a segmented computational space, and

assign each of the segments to one of the data parallel optimal compute node as specified by the resource map for distributing the computational space across the data parallel optimal compute nodes.

11. The system of claim 10 , wherein the agile indexable type has a plurality of segments.

12. The system of claim 10 , the compiler to control the processing elements to:

generate the data parallel executable code from the data parallel source code such that the data parallel executable code implements the agile communication operator by using a first segment of the agile indexable type on a first one of the one or more data parallel optimal compute nodes and a second segment of the agile indexable type on a second one of the one or more data parallel optimal compute nodes.

13. The system of claim 10 , wherein the data parallel source code is coded with a full global-view representation of the agile indexable type.

14. The system of claim 10 , wherein the data parallel source code is coded with a local-global-view representation of the agile indexable type.

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

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

17. A computer readable storage memory storing computer-executable instructions to control a computer system to:

identify an agile communication operator in data parallel source code configured for execution on one or more data parallel optimal compute nodes; and

generate data parallel executable code from the data parallel source code such that the data parallel executable code implements the agile communication operator by generating an agile indexable type from an input indexable type and a resource map, the agile communication operator to:

facilitate passing the agile indexable type to a data parallel call site in the data parallel source code to cause the input indexable type to be decomposed into a plurality of segments,

generate a segmented computational space, and

assign each of the segments to one of the data parallel optimal compute node as specified by the resource map for distributing the computational space across the data parallel optimal compute nodes.

18. The computer readable storage memory of claim 17 , the computer-executable instructions to control the computer system to:

generate the data parallel executable code from the data parallel source code such that the data parallel executable code implements the agile communication operator by using a first segment of the agile indexable type on a first one of the one or more data parallel optimal compute nodes and a second segment of the agile indexable type on a second one of the one or more data parallel optimal compute nodes.

19. The computer readable storage memory of claim 17 , wherein the data parallel source code is coded with a full global-view representation of the agile indexable type.

20. The computer readable storage memory of claim 17 , wherein the data parallel source code is coded with a local-global-view representation of the agile indexable type.

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 Jul 20, 2016
From: RINGSETH, PAUL F.
To: MICROSOFT CORPORATION
Reel/Frame 039196/0437 →