Patent ID: 7987227

Claim:
A computer-implemented method for dynamically distributing distributed arrays in a parallel computing environment, the method comprising: receiving a function from a function library, where: the function library includes a plurality of functions, the function library is part of a programming environment operating on a computing device, and the function is configured to perform an operation on one or more distributed arrays; obtaining a criterion for the distribution of a distributed array; performing flexible partitioning using the computing device, where the flexible partitioning includes: dynamically determining how to partition the distributed array into the two or more parts processed in parallel in the parallel computing environment, where the dynamically determining includes: evaluating the function and the distributed array to which the function will be applied, identifying a partitioning scheme for the distributed array, where the partitioning scheme is identified based on characteristics of the function, and satisfying the obtained criterion with the identified partitioning scheme, and dynamically partitioning the distributed array into the two or more parts based on the determining; processing the two or more parts in parallel using the parallel computing environment; and producing one or more results based on the processing.