| CPC G06F 9/4843 (2013.01) [G06F 13/4027 (2013.01); G06F 15/7867 (2013.01)] | 20 Claims |

|
1. A method, comprising:
sending, by a dispatch interface, a first asynchronous message to a first flow controller of a reconfigurable compute fabric, the first asynchronous message instructing the first flow controller to begin execution of a first-level loop at a first synchronous flow of the reconfigurable compute fabric and comprising an indication of a number of iterations of the first-level loop, the first synchronous flow comprising the first flow controller and a first number of compute elements of the reconfigurable compute fabric;
responsive to the first asynchronous message, executing a synchronous flow thread at the first synchronous flow, the executing of the synchronous flow thread at the first synchronous flow comprising:
sending, by the first synchronous flow, a second asynchronous message to a second flow controller of the reconfigurable compute fabric, the second asynchronous message instructing the second flow controller to execute a second-level loop at a second synchronous flow of the reconfigurable compute fabric and comprising an indication of a number of iterations of the second-level loop, the second synchronous flow comprising the second flow controller and a second number of compute elements of the reconfigurable compute fabric; and
sending, by the first synchronous flow, a third asynchronous message to a third flow controller of the reconfigurable compute fabric, the third asynchronous message instructing the third flow controller to execute a synchronous flow thread at a third synchronous flow of the reconfigurable compute fabric after receiving an indication that the second-level loop has completed, the third asynchronous message comprising a thread identifier of the synchronous flow thread at the first synchronous flow;
receiving, by the third flow controller, a fourth asynchronous message indicating that the second-level loop has completed;
responsive to the fourth asynchronous message, executing the synchronous flow thread at the third synchronous flow using the thread identifier of the synchronous flow thread at the first synchronous flow;
determining, by the first flow controller, that the number of iterations of the first-level loop have executed; and
in response to the determining, initiating, by the first flow controller, a memory write writing to a memory at least one of a result of the first-level loop or a result of the second-level loop.
|