A method for compressing neural network weight data on a multiple processor core system, wherein the multiple processor core system comprises a chip including a plurality of processor cores, each processor core comprising one or more processing elements, an internal cache, and an external memory, wherein the processor cores or their processing elements are operable in a streaming mode, and wherein the compression is performed automatically upon output from a data reordering module and/or a convolution module, the method comprising:
- receiving a set of neural network weight values arranged in a multidimensional W×H×C structure;
- dividing the neural network weight values into a plurality of fixed sized groups;
- generating, for each group, a bitmask indicating whether each weight value in the group is zero or non-zero;
- identifying sparsity patterns including randomly interspersed zeros and short bursts of zero values within the data;
- and
- storing, for each group, only the non-zero values and the associated bitmask as compressed weight data, wherein the compressed weight data is stored in a main memory external to the chip and accessible by the plurality of processor cores thereby reducing external bandwidth and overall power consumption by avoiding transmission and computation of zero values, whereby decompression allows the data stream to avoid multiplications by zero to improve utilization of computation resources.