Co-map communication operator
AssigneeMicrosoft Corporation
InventorsPaul F. Ringseth, Yosseff Levanoni, Lingli Zhang, Weirong Zhu, Donald J. McCrady
Life of this patent
Estimating the term…
Abstract
A high level programming language provides a co-map communication operator that maps an input indexable type to an output indexable type according to a function. The function maps an index space corresponding to the output indexable type to an index space corresponding to the input indexable type. By doing so, the co-map communication operator lifts a function on an index space to a function on an indexable type to allow composability with other communication operators.
Claims16
A computer readable storage device storing computer-executable instructions that, when executed by a computer system, cause the computer system to perform a method for generating data parallel executable code from data parallel source code, comprising:
- identifying a co-map communication operator in data parallel source code that is configured for execution on one or more data parallel compute nodes, the co-map communication operator being configured to receive as inputs (i) an input indexable type in a first index space and (ii) a function that operates on the first index space, and to transform the input indexable type into an output indexable type in a second index space based on the function, wherein the input indexable type and the output indexable type are data types that implement one or more subscript operators along with a rank, wherein the co-map communication operator is configured to be fully composable with other communication operators by being configured to be specified with each of the following transformations:
- a first transformation that maps the second index space to first index space, a second transformation that transforms an offset into the input indexable type into an offset into the output indexable type, a third transformation that transforms an extent of the input indexable type into an extent of the output indexable type, and a fourth transformation that transforms the extent of the output indexable type into the extent of the input indexable type, and wherein the co-map communications operator comprises a ‘swap’ communications operator that includes an index transformation that swaps dimensions of the input indexable type to transform the input indexable type into the output indexable type;
- based on identifying the co-map communication operator, mapping the input indexable type to the output indexable type by applying the function to the first index space, thereby lifting the function from a function that operates on an index space to a function that operates on an indexable type;
- and
- performing a data parallel algorithm using the output indexable type.
A method for generating data parallel executable code from data parallel source code, the method comprising:
- identifying, at a computer system that includes one or more processors, a co-map communication operator in data parallel source code that is configured for execution on one or more data parallel compute nodes, the co-map communication operator being configured to receive as inputs (i) an input indexable type in a first index space and (ii) a function that operates on the first index space, and to transform the input indexable type into an output indexable type in a second index space based on the function, wherein the input indexable type and the output indexable type are data types that implement one or more subscript operators along with a rank, wherein the co-map communication operator is configured to be fully composable with other communication operators by being configured to be specified with each of the following transformations:
- a first transformation that maps the second index space to first index space, a second transformation that transforms an offset into the input indexable type into an offset into the output indexable type, a third transformation that transforms an extent of the input indexable type into an extent of the output indexable type, and a fourth transformation that transforms the extent of the output indexable type into the extent of the input indexable type, and wherein the co-map communications operator comprises a ‘swap’ communications operator that includes an index transformation that swaps dimensions of the input indexable type to transform the input indexable type into the output indexable type;
- and
- generating, at the computer system, data parallel executable code from the data parallel source code, including mapping the input indexable type to the output indexable type by applying the function to the first index space, thereby lifting the function from a function that operates on an index space to a function that operates on an indexable type.
A computer system, comprising:
- one or more processors;
- and
- one or more computer readable storage medium storing computer-executable instructions that, when executed by the one or more processors, cause the computer system to perform a method for generating data parallel executable code from data parallel source code, the method comprising:
- identifying a co-map communication operator in data parallel source code written in a high level general purpose programming language with data parallel extensions that is configured for execution on one or more data parallel compute nodes, the co-map communication operator being configured to receive as inputs (i) an input indexable type in a first index space and (ii) a function that operates on the first index space, and to transform the input indexable type into an output indexable type in a second index space based on the function, wherein the input indexable type and the output indexable type are data types that implement one or more subscript operators along with a rank, wherein the co-map communication operator is configured to be fully composable with other communication operators by being configured to be specified with each of the following transformations:
- a first transformation that maps the second index space to first index space, a second transformation that transforms an offset into the input indexable type into an offset into the output indexable type, a third transformation that transforms an extent of the input indexable type into an extent of the output indexable type, and a fourth transformation that transforms the extent of the output indexable type into the extent of the input indexable type, and wherein the co-map communications operator comprises a ‘swap’ communications operator that includes an index transformation that swaps dimensions of the input indexable type to transform the input indexable type into the output indexable type;
- and
- applying the co-map communication operator to the input indexable type, including mapping the input indexable type to the output indexable type by applying the function to the first index space, thereby lifting the function from a function that operates on an index space to a function that operates on an indexable type.
Dependencies are inferred from the claim text.