A method of processing data, comprising: setting a computing engine in a first configuration to implement a first layer of a neural network, wherein setting the computing engine in the first configuration includes sending a first set of weights associated with the first layer of the neural network to a plurality of processing elements (PEs) of the computing engine, the plurality of processing elements arranged in multiple rows and columns, wherein processing elements within one row are connected with each other via internal row buses (XBUS INTERNAL)and processing elements within one column are connected with each other via internal column buses (YBUS INTERNAL); processing first data related to a first context using the computing engine in the first configuration to generate first layer output data of the first context; setting the computing engine in a second configuration to implement a second layer of the neural network, wherein setting the computing engine in the second configuration includes sending a second set of weights associated with the second layer of the neural network to the plurality of processing elements (PEs) of the computing engine; processing the first layer output data of the first context using the computing engine in the second configuration to generate second layer output data of the first context; switching the computing engine from the second configuration back to the first configuration; processing second data related to a second context using the computing engine in the first configuration to generate first layer output data of the second context; setting the computing engine back to the second configuration to implement the second layer of the neural network; processing the first layer output data of the second context using the computing engine in the second configuration to generate second layer output data of the second context; setting the computing engine in a third configuration to implement a third layer of the neural network; and processing in parallel the second layer output data of the first context and the second layer output data of the second context using the computing engine in the third configuration to generate third layer output data of the first context and third layer output data of the second context. setting a computing engine in a first configuration to implement a first layer of a neural network, wherein setting the computing engine in the first configuration includes sending a first set of weights associated with the first layer of the neural network to a plurality of processing elements (PEs) of the computing engine, the plurality of processing elements arranged in multiple rows and columns, wherein processing elements within one row are connected with each other via internal row buses (XBUS INTERNAL)and processing elements within one column are connected with each other via internal column buses (YBUS INTERNAL); processing first data related to a first context using the computing engine in the first configuration to generate first layer output data of the first context; setting the computing engine in a second configuration to implement a second layer of the neural network, wherein setting the computing engine in the second configuration includes sending a second set of weights associated with the second layer of the neural network to the plurality of processing elements (PEs) of the computing engine; processing the first layer output data of the first context using the computing engine in the second configuration to generate second layer output data of the first context; switching the computing engine from the second configuration back to the first configuration; processing second data related to a second context using the computing engine in the first configuration to generate first layer output data of the second context; setting the computing engine back to the second configuration to implement the second layer of the neural network; processing the first layer output data of the second context using the computing engine in the second configuration to generate second layer output data of the second context; setting the computing engine in a third configuration to implement a third layer of the neural network; and processing in parallel the second layer output data of the first context and the second layer output data of the second context using the computing engine in the third configuration to generate third layer output data of the first context and third layer output data of the second context.