-sdy-aggressive-propagate

运行激进的分片传播算法。

使用激进的因子传播策略传播分片。基本策略仅会传播没有冲突的分片,而激进策略会解决冲突。更高的侵略性可以降低内存占用量,但会导致潜在的通信开销。

选项:

  • -keep-sharding-rules:是否保留现有和创建的操作分片规则。
  • -module-dump-directory:用于转储所有重写的模块以进行调试的位置。
  • -conservative-propagation:在传播期间是否禁止分屏轴和不可分割的分片轴。
  • -debug-sharding-origins:是否在 MLIR 模块上保存有关分片来源的信息。这些是传播之前对函数输入、输出、分片约束条件和手动计算的分片。
  • -debug-edge-source-sharding:是否在 MLIR 模块上保存有关分片边缘来源的信息。这些是导致某些运算结果出现分片的运算数/结果。
  • -propagation-strategy:要使用的因子传播策略。

-sdy-basic-propagate

运行基本分片传播算法。

基本传播算法是层次结构中最低级的传播策略,不会执行任何冲突解决,而是传播所有运算数和结果之间兼容的轴。

选项:

  • -keep-sharding-rules:是否保留现有和创建的操作分片规则。
  • -module-dump-directory:用于转储所有重写的模块以进行调试的位置。
  • -conservative-propagation:在传播期间是否禁止分屏轴和不可分割的分片轴。
  • -debug-sharding-origins:是否在 MLIR 模块上保存有关分片来源的信息。这些是传播之前对函数输入、输出、分片约束条件和手动计算的分片。
  • -debug-edge-source-sharding:是否在 MLIR 模块上保存有关分片边缘来源的信息。这些是导致某些运算结果出现分片的运算数/结果。

-sdy-op-priority-propagate

运行操作优先级传播算法。

根据一组操作启发法,在迭代中传播分片。每个启发词语都会确定是否要针对给定运算在前向、后向或两个方向传播。

此值从操作优先级 0 开始,会一直增加,直到所有操作启发词语都用尽且程序达到固定点。

对于优先级 p,所有操作启发词语均在 0 <= i < p 的范围内。系统会使用 BOTH > BACKWARD == FORWARD > NONE 为每个操作选择最具表现力的方向。如果在此迭代期间,先看到 FORWARD/BACKWARD,然后看到 BACKWARD/FORWARD,则方向为 BOTH

此传播策略扩展了激进传播策略,这意味着在每次操作优先级迭代中,都会应用完全激进传播(请参阅 AggressivePropagationPass)。

选项:

  • -keep-sharding-rules:是否保留现有和创建的操作分片规则。
  • -module-dump-directory:用于转储所有重写的模块以进行调试的位置。
  • -conservative-propagation:在传播期间是否禁止分屏轴和不可分割的分片轴。
  • -debug-sharding-origins:是否在 MLIR 模块上保存有关分片来源的信息。这些是传播之前对函数输入、输出、分片约束条件和手动计算的分片。
  • -debug-edge-source-sharding:是否在 MLIR 模块上保存有关分片边缘来源的信息。这些是导致某些运算结果出现分片的运算数/结果。
  • -propagation-strategy:要使用的因子传播策略。
  • -run-op-priority-propagation:是否运行(或跳过)操作优先级传播。

-sdy-populate-op-sharding-rules

使用 OpShardingRuleAttr 填充所有已注册的操作。

使用 OpShardingRuleAttr 填充所有已注册的操作,该操作用于调试/测试已注册的分片规则。传播已经按需执行此操作,但此传递会一次性执行此操作。

选项

-conservative-propagation : whether to disllow rules that can propagate non-divisible sharding axes

-sdy-user-priority-propagate

运行用户优先级传播算法。

在迭代中传播分片,从最高优先级(最低数字,通常为 p0)开始,到最低优先级(最高数字)结束。换句话说,在第 i 次迭代中,系统只会传播优先级小于等于 i 的维度分片。

此传播策略扩展了操作优先级传播策略,这意味着在每次用户优先级迭代中,都会应用完整的操作优先级传播(请参阅 OpPriorityPropagationPass)。

选项:

  • -keep-sharding-rules:是否保留现有和创建的操作分片规则。
  • -module-dump-directory:用于转储所有重写的模块以进行调试的位置。
  • -conservative-propagation:在传播期间是否禁止分屏轴和不可分割的分片轴。
  • -debug-sharding-origins:是否在 MLIR 模块上保存有关分片来源的信息。这些是传播之前对函数输入、输出、分片约束条件和手动计算的分片。
  • -debug-edge-source-sharding:是否在 MLIR 模块上保存有关分片边缘来源的信息。这些是导致某些运算结果出现分片的运算数/结果。
  • -propagation-strategy:要使用的因子传播策略。
  • -run-op-priority-propagation:是否运行(或跳过)操作优先级传播。