A computer readable storage medium storing computer-executable instructions that, when executed by a computer system, cause the computer system to perform a method comprising: identifying an operator in data parallel source code configured for execution on a given number Q of weighted data parallel compute nodes, Q being equal or greater than two, the operator taking an instance of a first indexable type and a resource map as input, the instance of the first indexable type being a matrix of N elements each having a type T; implementing the operator by decomposing the instance of the first indexable type into a plurality of blocks of elements defined by the resource map, and causing the blocks of elements to be assigned to the Q weighted data parallel compute nodes, wherein the resource map specifies where the instance of the first indexable type is stored across at least one weighted data parallel compute node, further specifies the plurality of blocks of elements covering the matrix of N elements without overlap, and also specifies an assignment of the blocks of elements to the Q weighted data parallel compute nodes, the respective weights of the weighted data parallel compute nodes increasing with a processing capability of the respective weighted data parallel compute nodes, and the assignment being an assignment through which more blocks of elements are assigned to a weighted data parallel compute node of the Q weighted data parallel compute nodes having a higher weight than to another weighted data parallel compute node of the Q weighted data parallel compute nodes having a lower weight; and performing a data parallel algorithm using a first number of blocks of elements of the plurality on a first one of the Q weighted data parallel compute nodes and a second number of blocks of elements of the plurality on a second one of the Q weighted data parallel compute nodes. identifying an operator in data parallel source code configured for execution on a given number Q of weighted data parallel compute nodes, Q being equal or greater than two, the operator taking an instance of a first indexable type and a resource map as input, the instance of the first indexable type being a matrix of N elements each having a type T; implementing the operator by decomposing the instance of the first indexable type into a plurality of blocks of elements defined by the resource map, and causing the blocks of elements to be assigned to the Q weighted data parallel compute nodes, wherein the resource map specifies where the instance of the first indexable type is stored across at least one weighted data parallel compute node, further specifies the plurality of blocks of elements covering the matrix of N elements without overlap, and also specifies an assignment of the blocks of elements to the Q weighted data parallel compute nodes, the respective weights of the weighted data parallel compute nodes increasing with a processing capability of the respective weighted data parallel compute nodes, and the assignment being an assignment through which more blocks of elements are assigned to a weighted data parallel compute node of the Q weighted data parallel compute nodes having a higher weight than to another weighted data parallel compute node of the Q weighted data parallel compute nodes having a lower weight; and performing a data parallel algorithm using a first number of blocks of elements of the plurality on a first one of the Q weighted data parallel compute nodes and a second number of blocks of elements of the plurality on a second one of the Q weighted data parallel compute nodes.