Patent ID: 8713039
Filing Date: 2014-04-29
Classification: G06F

Abstract:
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 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.