-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.