Ccann-robottile aicpu
7f4cd8c2创建于 24 天前历史提交

Tile

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品
Atlas 训练系列产品

功能说明

接口功能:对输入tensor沿着repeats中对每个维度指定的复制次数进行复制。示例: 假设输入Tensor为[[a,b],[c,d],[e,f]],即shape为[3,2],repeats为(2,4),则生成的Tensor的shape为[6,8],值如下所示:

>>> x = torch.tensor([[a,b],[c,d],[e,f]])
>>> x.repeat(2,4)
tensor([[a,b,a,b,a,b,a,b],
        [c,d,c,d,c,d,c,d],
        [e,f,e,f,e,f,e,f],
        [a,b,a,b,a,b,a,b],
        [c,d,c,d,c,d,c,d],
        [e,f,e,f,e,f,e,f],
        ])

当repeats为(2,4,2)时,即repeats的元素个数大于Tensor中的维度,则输出Tensor等效为如下操作:先将输入Tensor的shape扩张到和repeats个数相同的维度:[1,3,2],而后按照对应维度和repeats的值进行扩张,即输出Tensor的shape为[2,12,4],结果如下:

>>> x.repeat(2,4,2)
tensor([[[a,b,a,b],
         [c,d,c,d],
         [e,f,e,f],
         [a,b,a,b],
         [c,d,c,d],
         [e,f,e,f],
         [a,b,a,b],
         [c,d,c,d],
         [e,f,e,f],
         [a,b,a,b],
         [c,d,c,d],
         [e,f,e,f]],

        [[a,b,a,b],
         [c,d,c,d],
         [e,f,e,f],
         [a,b,a,b],
         [c,d,c,d],
         [e,f,e,f],
         [a,b,a,b],
         [c,d,c,d],
         [e,f,e,f],
         [a,b,a,b],
         [c,d,c,d],
         [e,f,e,f]]])

计算时需要满足以下条件: repeats中参数个数不能少于输入Tensor的维度。 repeats中的值必须大于等于0。

参数说明

参数名 输入/输出 描述 使用说明 数据类型 数据格式 维度(shape) 非连续张量Tensor
self 输入 - - FLOAT、DOUBLE、FLOAT16、COMPLEX64、COMPLEX128、UINT8、INT8、INT16、INT32、INT64、UINT16、UINT32、UINT64、BOOL、BFLOAT16、HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FN ND ≤8
repeats 输入 - 表示沿每个维度重复输入tensor的次数,参数个数不大于8, 当前不支持对超过4个维度同时做repeat的场景,详细约束请见约束说明。 INT64 - - -
out 输出 - - 与self一致 ND ≤8

约束说明

  • 确定性计算:
    • 默认确定性实现。

调用示例

调用方式 样例代码 说明
aclnn接口 test_aclnn_repeat 通过aclnnRepeat接口方式调用Tile算子。
图模式调用 test_geir_tile 通过算子IR构图方式调用Tile算子。