IP Library Granted Patent US 9,424,076
Granted Patent B1
US 9,424,076 · App. 14/014,817 · Granted Aug 23, 2016

Dynamic distribution for distributed arrays and related rules

Inventors: Penelope Anderson (Newton, MA); Cleve Moler (Santa Fe, NM); Sheung Hun Cheng (Brookline, MA); Patrick D Quillen (Northborough, MA)
Assignee: The MathWorks, Inc.
G06F9/4806
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 9,424,076
App. No.
14/014,817
Granted
Aug 23, 2016
Kind
B1
Abstract

The present invention provides a method and system for the dynamic distribution of an array in a parallel computing environment. The present invention obtains a criterion for distributing an array and performs flexible portioning based on the obtained criterion. In some embodiment analysis may be performed based on the criterion. The flexible portioning is then performed based on the analysis.

Claims (100)

1. A non-transitory computer-readable medium to store instructions, the instructions comprising:

one or more instructions that, when executed by at least one processor, cause the at least one processor to:

receive a call to a function in a function library:

the function library including a plurality of functions,

the function including a characteristic, and

the function operating on a distributable array;

determine a distribution scheme for the distributable array,

the one or more instructions to determine the distribution scheme including:

one or more instructions to evaluate the distributable array, and

one or more instructions to evaluate the characteristic of the function; and

partition the distributable array into parts based on the determined distribution scheme.

2. The computer-readable medium of claim 1 , where the distributable array is dynamically partitioned into a plurality of parts.

3. The computer-readable medium of claim 2 , where the plurality of parts are provided to a plurality of processing elements for processing.

4. The computer-readable medium of claim 3 , where the plurality of parts are processed simultaneously.

5. The computer-readable medium of claim 3 , where the plurality of processing elements are arranged in a hierarchical relationship.

6. The computer-readable medium of claim 3 , where the plurality of processing elements reside on a processor.

7. The computer-readable medium of claim 3 , where the plurality of processing elements are distributed amongst two or more processors.

8. The computer-readable medium of claim 3 , where the plurality of processing elements are distributed amongst two or more computers.

9. The computer-readable medium of claim 2 , where at least two of the plurality of parts are unequal in size.

10. The computer-readable medium of claim 1 , further comprising:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

receive at least a portion of the distributable array from a local memory location.

11. The computer-readable medium of claim 1 , further comprising:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

receive the distributable array from a global memory location; and

store the distributable array in a local memory location.

12. The computer-readable medium of claim 1 , where the one or more instructions to determine the distribution scheme include:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

account for a location of the distributable array; and

use information associated with the location of the distributable array to determine the distribution scheme.

13. The computer-readable medium of claim 1 , where the one or more instructions to evaluate the distributable array include:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

account for a size of the distributable array; and

use information associated with the size of the distributable array to evaluate the distributable array.

14. The computer-readable medium of claim 1 , where the characteristic of the function is a category of the function.

15. The computer-readable medium of claim 1 , where the one or more instructions to evaluate the distributable array include:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

evaluate a shape of the distributable array; and

use information associated with the shape of the distributable array to evaluate the distributable array.

16. The computer-readable medium of claim 1 , where the distribution scheme is a default scheme.

17. The computer-readable medium of claim 1 , where the distribution scheme is an optimized distribution scheme.

18. The computer-readable medium of claim 1 , where the distribution scheme increases memory throughput.

19. The computer-readable medium of claim 1 , where the one or more instructions to determine the distribution scheme include:

one or more instructions that, when executed by the at least one processor, cause the at least one processor to:

receive a criterion from a user; and

determine the distribution scheme based on the received criterion.

20. A device comprising:

a memory to store instructions; and

a processor to execute the instructions to:

receive a call to a function in a function library:

the function library including a plurality of functions,

the function including a characteristic, and

the function operating on a distributable array;

determine a distribution scheme for the distributable array,

the processor, when determining the distribution scheme, being to:

evaluate the distributable array, and

evaluate the characteristic of the function; and

partition, based on the determined distribution scheme, the distributable array into parts.

21. A method comprising:

receiving an input portion,

the input portion being part of a distributable input array,

the input portion being received from a storage location, and

the receiving the input portion being performed by a computing device;

receiving a function,

the function being retrieved from a function library,

the function including a characteristic, and

the receiving the function being performed by the computing device;

evaluating the characteristic of the function,

the evaluating being performed by the computing device;

processing, based on the evaluated characteristic of the function, the input portion to produce an output portion,

the processing being performed by the computing device; and

sending the output portion to the storage location,

the output portion being part of a distributable output array, and

the sending being performed by the computing device.

22. The method of claim 21 , further comprising:

providing the input portion from a memory location; and

receiving the output portion at the memory location.

23. The method of claim 22 , where the input portion is in first memory location of a plurality of memory locations.

24. The method of claim 21 , where the output portion is further produced based on:

reallocating at least a portion of the input portion prior to the processing.

25. The method of claim 21 , where the input portion is provided from a local memory location.

26. The method of claim 25 , comprising:

receiving the input portion from a global memory location; and

storing the input portion in the local memory location.

27. The method of claim 21 , where

the input portion includes a plurality of input portions, and

the processing the input portion comprises:

simultaneously processing the plurality of input portions.

28. A non-transitory computer-readable medium to store instructions, the instructions comprising:

one or more instructions that, when executed by at least one processor, cause the at least one processor to:

receive an input portion,

the input portion being part of a distributable input array, and

the input portion being received from a storage location;

receive a function,

the function being retrieved from a function library, and

the function including a characteristic;

evaluate the characteristic of the function;

process, based on the evaluated characteristic of the function, the input portion to produce an output portion; and

send the output portion to the storage location,

the output portion being part of a distributable output array.

Continuity (4)
Continuation 13955152 · Jul 31, 2013
Continuation 13163169 · Jun 17, 2011
Continuation 12778746 · May 12, 2010
Continuation 11387565 · Mar 22, 2006