A method of operating a data processing system, the data processing system comprising main storage operable to store data for neural network processing, and a processor comprising one or more functional units operable to execute processing for neural network processing, the one or more functional units having associated local storage operable to store data for neural network processing when the one or more functional units are performing processing for neural network processing, the method comprising:
- performing by the one or more functional units processing for neural network processing, comprising a sequence of operations to process an initial input data array for the sequence of operations to generate a final output data array of the sequence of operations for respective blocks of the initial input data array on a block-by-block basis, such that the initial input data array is processed as plural blocks which are each processed independently according to the sequence of operations to generate a corresponding block of the final output data array;
- wherein at least one of the operations in the sequence of operations uses output data from a previous operation in the sequence of operations as input data;
- and
- wherein performing by the one or more functional units processing for the neural network processing, comprising the sequence of operations, for a block of the initial input data array comprises:
- performing the operations of the sequence of operations one after another for the block of the initial input data array to generate a block of the final output data array;
- and
- when performing an operation in the sequence of operations whose output data is to be used as input data for another operation in the sequence of operations, storing the output data which is to be used as input data for another operation of the sequence of operations in the local storage of the one or more functional units that are performing the processing for the neural network processing, and providing the output data as input data for the another operation in the sequence of operations from the local storage;
- and
- for a final operation in the sequence of operations, storing output data generated by the final operation corresponding to a block of the final output data array in the main storage.