A method, comprising: performing a matrix operation on one or more matrix operands, wherein performing the matrix operation comprises: receiving matrix data from a multi-dimensional memory, wherein the matrix data is associated with the one or more matrix operands; extracting a subset of the matrix data from the matrix data ; slicing the extracted subset of the matrix data to form the one or more matrix operands associated with the matrix operation, wherein the slicing is programmable and comprises reordering dimension of the subset of the matrix data; identifying a matrix routine associated with the matrix operation; executing the matrix routine on a matrix processor using the one or more matrix operands; and obtaining a result of the matrix operation based on the matrix routine executed by the matrix processor; wherein the matrix operation is distributed across multiple processing resources arranged in a dual-cyclical configuration with bi-directional communication between neighboring processing resources , wherein each processing resource performs matrix computations while simultaneously obtaining matrix operands and data from both of its neighboring processing resources . performing a matrix operation on one or more matrix operands, wherein performing the matrix operation comprises: receiving matrix data from a multi-dimensional memory, wherein the matrix data is associated with the one or more matrix operands; extracting a subset of the matrix data from the matrix data ; slicing the extracted subset of the matrix data to form the one or more matrix operands associated with the matrix operation, wherein the slicing is programmable and comprises reordering dimension of the subset of the matrix data; identifying a matrix routine associated with the matrix operation; executing the matrix routine on a matrix processor using the one or more matrix operands; and obtaining a result of the matrix operation based on the matrix routine executed by the matrix processor; wherein the matrix operation is distributed across multiple processing resources arranged in a dual-cyclical configuration with bi-directional communication between neighboring processing resources , wherein each processing resource performs matrix computations while simultaneously obtaining matrix operands and data from both of its neighboring processing resources . receiving matrix data from a multi-dimensional memory, wherein the matrix data is associated with the one or more matrix operands; extracting a subset of the matrix data from the matrix data ; slicing the extracted subset of the matrix data to form the one or more matrix operands associated with the matrix operation, wherein the slicing is programmable and comprises reordering dimension of the subset of the matrix data; identifying a matrix routine associated with the matrix operation; executing the matrix routine on a matrix processor using the one or more matrix operands; and obtaining a result of the matrix operation based on the matrix routine executed by the matrix processor; wherein the matrix operation is distributed across multiple processing resources arranged in a dual-cyclical configuration with bi-directional communication between neighboring processing resources , wherein each processing resource performs matrix computations while simultaneously obtaining matrix operands and data from both of its neighboring processing resources . <EOS>