CANN/pypto的expand_clone函数
# pypto.expand_clone【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明将输入Tensor在等于1的轴上广播以匹配Shape返回真实占内存的新Tensor。函数原型expand_clone( input: Tensor, shape: List[int], *, valid_shape: Optional[List[Union[int, SymbolicScalar]]] None ) - Tensor参数说明参数名输入/输出说明input输入源操作数。支持的类型为Tensor。Tensor支持的数据类型为DT_BF16DT_FP32DT_FP16DT_INT8DT_INT16DT_INT32DT_UINT8DT_UINT16DT_UINT32DT_BOOL。不支持空TensorShape仅支持1-4维被广播的轴的Shape大小要为1Shape Size不大于2147483647即INT32_MAX。shape输入源操作数目标Shape。支持的数据类型为List[int]。Shape Size不大于INT32_MAXShape的维度需要与输入的一致除被广播的轴外其他轴大小须与input的Shape对应相等。valid_shape输入关键字参数。源操作数用于定义输出Tensor的动态Shape关键字参数用于动态图静态图可以省略。支持的类型为 List[SymbolicScalar], List[int]。返回值说明返回输出Tensor其数据类型和input相同形状为shape。约束说明支持多维广播输入Tensor被广播的轴的Shape大小要为1。input的viewshape与 input 维度相同viewshape[dim]1input[dim]1, 其中dim为被拓展轴其余维度不做限制。举例如下[a,1] 拓展到[a,5]其中dim1表示在dim 1 上进行拓展。len(viewshape)2 并且 viewshape[dim]1关于 valid_shape 的说明在动态图场景中假设Tensor input [a,1] 扩展到 [a,5]并设置 ViewShape 为 [a,2]框架会通过 pypto.loop 循环生成 [a,2] 分块并按偏移量拼接。此时若未传入 valid_shape代码将默认生成全 [a,2] 的Tensor如 pypto.expand_clone(input, [a,2])。然而当总尺寸 [a,5] 无法被分块尺寸 [a,2] 整除时尾块的有效形状如 [a,1]无法由框架自动推导。例如最后一列可能仅包含 1 个元素而非完整的 [a,2] 分块。此时必须通过 valid_shape 明确指定尾块的实际有效Shape如下pypto.expand_clone(input, [a,2], valid_shape [a, pypto.min(2, 5 - 2 * b_idx),)其中b_idx 表示循环索引。tileshape的维度与result 维度相同用于切分 result。tileshape 的大小形状无额外约束只需保证不超过ub size。调用示例TileShape设置示例调用该operation接口前应通过set_vec_tile_shapes设置TileShape。TileShape维度应和输出一致。如输入input shape为[m, 1]输出为[m, n], TileShape设置为[m1, n1], 则m1, n1分别用于切分m, n轴。pypto.set_vec_tile_shapes(4, 16)接口调用示例# static graph a pypto.tensor([1,8], pypto.DT_INT32) out1 pypto.expand_clone(a, [4,8]) # dynamic graph out2 pypto.expand_clone(a, [4,8], valid_shape [pypto.symbolic_scalar(4), pypto.symbolic_scalar(8)])结果示例如下输入数据a: [[1, 2, 3, 4, 5, 6, 7, 8]] 输出数据out1: [[1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8]] 输出数据out2: [[1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8]]【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考