-sdy-aggressive-propagate

Uruchamia agresywny algorytm propagacji dzielenia na fragmenty.

Propaguj podziały za pomocą strategii propagowania czynników agresywnych. Strategia podstawowa rozpowszechnia tylko podziały bez konfliktów, a strategia agresywna rozwiązuje konflikty. Większa agresywność może zmniejszyć zapotrzebowanie na pamięć kosztem potencjalnej komunikacji.

Opcje:

  • -keep-sharding-rules: czy zachować istniejące i nowo utworzone reguły podziału na fragmenty.
  • -module-dump-directory: miejsce, w którym przechowywane są przepisane moduły na potrzeby debugowania.
  • -conservative-propagation: określa, czy podczas propagowania nie zezwalać na osi podziału i niedzielone osie podziału.
  • -debug-sharding-origins: czy zapisywać informacje o pochodzeniu podziału na moduł MLIR. Są to podziały na fragmenty danych wejściowych i wyjściowych funkcji, ograniczenia podziału na fragmenty oraz obliczenia ręczne przed propagowaniem.
  • -debug-edge-source-sharding: czy zapisywać informacje o źródle na brzegu sieci podziału w module MLIR. Te operandy/wyniki spowodowały podział niektórych wyników operacji.
  • -propagation-strategy: strategia propagowania czynników, której należy użyć.

-sdy-basic-propagate

Wykonuje podstawowy algorytm propagacji dzielenia na fragmenty.

Podstawowy algorytm propagowania to strategia propagowania o najniższej pozycji w hierarchii, która nie rozwiązuje konfliktów, lecz propaguje osie, które są zgodne ze wszystkimi operandami i wynikami.

Opcje:

  • -keep-sharding-rules: czy zachować istniejące i nowo utworzone reguły podziału na fragmenty.
  • -module-dump-directory: miejsce, w którym przechowywane są przepisane moduły na potrzeby debugowania.
  • -conservative-propagation: określa, czy podczas propagowania nie zezwalać na osi podziału i niedzielone osie podziału.
  • -debug-sharding-origins: czy zapisywać informacje o pochodzeniu podziału na moduł MLIR. Są to podziały na fragmenty danych wejściowych i wyjściowych funkcji, ograniczenia podziału na fragmenty oraz obliczenia ręczne przed propagowaniem.
  • -debug-edge-source-sharding: czy zapisywać informacje o źródle na brzegu sieci podziału w module MLIR. Te operandy/wyniki spowodowały podział niektórych wyników operacji.

-sdy-op-priority-propagate

Wykonuje algorytm propagacji priorytetów op.

Rozprowadzanie podziału na części w iteracjach na podstawie zestawu heurystyk op. Każda heurystyka określa, czy w przypadku danej opcji propagować w kierunku do przodu, do tyłu czy w obu kierunkach.

Rozpoczyna się od op-priority 0 i rośnie, dopóki nie zostaną wyczerpane wszystkie heurystyki op i program nie osiągnie punktu stałego.

W przypadku priorytetu p wszystkie heurystyki dotyczące op są brane pod uwagę w zakresie od 0 <= i < p. Dla każdego operatora wybierana jest najbardziej wyrazista kierunkowa pozycja.BOTH > BACKWARD == FORWARD > NONE Jeśli podczas tej iteracji najpierw pojawia się FORWARD/BACKWARD, a potem BACKWARD/FORWARD, kierunek to BOTH.

Ta strategia propagowania rozszerza agresywną strategię propagowania, co oznacza, że w przypadku każdej iteracji op-priority stosowana jest pełna agresywna propagacja (patrz AggressivePropagationPass).

Opcje:

  • -keep-sharding-rules: czy zachować istniejące i nowo utworzone reguły podziału na fragmenty.
  • -module-dump-directory: miejsce, w którym przechowywane są przepisane moduły na potrzeby debugowania.
  • -conservative-propagation: określa, czy podczas propagowania nie zezwalać na osi podziału i niedzielone osie podziału.
  • -debug-sharding-origins: czy zapisywać informacje o pochodzeniu podziału na moduł MLIR. Są to podziały na fragmenty danych wejściowych i wyjściowych funkcji, ograniczenia podziału na fragmenty oraz obliczenia ręczne przed propagowaniem.
  • -debug-edge-source-sharding: czy zapisywać informacje o źródle na brzegu sieci podziału w module MLIR. Te operandy/wyniki spowodowały podział niektórych wyników operacji.
  • -propagation-strategy: strategia propagowania czynników, której należy użyć.
  • -run-op-priority-propagation: określa, czy należy wykonać (lub pominąć) propagowanie priorytetów op.

-sdy-populate-op-sharding-rules

Wypełnia wszystkie zarejestrowane operacje za pomocą OpShardingRuleAttr.

Wypełnia wszystkie zarejestrowane operacje za pomocą wartości OpShardingRuleAttr, która służy do debugowania i testowania zarejestrowanych reguł podziału. Rozchodzenie się informacji już się odbywa w czasie rzeczywistym, ale ta metoda powoduje, że wszystko odbywa się naraz.

Opcje

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

-sdy-user-priority-propagate

Wykonuje algorytm propagacji priorytetów użytkowników.

Rozmiary partycji są propagowane w iteracjach, zaczynając od najwyższego priorytetu (najniższa liczba, zwykle p0) do najniższego priorytetu (najwyższa liczba). Inaczej mówiąc, w i-tej iteracji propagowane są tylko podziały wymiarów o priorytecie <=i.

Ta strategia propagowania rozszerza strategię propagowania według priorytetu operacyjnego, co oznacza, że w przypadku każdej iteracji priorytetu użytkownika jest stosowana pełna propagacja według priorytetu operacyjnego (patrz OpPriorityPropagationPass).

Opcje:

  • -keep-sharding-rules: czy zachować istniejące i nowo utworzone reguły podziału na fragmenty.
  • -module-dump-directory: miejsce, w którym przechowywane są przepisane moduły na potrzeby debugowania.
  • -conservative-propagation: określa, czy podczas propagowania nie zezwalać na osi podziału i niedzielone osie podziału.
  • -debug-sharding-origins: czy zapisywać informacje o pochodzeniu podziału na moduł MLIR. Są to podziały na fragmenty danych wejściowych i wyjściowych funkcji, ograniczenia podziału na fragmenty oraz obliczenia ręczne przed propagowaniem.
  • -debug-edge-source-sharding: czy zapisywać informacje o źródle na brzegu sieci podziału w module MLIR. Te operandy/wyniki spowodowały podział niektórych wyników operacji.
  • -propagation-strategy: strategia propagowania czynników, której należy użyć.
  • -run-op-priority-propagation: określa, czy należy wykonać (lub pominąć) propagowanie priorytetów op.