package org.nd4j.linalg.cache;
import org.apache.commons.math3.util.Pair;
import org.nd4j.linalg.api.buffer.DataBuffer;
import org.nd4j.linalg.api.ndarray.INDArray;
/**
* This interface describes TAD caching.
*
* While working with tensors, all operations are happening on some demensions,
* and since training tasks are repetitive, we can pre-calculate TAD shapes and offsets once,
* and reuse them later during whole training process.
*
*
*
* @author raver119@gmail.com
*/
public interface TADManager {
/**
* This method returns TAD shapeInfo and all offsets
* for specified tensor and dimensions.
*
* @param array Tensor for TAD precalculation
* @param dimension
* @return
*/
Pair<DataBuffer, DataBuffer> getTADOnlyShapeInfo(INDArray array, int... dimension);
/**
* This method removes all cached shape buffers
*/
void purgeBuffers();
}