335 Star 1.5K Fork 861

MindSpore / docs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
operator_list_parallel.md 54.53 KB
一键复制 编辑 原始数据 按行查看 历史
YijieChen 提交于 2024-04-29 09:40 . Add limitation of softmax

算子级并行使用约束

查看源文件

操作名 约束 Layout配置约束
mindspore.ops.Abs 不支持配置Layout
mindspore.ops.ACos 不支持配置Layout
mindspore.ops.Acosh 不支持配置Layout
mindspore.ops.Add 支持配置Layout,输入的Layout 需要相同或能广播,不支持配置输出的Layout
mindspore.ops.AddN 不支持配置Layout
mindspore.ops.ApproximateEqual 不支持配置Layout
mindspore.ops.ArgMaxWithValue 输入在轴(axis)的维度进行切分时,分布式结果可能会和单机不一致 不支持配置Layout
mindspore.ops.ArgMinWithValue 输入在轴(axis)的维度进行切分时,分布式结果可能会和单机不一致 不支持配置Layout
mindspore.ops.Asin 不支持配置Layout
mindspore.ops.Asinh 不支持配置Layout
mindspore.ops.Assign 不支持配置Layout
mindspore.ops.AssignAdd 不支持配置Layout
mindspore.ops.AssignSub 不支持配置Layout
mindspore.ops.Atan 不支持配置Layout
mindspore.ops.Atan2 不支持配置Layout
mindspore.ops.Atanh 不支持配置Layout
mindspore.ops.AvgPool 1. 数据格式只支持‘NCHW’;
2. 输出的H/W维的shape必须能被输入的H/W维的切分策略整除;
3. 如果切分H/W:
1)当kernel_size <= stride时,输入切片大小需能被stride整除;
2)不支持kernel_size > stride;
4. 在auto_parallel模式下,不支持双递归算法。
不支持配置Layout
mindspore.ops.AvgPool3D 1. 数据格式只支持‘NCDHW’;
2. 如果涉及相邻节点数据交换,只支持Ascend;
3. W维不支持切分;
4. 输出的D/H维的shape必须能被输入的D/H维的切分策略整除;
5. valid模式下:如果切分D/H:
1)当kernel_size <= stride时,输入切片大小需能被stride整除;
2)不支持kernel_size > stride;
6. same/pad模式下:如果切分D/H:
1)kernel_size >= stride时,(包含pad的输入总长度 - kernel_size)需能被stride整除;kernel_size < stride时,pad需等于0且分片能被stride整除;
2)(输出总长度*stride - 输入总长度)需能被切分策略整除;
3)相邻卡间发送接收的数据长度需大于等于0且小于等于切片大小;
7. 在auto_parallel模式下,不支持双递归算法。
不支持配置Layout
mindspore.ops.BatchMatMul 不支持配置Layout
mindspore.ops.BatchNorm 不支持GPU 不支持配置Layout
mindspore.ops.BesselI0e 不支持配置Layout
mindspore.ops.BesselI1e 不支持配置Layout
mindspore.ops.BiasAdd 支持配置Layout,输入参数bias的Layout需要和input_x的最后一维度相同,不支持配置输出的Layout
mindspore.ops.BitwiseAnd 不支持配置Layout
mindspore.ops.BitwiseOr 不支持配置Layout
mindspore.ops.BitwiseXor 不支持配置Layout
mindspore.ops.BoundingBoxEncode 1. 支持对输入(anchor_box)和输入(groundtruth_box)的第一维进行切分;
2. 输入(anchor_box)和输入(groundtruth_box)的切分策略必须一致
不支持配置Layout
mindspore.ops.BroadcastTo 不支持配置Layout
mindspore.ops.Cast Auto Parallel和Semi Auto Parallel模式下,配置策略不生效 不支持配置Layout
mindspore.ops.Cdist 1. 当两输入都含有Batch维时,这一维的切分策略必须相等;
2.M维度不支持切分
不支持配置Layout
mindspore.ops.Ceil 不支持配置Layout
mindspore.ops.Concat 输入(input_x)在轴(axis)所对应的维度不能切分,切分后,在数学逻辑上和单机不等价 不支持配置Layout
mindspore.ops.Conv2D 1. 数据格式只支持‘NCHW’;
2. 如果涉及相邻节点数据交换,只支持Ascend;
3. 当group的值不为1时,不支持切分C-in/C-out;
4. weight的后两维不支持切分;
5. 输出的H/W维的shape必须能被输入的H/W维的切分策略整除;
6. valid模式下:如果切分H/W:
1)当kernel_size <= stride时其中(kernel_size=dilation (kernel_size - 1) + 1,下同),输入切片大小需能被stride整除;
2)不支持kernel_size > stride;
7. same/pad模式下:如果切分H/W:
1)kernel_size >= stride时,(包含pad的输入总长度 - kernel_size)需能被stride整除;kernel_size < stride时,pad需等于0且分片能被stride整除;
2)( 输出总长度
stride - 输入总长度)需能被切分策略整除;
3)相邻卡间发送接收的数据长度需大于等于0且小于等于切片大小;
不支持配置Layout
mindspore.ops.Conv3D 1. 数据格式只支持‘NCDHW’;
2. 如果涉及相邻节点数据交换,只支持Ascend;
3. 当group的值不为1时,不支持切分C-in/C-out;
4. W维不支持切分,weight的后三维不支持切分;
5. 输出的D/H维的shape必须能被输入的D/H维的切分策略整除;
6. valid模式下:如果切分D/H:
1)当kernel_size <= stride时(kernel_size=dilation (kernel_size - 1) + 1,下同),输入切片大小需能被stride整除;
2)不支持kernel_size > stride;
7. same/pad模式下:如果切分D/H:
1)kernel_size >= stride时,(包含pad的输入总长度 - kernel_size)需能被stride整除;kernel_size < stride时,pad需等于0且分片能被stride整除;
2)( 输出总长度
stride - 输入总长度)需能被切分策略整除;
3)相邻卡间发送接收的数据长度需大于等于0且小于等于切片大小;
8. 在auto_parallel模式下,不支持双递归算法。
不支持配置Layout
mindspore.ops.Cos 不支持配置Layout
mindspore.ops.Cosh 不支持配置Layout
mindspore.ops.CropAndResize 1. 不支持对输入(x)的H/W维和输入(boxes)的第二维进行切分;
2. 输入(boxes)和输入(box_index)第一维的切分策略必须一致
不支持配置Layout
mindspore.ops.CumProd 不支持axis维切分 不支持配置Layout
mindspore.ops.CumSum 不支持axis维切分 不支持配置Layout
mindspore.ops.Div 支持配置Layout,输入的Layout 需要相同或能广播,不支持配置输出的Layout
mindspore.ops.DivNoNan 不支持配置Layout
mindspore.ops.Dropout 不支持配置Layout
mindspore.ops.Elu 不支持配置Layout
mindspore.ops.EmbeddingLookup 同Gather 不支持配置Layout
mindspore.ops.Equal 不支持配置Layout
mindspore.ops.Erf 不支持配置Layout
mindspore.ops.Erfc 不支持配置Layout
mindspore.ops.Erfinv 不支持配置Layout
mindspore.ops.Exp 不支持配置Layout
mindspore.ops.ExpandDims 不支持配置Layout
mindspore.ops.Expm1 不支持配置Layout
mindspore.ops.Floor 不支持配置Layout
mindspore.ops.FloorDiv 不支持配置Layout
mindspore.ops.FloorMod 不支持配置Layout
mindspore.ops.Gamma 1. shape为tuple,但可以对shape进行切分,如shape=(8, 16),对应的策略可以为(2, 4);
2. alphabeta对应的策略必须为全1;
3. 当shape切分策略不为全1时,结果和单卡不一致
不支持配置Layout
mindspore.ops.Gather 1. batch_dims > 0时:
1)input_params的axis维度不支持切分;
2)不支持非均匀切分;
2. batch_dims = 0时:
1)均匀切分时:
a)如果input_params的axis维度不切分,则其他维度可以任意切分;
b)input_params的axis维度切分时:input_params只支持1维和2维,input_indices不支持标量,不支持input_indices和input_params同时进行切分;axis=0且参数在轴(axis)所在维度切分时,支持配置输出切分策略,合法的输出切分策略为(indices_strategy, param_strategy[1:]) 或 ((indices_strategy[0]*param_strategy[0], indices_strategy[1:]), param_strategy[1:])
2)非均匀切分时:
a)axis仅支持为0;
b)非均匀切分仅表示对input_params的第零维非均匀切分;
c)对input_params第零维的切分份数要等于对input_indices最后一维的切分份数;
d)input_params的每个维度都能切分,但input_indices只能切分最后一维,且不支持重复计算;
e)input_indices需满足:后一个切片的Tensor值需大于前一个分片的Tensor值。
不支持配置Layout
mindspore.ops.GatherD dim所对应的维度不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.GatherNd 第一个输入不能切分,第二个输入的最后一维不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.GeLU 支持配置输入的Layout,不支持配置输出的Layout
mindspore.ops.Greater 不支持配置Layout
mindspore.ops.GreaterEqual 不支持配置Layout
mindspore.ops.HShrink 不支持配置Layout
mindspore.ops.HSigmoid 不支持配置Layout
mindspore.ops.InplaceAdd 不支持对xinput_v的第一维切分 不支持配置Layout
mindspore.ops.InplaceSub 同InplaceAdd 不支持配置Layout
mindspore.ops.InplaceUpdate 同InplaceAdd 不支持配置Layout
mindspore.ops.Inv 不支持配置Layout
mindspore.ops.IOU 支持对anchor_boxesgt_boxes的第一维切分 不支持配置Layout
mindspore.ops.IsFinite 不支持配置Layout
mindspore.ops.KLDivLoss 不支持配置Layout
mindspore.ops.LayerNorm 第二个输入gamma以及第三个输入beta的切分策略需要等于input_x_strategy[begin_params_axis:],input_x_strategy是第一个输入的切分策略 支持配置Layout。第二个输入gamma以及第三个输入beta的Layout配置需要等于input_x_layout_tuple[begin_params_axis:]。 第二个输入gamma以及第三个输入beta的Layout配置需要等于input_x_layout_tuple是第一个输入的layout配置
mindspore.ops.L2Loss 不支持配置Layout
mindspore.ops.L2Normalize 输入(input_x)在轴(axis)对应的维度不能切,切分后,在数学逻辑上和单机不等价 不支持配置Layout
mindspore.ops.Lerp 不支持配置Layout
mindspore.ops.Less 不支持配置Layout
mindspore.ops.LessEqual 不支持配置Layout
mindspore.ops.LinSpace 不需要为startend配置策略,只需要传入一个长度为1的策略,其数值能整除num 不支持配置Layout
mindspore.ops.LogicalAnd 不支持配置Layout
mindspore.ops.LogicalNot 不支持配置Layout
mindspore.ops.LogicalOr 不支持配置Layout
mindspore.ops.Log 不支持配置Layout
mindspore.ops.Log1p 不支持配置Layout
mindspore.ops.LogSoftmax 输入(logits)在轴(axis)对应的维度不可切分,切分后,在数学逻辑上和单机不等价 不支持配置Layout
mindspore.ops.MaskedFill 不支持配置Layout
mindspore.ops.MatMul 1. 当transpose_b=True时,输入的切分策略需是 ((A, B), (C, B)) 的形式
2. 当transpose_b=False时,输入的切分策略需是 ((A, B), (B, C)) 的形式;
3. 支持设置输出切分策略,合法的输出切分策略为 ((A, C),) 或 ((A * B, C),) 。
支持配置Layout。
1. 当transpose_b=True时,输入的Layout配置需是 (layout(A, B), layout(C, B)) 的形式,其中A/B/C可以是设备别名或者是设备别名元组
2. 当transpose_b=False时,输入的layout配置需是 (layout(A, B), layout(B, C)) 的形式,其中A/B/C可以是设备别名或者是设备别名元组;
3. 支持配置输出Layout,合法的输出Layout为 (layout(A, C),) 或 (layout((A, B), C),),这里A/B/C均为设备别名;如若A是别名元组(A1, A2),则合法的输出Layout为 (layout((A1, A2), C),) 或 (layout((A1, A2, B), C),) 。
mindspore.ops.Maximum 不支持配置Layout
mindspore.ops.MaxPool 1. 数据格式只支持‘NCHW’;
2. 输出的H/W维的shape必须能被输入的H/W维的切分策略整除;
3. 如果切分H/W:
1)当kernel_size <= stride时,输入切片大小需能被stride整除;
2)不支持kernel_size > stride;
4. 在auto_parallel模式下,不支持双递归算法。
不支持配置Layout
mindspore.ops.MaxPool3D 同AvgPool3D 不支持配置Layout
mindspore.ops.Minimum 不支持配置Layout
mindspore.ops.Mish 不支持配置Layout
mindspore.ops.Mod 不支持配置Layout
mindspore.ops.Mul 支持配置Layout,输入的Layout 需要相同或能广播,不支持配置输出的Layout
mindspore.ops.MulNoNan 不支持配置Layout
mindspore.ops.Neg 不支持配置Layout
mindspore.ops.NotEqual 不支持配置Layout
mindspore.ops.OneHot 仅支持输入(indices)是一维的Tensor,切分策略要配置输出的切分策略,以及第1和第2个输入的切分策略 不支持配置Layout
mindspore.ops.OnesLike 不支持配置Layout
mindspore.ops.Pow 不支持配置Layout
mindspore.ops.PReLU weight的shape在非[1]的情况下,输入(input_x)的Channel维要和weight的切分方式一致 不支持配置Layout
mindspore.ops.RandomChoiceWithMask 不支持切分,仅支持全1策略 不支持配置Layout
mindspore.ops.RealDiv 不支持配置Layout
mindspore.ops.Reciprocal 不支持配置Layout
mindspore.ops.ReduceMax 输入在轴(axis)的维度进行切分时,分布式结果可能会和单机不一致 不支持配置Layout
mindspore.ops.ReduceMin 输入在轴(axis)的维度进行切分时,分布式结果可能会和单机不一致 不支持配置Layout
mindspore.ops.ReduceSum 不支持配置Layout
mindspore.ops.ReduceMean 不支持配置Layout
mindspore.ops.ReLU 支持配置输入的Layout,不支持配置输出的Layout
mindspore.ops.ReLU6 不支持配置Layout
mindspore.ops.Reshape 不支持配置切分策略,并且,在自动并行模式下,当reshape API后接有多个API,不允许对这些API配置不同的切分策略 不支持配置Layout
mindspore.ops.ResizeNearestNeighbor align_corners=True时只支持切分第一维和第二维。 不支持配置Layout
mindspore.ops.Rint 不支持配置Layout
mindspore.ops.ROIAlign 不支持对输入(features)的H/W维和输入(rois)的第二维进行切分 不支持配置Layout
mindspore.ops.Round 不支持配置Layout
mindspore.ops.Rsqrt 不支持配置Layout
mindspore.ops.ScatterAdd 第二个输入不能切分,第三个输入的前n维(n为第二个输入的维度)不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterDiv 第二个输入不能切分,第三个输入的前n维(n为第二个输入的维度)不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterMax 第一个输入的第一维不能切分,第二个输入不能切分,第三个输入的前n维(n为第二个输入的维度)不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterMin 第一个输入的第一维不能切分,第二个输入不能切分,第三个输入的前n维(n为第二个输入的维度)不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterMul 第二个输入不能切分,第三个输入的前n维(n为第二个输入的维度)不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterNdAdd 第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterNdSub 第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterNdUpdate 第一个输入前m维度不能切(m为第二个输入indices的最后一维的值indices[-1])第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterSub 第二个输入不能切分,第三个输入的前n维(n为第二个输入的维度)不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.ScatterUpdate 第一个输入的第一维不能切分,第二个输入不能切分,第三个输入的前n维(n为第二个输入的维度)不能切分;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.TensorScatterAdd 第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.TensorScatterDiv 第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.TensorScatterMax 第一个输入前m维度不能切(m为第二个输入indices的最后一维的值indices[-1])第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.TensorScatterMax 第一个输入前m维度不能切(m为第二个输入indices的最后一维的值indices[-1])第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.TensorScatterMul 第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.TensorScatterAdd 第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.TensorScatterUpdate 第一个输入前m维度不能切(m为第二个输入indices的最后一维的值indices[-1])第二个输入不能切分,第三个输入的前n-1维(n为第二个输入的维度)不能切分,第三个输入的剩下k个维度(除去前n-1维度)的切分与第一个输入的最后k个切分一致;在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.Select 在auto_parallel模式下,不支持双递归算法。 不支持配置Layout
mindspore.ops.SeLU 不支持配置Layout
mindspore.ops.Sigmoid 支持配置输入的Layout,不支持配置输出的Layout
mindspore.ops.SigmoidCrossEntropyWithLogits 不支持配置Layout
mindspore.ops.Sign 不支持配置Layout
mindspore.ops.Sin 不支持配置Layout
mindspore.ops.Sinh 不支持配置Layout
mindspore.ops.Softmax 输入(logits)在轴(axis)对应的维度不可切分,切分后,在数学逻辑上和单机不等价 支持配置输入的Layout,不支持配置输出的Layout,并且不能在轴(axis)对应的维度配置Layout
mindspore.ops.SoftmaxCrossEntropyWithLogits 输入(logits、labels)的最后一维不能切分;有两个输出,正向的loss只支持取[0] 不支持配置Layout
mindspore.ops.Softplus 不支持配置Layout
mindspore.ops.Softsign 不支持配置Layout
mindspore.ops.SoftShrink 不支持配置Layout
mindspore.ops.SparseGatherV2 同Gather 不支持配置Layout
mindspore.ops.Split 轴(axis)所对应的维度不能切分,切分后,在数学逻辑上和单机不等价 不支持配置Layout
mindspore.ops.Sqrt 不支持配置Layout
mindspore.ops.Square 不支持配置Layout
mindspore.ops.SquaredDifference 不支持配置Layout
mindspore.ops.Squeeze 不支持配置Layout
mindspore.ops.Stack 不支持配置Layout
mindspore.ops.StridedSlice 仅支持值为全0的mask;需要切分的维度必须全部提取;输入在strides不为1对应的维度不支持切分 不支持配置Layout
mindspore.ops.Slice 需要切分的维度必须全部提取 不支持配置Layout
mindspore.ops.Sub 支持配置Layout,输入的Layout 需要相同或能广播,不支持配置输出的Layout
mindspore.ops.Tan 不支持配置Layout
mindspore.ops.Tanh 不支持配置Layout
mindspore.ops.Tile 仅支持对multiples配置切分策略 不支持配置Layout
mindspore.ops.TopK 最后一维不支持切分,切分后,在数学逻辑上和单机不等价 不支持配置Layout
mindspore.ops.Transpose 不支持配置Layout
mindspore.ops.TruncateDiv 支持配置Layout,并且device matrix和tensor map的transpose都是被允许的
mindspore.ops.TruncateMod 不支持配置Layout
mindspore.ops.Unique 只支持重复计算的策略(1,) 不支持配置Layout
mindspore.ops.UnsortedSegmentSum 输入input_x和segment_ids的切分配置必须在segment_ids的维度上保持一致 不支持配置Layout
mindspore.ops.UnsortedSegmentMin 输入input_x和segment_ids的切分配置必须在segment_ids的维度上保持一致。注意:在segment id为空时,输出向量的对应位置会填充为输入类型的最大值。需要用户进行掩码处理,将最大值转换成0。否则容易造成数值溢出,导致通信API上溢错误,从而引发Run Task Error 不支持配置Layout
mindspore.ops.UnsortedSegmentMax 输入input_x和segment_ids的切分配置必须在segment_ids的维度上保持一致。注意:在segment id为空时,输出向量的对应位置会填充为输入类型的最小值。需要用户进行掩码处理,将最小值转换成0。否则容易造成数值溢出,导致通信API上溢错误,从而引发Run Task Error 不支持配置Layout
mindspore.ops.Xdivy 不支持配置Layout
mindspore.ops.Xlogy 不支持配置Layout
mindspore.ops.ZerosLike 不支持配置Layout

重复计算是指,机器没有用满,比如:集群有8张卡跑分布式训练,切分策略只对输入切成了4份。这种情况下会发生重复计算。

1
https://gitee.com/mindspore/docs.git
git@gitee.com:mindspore/docs.git
mindspore
docs
docs
master

搜索帮助