mindspore.parallel.Layout
- class mindspore.parallel.Layout(device_matrix, alias_name, rank_list=None)[源代码]
Layout描述了详细的切分信息。
详情请参考文档 高阶算子级并行。
说明
仅在半自动并行或自动并行模式下有效。
device_matrix 的累乘结果必须等于一个 pipeline stage 中的设备数。
当 Layout 来构建切分策略时,每个别名只允许用于一次张量的切分。
- 参数:
device_matrix (tuple) - 描述设备排列的形状,其元素类型为 int 。
alias_name (tuple) - device_matrix 的每个轴的别名,其元素类型为字符串。使用 interleaved_parallel 作为别名时,会在其对应的切分维度将该算子在单卡内拆分为多个副本。
rank_list (list,可选) - 数据根据 rank_list 排布在设备上。默认
None
。
- 异常:
TypeError - device_matrix 不是tuple类型。
TypeError - alias_name 不是tuple类型。
TypeError - rank_list 不是list类型。
ValueError - device_matrix 长度不等于 alias_name 长度。
TypeError - device_matrix 的元素不是 int 类型。
TypeError - alias_name 的元素不是 str 类型。
TypeError - rank_list 的元素不是 int 类型。
ValueError - alias_name 的元素是一个空的 str 。
ValueError - alias_name 的元素为 None 。
ValueError - alias_name 包含重复的元素。
- 支持平台:
Ascend
样例:
>>> from mindspore.parallel import Layout >>> layout = Layout((2, 2, 2), ("dp", "sp", "mp")) >>> layout0 = layout("dp", "mp") >>> print(layout0.to_dict()) {"device_matrix": (2, 2, 2), "tensor_map": (2, 0), "interleaved_parallel": False, 'alias_name': {'dp', 'sp', 'mp'}, "rank_list": [0, 1, 2, 3, 4, 1, 6, 7]} >>> # Total device num is 4, but split the tensor in local device into two copies. >>> layout = Layout((2, 2, 2), ("dp", "sp", "interleaved_parallel")) >>> layout1 = layout(("dp", "interleaved_parallel"), "sp")