CPC G06F 16/252 (2019.01) | 22 Claims |
1. A system comprising at least one processor; and
at least one memory containing instructions that, when executed by the at least one processor, cause the system to perform system operations comprising:
obtaining input data stored in a first layout;
receiving at least two operations;
determining a second layout for performing the at least two operations, the second layout:
independent of the first layout; and
determined based on at least one of the at least two operations and at least one of:
a characteristic of the input data;
a characteristic of the system; or
historical performance data;
rearranging or permuting the input data into the second layout;
determining a mapping between the second layout and the first layout;
performing the at least two operations using the input data in the second layout;
during or after performance of the at least two operations, in response to a request by a third operation to access the input data, providing access to the input data in the first layout using the mapping; and
wherein the at least one of the at least two operations is a convolution operation, the input data is a multi-dimensional array having a channel dimension, a batch dimension, and two or more spatial dimensions; and
determining the second layout comprises selecting as a first dimension of the multi-dimensional array one of:
the channel dimension;
the batch dimension; or
one of the two or more spatial dimensions.
|