A method of configuring a System-on-Chip (SoC) to execute a Convolutional Neural Network (CNN) by (i) receiving scheduling schemes each specifying a sequence of operations executable by Processing Units (PUs) of the SoC; (ii) selecting, a scheduling scheme for a current layer of the CNN; (iii) determining a current state of memory for a storage location in the SoC allocated for storing feature map data from the CNN; (iv) selecting, from the plurality of scheduling schemes and dependent upon the scheduling scheme for the current layer of the CNN, a set of candidate scheduling schemes for a next layer of the CNN; and (v) selecting, from the set of candidate scheduling schemes dependent upon the determined current state of memory, a scheduling scheme for the next layer of the CNN.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A method of configuring a multi-accelerator System-on-Chip (SoC) to execute a Convolutional Neural Network (CNN), the method comprising the steps of: (i) receiving a plurality of scheduling schemes each specifying a sequence of operations executable by Processing Units (PUs) of the SoC; (ii) selecting, from the plurality of scheduling schemes, a scheduling scheme for a current layer of the CNN; (iii) determining, for the current layer of the CNN, a current state of memory for a storage location in the SoC allocated for storing feature map data from the CNN; (iv) selecting, from the plurality of scheduling schemes and dependent upon the scheduling scheme for the current layer of the CNN, a set of candidate scheduling schemes for a next layer of the CNN; and (v) selecting, from the set of candidate scheduling schemes dependent upon the determined current state of memory, a scheduling scheme for the next layer of the CNN; wherein the selected scheduling scheme for the current layer of the CNN and the selected scheduling scheme for the next layer of the CNN enable configuration of the SoC for execution of the CNN. 2. A method according to claim 1 comprising the further steps of: substituting the scheduling scheme for the next layer of the CNN for the scheduling scheme for the current layer of the CNN; and repeating the steps (iii)-(v) in relation to a subsequent layer of the CNN. 3. A method according to claim 2 comprising the further steps of: repeating the substituting and the repeating steps until scheduling schemes have been selected for all the layers of the CNN thereby enabling configuration of the SoC for execution of the CNN, said selected scheduling schemes forming a configuration set of scheduling schemes each scheduling scheme in the configuration set being associated with a corresponding layer of the CNN; programming a controller of the SoC with the configuration set of scheduling schemes; assigning, by the controller, operations from the configuration set of scheduling schemes to PUs of the SoC; and executing the operations by the PUs to thereby execute the CNN. 4. A method according to claim 1, wherein the step of determining for the current layer of the CNN a current state of memory for a storage location in the SoC allocated for storing feature map data from the CNN comprises the steps of: determining an amount of local storage allocated to the current layer of the CNN; determining the amount of local storage required for executing the current layer of the CNN as specified by the selected scheduling scheme; determining the available local memory space for executing the current layer of the CNN dependent upon the allocated local storage and the required local storage; and determining the current state of memory dependent upon the available local memory space. 5. A method according to claim 4, wherein the current state of memory is further dependent upon available space in a memory external to the SoC. 6. A method according to claim 1, wherein the step of selecting from the plurality of scheduling schemes a scheduling scheme for a current layer of the CNN comprises the steps of: pruning the plurality of scheduling schemes by removing scheduling schemes from the set which require more storage than the amount of local storage allocated in the SoC to execute the current layer of the CNN, to thereby form a 1st set of pruned schemes. 7. A method according to claim 6 comprising the further steps of: pruning the 1st set of pruned schemes by removing pairs of scheduling schemes from the set which have incompatible memory access operations, to thereby form a 2nd set of pruned schemes. 8. A method according to claim 7 comprising the further steps of: determining scheduling scheme scores for remaining candidate scheduling schemes; and selecting a scheduling scheme with the best scheduling scheme score as the scheduling scheme for the current layer of the CNN. 9. A method according to claim 8, comprising the further steps of: determining the scheduling scheme scores dependent upon the available local memory space for executing the current layer of the CNN and an amount of input data required to start the execution of the scheduling scheme for the next layer of the CNN. 10. A method according to claim 9, comprising the further steps of: determining the scheduling scheme scores dependent upon an amount of data reused in local memory. 11. A method according to claim 10, comprising the further steps of: determining the scheduling scheme scores dependent upon estimated free space in the local memory. 12. A method according to claim 4, wherein the current state of memory is further dependent upon the number of PUs available in the SoC to execute the current layer of the CNN. 13. A method according to claim 1, wherein the step of selecting a set of candidate scheduling schemes for a next layer of the CNN is further dependent upon the amount of local storage allocated to the current layer of the CNN. 14. A method according to claim 1, wherein the step of selecting a set of candidate scheduling schemes for a next layer of the CNN is further dependent upon a predetermined permissible maximum number of accesses to external memory. 15. A method according to claim 1, wherein the step of selecting a set of candidate scheduling schemes for a next layer of the CNN is further dependent upon a predetermined permissible maximum execution time for executing the CNN algorithm. 16. A method of configuring a multi-accelerator System-on-Chip (SoC) to execute a Convolutional Neural Network (CNN), the method comprising: receiving a plurality of scheduling schemes, each of the scheduling schemes defining a sequence of operations to execute a layer of a CNN; determining a current state of memory of the SoC, the current state being a storage location of feature map data for a current layer of the CNN; determining candidate scheduling schemes for a next layer of the CNN, the candidate scheduling schemes being a subset of the plurality of scheduling schemes for use with the next layer of the CNN; selecting a scheduling scheme from the candidate scheduling schemes according to the determined current state of the memory; and configuring the SoC to execute the next layer of the CNN according to the selected scheduling schemes. 17. An apparatus for configuring a multi-accelerator System-on-Chip (SoC) to execute a Convolutional Neural Network (CNN) algorithm, the apparatus comprising: a processor; and a memory storing a program for directing the processor to perform a method comprising the steps of: (i) receiving a plurality of scheduling schemes each specifying a sequence of operations executable by Processing Units (PUs) of the SoC; (ii) selecting, from the plurality of scheduling schemes, a scheduling scheme for a current layer of the CNN; (iii) determining, for the current layer of the CNN, a current state of memory for a storage location in the SoC allocated for storing feature map data from the CNN; (iv) selecting, from the plurality of scheduling schemes and dependent upon the scheduling scheme for the current layer of the CNN, a set of candidate scheduling schemes for a next layer of the CNN; and (v) selecting, from the set of candidate scheduling schemes dependent upon the determined current state of memory, a scheduling scheme for the next layer of the CNN; wherein the selected scheduling scheme for the current layer of the CNN and the selected scheduling scheme for the next layer of the CNN enable configuration of the SoC for execution of the CNN. 18. A computer readable non-transitory storage medium storing a program for directing a processor to perform a method for configuring a multi-accelerator System-on-Chip (SoC) to execute a Convolutional Neural Network (CNN) algorithm, the program comprising: (i) computer executable code for receiving a plurality of scheduling schemes each specifying a sequence of operations executable by Processing Units (PUs) of the SoC; (ii) computer executable code for selecting, from the plurality of scheduling schemes, a scheduling scheme for a current layer of the CNN; (iii) computer executable code for determining, for the current layer of the CNN, a current state of memory for a storage location in the SoC allocated for storing feature map data from the CNN; (iv) computer executable code for selecting, from the plurality of scheduling schemes and dependent upon the scheduling scheme for the current layer of the CNN, a set of candidate scheduling schemes for a next layer of the CNN; and (v) computer executable code for selecting, from the set of candidate scheduling schemes dependent upon the determined current state of memory, a scheduling scheme for the next layer of the CNN; wherein the selected scheduling scheme for the current layer of the CNN and the selected scheduling scheme for the next layer of the CNN enable configuration of the SoC for execution of the CNN. 19. A method of processing a Convolutional Neural Network (CNN) using a multi-accelerator System-on-Chip (SoC), the method comprising the steps of: (i) receiving a plurality of scheduling schemes each specifying a sequence of operations executable by Processing Units (PUs) of the SoC; (ii) selecting, from the plurality of scheduling schemes, a scheduling scheme for a current layer of the CNN; (iii) determining, for the current layer of the CNN, a current state of memory for a storage location allocated to the current layer of the CNN for storing feature map data from the CNN; (iv) selecting, from the plurality of scheduling schemes and dependent upon the scheduling scheme for the current layer of the CNN, a set of candidate scheduling schemes for a next layer of the CNN; (v) selecting, from the candidate scheduling schemes dependent upon the determined current state of memory for the current layer, a scheduling scheme for the next layer of the CNN; (vi) substituting the scheduling scheme for the next layer of the CNN for the scheduling scheme for the current layer of the CNN; (vii) repeating the steps (iii)-(vi) until scheduling schemes have been selected for all the layers of the CNN thereby enabling execution of the CNN, said selected scheduling schemes forming a configuration set of scheduling schemes each scheduling scheme in the configuration set being associated with a corresponding layer of the CNN; (vii) programming a controller on the SoC with the configuration set of scheduling schemes; (viii) assigning, by the controller, operations from the configuration set of scheduling schemes to PUs of the SoC; and (ix) executing the operations by the PUs to thereby execute the CNN algorithm.