Patent ID: 8826228

Claim:
A computer-implemented method for creating a program for a multi-processor system, wherein the multi-processor system comprises an array of processors and a plurality of memories coupled to the processors, wherein the plurality of memories are interspersed among the array of processors within an apparatus, wherein each of the processors is coupled to at least one other processor, wherein there are multiple communication mechanisms between the respective processors, the method comprising: storing source code in response to user input, wherein the source code specifies first functionality, wherein the source code is intended to execute on the multi-processor system, wherein the source code specifies a plurality of tasks and communication of data among the plurality of tasks, wherein the source code further does not specify which communication mechanism to use among the plurality of tasks; creating machine language instructions based on the source code, wherein the machine language instructions are designed to execute on the array of processors; determining an assignment of tasks to respective processors in the multi-processor system; selecting communication mechanisms between tasks assigned to the respective processors based on location of the tasks and required communication of data; storing the machine language instructions in various ones of the plurality of memories, wherein the multi-processor system is operable to execute the machine language instructions using the selected communication mechanisms to implement the first functionality; wherein the multi-processor system comprises a plurality of communication units coupled to the processors, wherein each of the communication units comprises a memory and routing logic; the method further comprising allocating local variables to memories in respective communication units proximate to the processors executing tasks that own the local variables; wherein said allocating local variables is performed based on data size and resource availability within the communication units.