Commit 4404722b authored by Shawn Yang's avatar Shawn Yang
Browse files

adding support for addt. params in/out memStart memCount for same major

parent 2d7e9fbd
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -189,11 +189,12 @@ void Resize(std::vector<T> &vec, const size_t dataSize, const bool debugMode,

template <class T>
int NdCopy(const char *in, const Dims &inStart, const Dims &inCount,
           const bool inIsRowMajor, const bool inIsLittleEndian, char *out,
           const Dims &outStart, const Dims &outCount, const bool outIsRowMajor,
           const bool outIsLittleEndian, const Dims &inMemStart = Dims(),
           const Dims &inMemCount =Dims(),const Dims &outMemStart=Dims(),
           const Dims &outMemCount=Dims(), const bool safeMode = false);
           const bool inIsRowMajor, const bool inIsLittleEndian,
           char *out, const Dims &outStart, const Dims &outCount,
           const bool outIsRowMajor, const bool outIsLittleEndian,
           const Dims &inMemStart = Dims(), const Dims &inMemCount =Dims(),
           const Dims &outMemStart=Dims(), const Dims &outMemCount=Dims(),
           const bool safeMode = false);

template <class T>
size_t PayloadSize(const T *data, const Dims &count) noexcept;
+9 −9
Original line number Diff line number Diff line
@@ -640,8 +640,8 @@ static void NdCopyIterDFDynamicRevEndian(const char *inBase, char *outBase,

template <class T>
int NdCopy(const char *in, const Dims &inStart, const Dims &inCount,
           const bool inIsRowMajor, const bool inIsLittleEndian, char *out,
           const Dims &outStart, const Dims &outCount,
           const bool inIsRowMajor, const bool inIsLittleEndian,
           char *out, const Dims &outStart, const Dims &outCount,
           const bool outIsRowMajor, const bool outIsLittleEndian,
           const Dims &inMemStart, const Dims &inMemCount,
           const Dims &outMemStart,const Dims &outMemCount,
@@ -786,13 +786,13 @@ int NdCopy(const char *in, const Dims &inStart, const Dims &inCount,
        GetOvlpCount(ovlpCount, ovlpStart, ovlpEnd);
        if (!HasOvlp(ovlpStart, ovlpEnd))
            return 1; // no overlap found
        GetIoStrides(inStride, inMemCount, sizeof(T));
        GetIoStrides(outStride, outMemCount, sizeof(T));
        GetIoOvlpGapSize(inOvlpGapSize, inStride, inMemCount, ovlpCount);
        GetIoOvlpGapSize(outOvlpGapSize, outStride, outMemCount, ovlpCount);
        GetInOvlpBase(inOvlpBase, in, inMemStart, inStride, ovlpStart);
        GetOutOvlpBase(outOvlpBase, out, outMemStart, outStride, ovlpStart);
        minContDim = GetMinContDim(inMemCount, outMemCount, ovlpCount);
        GetIoStrides(inStride, inMemCountNC, sizeof(T));
        GetIoStrides(outStride, outMemCountNC, sizeof(T));
        GetIoOvlpGapSize(inOvlpGapSize, inStride, inMemCountNC, ovlpCount);
        GetIoOvlpGapSize(outOvlpGapSize, outStride, outMemCountNC, ovlpCount);
        GetInOvlpBase(inOvlpBase, in, inMemStartNC, inStride, ovlpStart);
        GetOutOvlpBase(outOvlpBase, out, outMemStartNC, outStride, ovlpStart);
        minContDim = GetMinContDim(inMemCountNC, outMemCountNC, ovlpCount);
        blockSize = GetBlockSize(ovlpCount, minContDim, sizeof(T));
        // same endianess mode: most optimized, contiguous data copying
        // algorithm used.