BinaryRepeatParams

BinaryRepeatParams is a data structure that controls the operand address strides. It contains such parameters as those that specify the address stride of the operand for the same data block between adjacent iterations and address stride of the operand between different data blocks in a single iteration.

For details about the address stride of the operand between adjacent iterations, see repeatStride. For details about the address stride of the operand between different data blocks in a single iteration, see dataBlockStride.

The specific definition of the structure is as follows:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
const int32_t DEFAULT_BLK_NUM = 8;
const int32_t DEFAULT_BLK_STRIDE = 1;
const uint8_t DEFAULT_REPEAT_STRIDE = 8;

struct BinaryRepeatParams {
    __aicore__ BinaryRepeatParams()
    {
        blockNumber = DEFAULT_BLK_NUM;
        dstBlkStride = DEFAULT_BLK_STRIDE;
        src0BlkStride = DEFAULT_BLK_STRIDE;
        src1BlkStride = DEFAULT_BLK_STRIDE;
        dstRepStride = DEFAULT_REPEAT_STRIDE;
        src0RepStride = DEFAULT_REPEAT_STRIDE;
        src1RepStride = DEFAULT_REPEAT_STRIDE;
    }
    __aicore__ BinaryRepeatParams(const uint8_t dstBlkStrideIn, const uint8_t src0BlkStrideIn,
        const uint8_t src1BlkStrideIn, const uint8_t dstRepStrideIn, const uint8_t src0RepStrideIn,
        const uint8_t src1RepStrideIn)
    {
        dstBlkStride = dstBlkStrideIn;
        src0BlkStride = src0BlkStrideIn;
        src1BlkStride = src1BlkStrideIn;
        dstRepStride = dstRepStrideIn;
        src0RepStride = src0RepStrideIn;
        src1RepStride = src1RepStrideIn;
    }
    uint32_t blockNumber = 0;
    uint8_t dstBlkStride = 0;
    uint8_t src0BlkStride = 0;
    uint8_t src1BlkStride = 0;
    uint8_t dstRepStride = 0;
    uint8_t src0RepStride = 0;
    uint8_t src1RepStride = 0;
    bool repeatStrideMode = false;
    bool strideSizeMode = false;
};

blockNumber, repeatStrideMode, and strideSizeMode are reserved parameters. You can use the default values. You need to define the dataBlockStride parameters (including dstBlkStride, src0BlkStride, and src1BlkStride) and repeatStride parameters (including dstRepStride, src0RepStride, and src1RepStride).