| CPC G06F 9/5077 (2013.01) [G06F 8/443 (2013.01); G06F 9/3877 (2013.01); G06F 9/5038 (2013.01); G06F 9/5066 (2013.01); G06F 13/28 (2013.01)] | 20 Claims | 

| 
               1. A method, comprising: 
            by a multi-processor array comprising a plurality of processors interspersed among a plurality of memories; 
              performing a front-end compilation using application source code to generate a plurality of intermediate representations and connectivity information, wherein a particular intermediate representation of the plurality of intermediate representations corresponds to a particular task of a plurality of tasks, wherein the connectivity information includes a plurality of connections, and wherein a particular connection specifies a communication between a first task of the plurality of tasks and a second task of the plurality of tasks; 
                  mapping logical objects included in the application source code to physical resources included in the multi-processor array using the plurality of intermediate representations and the connectivity information to generate a resource map, wherein mapping the logical objects to the physical resources is constrained by one or more of a plurality of constraints; 
                  selecting a respective implementation for each connection in the plurality of connections; 
                  performing a first optimization operation using the plurality of intermediate representations to generate a plurality of optimized intermediate representations, wherein the first optimization operation modifies the mapping of the logical objects to the physical resources to assign multiple tasks to a single processor of the plurality of processors while avoiding one or both of saving and restoring state information; 
                  generating executable code using the plurality of optimized intermediate representations; and 
                  loading the executable code onto the multi-processor array. 
                 |