-mpmd-copy-topology-from-main
Ana işlevdeki topolojiyi mpmd.call tarafından başvurulan işlevlere kopyalar.
Ana işlevdeki topoloji özelliğini, mpmd.call tarafından başvurulan tüm işlevlere kopyalar. Bu işlem, giriş noktası işleviyle karıştırılmaması için mpmd.call çağrılanı özel görünürlüğe de ayarlar.
-mpmd-enforce-input-output-equisharding
MPMD işlevleri için eşit parçalama kısıtlamalarını zorunlu kılar.
Gerekli olduğunda TransferOps'u kullanarak MPMD işlevleri için giriş-çıkış eşit parçalama kısıtlamalarını zorunlu kılar.
Seçenekler
-constraints : A list of constraint, each enforcing that an input and output should be assigned to the same mesh.
-mpmd-generate-sdy-meshes-from-topology
MPMD topolojisine göre parçalı ağlar oluşturur.
Bu geçiş, mevcut tüm shardy mesh işlemlerini kaldırır ve bunları MPMD topolojisine dayalı işlemlerle değiştirir. Ayrıca, tensör parçalama işlemlerini yeni ağ işlemlerine referans verecek şekilde günceller.
-mpmd-infer-mesh-assign-mesh-func-leaves
_use_set ve srcset analizi kullanılarak kullanılmayan her hesaplamaya, işlev çıkışına ve işlev girişine bir örgü atanır.
Bu geçiş, AssignOps oluşturarak veya türü değiştirerek, use_set ve src_set bilgilerini kullanarak örgüleri işlev gövdesi yapraklarına (yani kullanılmayan hesaplamaların, kullanılmayan işlev bağımsız değişkenlerinin ve işlev çıkışlarının sonuçları) atar.
Ayrıca, analiz amacıyla belirli ara değerleri yaprak olarak ele alırız. Örneğin: mpmd.reduce ve mpmd.broadcast işlemlerinin işlenenleri yaprak olarak kabul edilir ve bunlar üzerinde bir atama-atama kaldırma çifti oluşturulur.
Bu atama, daha önce açıklama eklenen kullanımlar, azaltma işlemlerinin çıkarılması bazı değerlerin use_set'ini değiştireceğinden eski olacağı için tüm yaprak olmayan işlemlerin use_set'ini temizler: İlk use_set yayılımı, azaltma işlemlerinin farkında değildir ancak artık azaltma işlemlerini çıkardığımıza göre yayılım farklı olacaktır.
Bu geçiş, yaprak işlemleri için use ve src-set'ler doğru şekilde doldurulmamışsa hatalar vererek başarısız olur.
Ön koşul: Her işlemde boş olmayan bir src-set vardır veya aktarımları tahmin ederiz.
Seçenekler
-infer-transfers : Whether to create transfers when needed, instead of erroring.
-error-limit : The number of errors to emit. Set to -1 to emit all errors. Cannot be 0.
-mpmd-infer-mesh-assign-using-input-output-constraints
Giriş-çıkış atama kısıtlamalarına göre girişlere ve çıkışlara bir ağ atar.
Bu geçiş, hem girişi hem de çıkışı aynı ağa atamak için giriş-çıkış eşdeğer atama kısıtlamalarını kullanır.
Bunun, girişin daha sonra diğer ağlara aktarılıp aktarılmadığına bakılmaksızın aynı ağda olmasını sağladığını unutmayın. Ancak bu, bu geçişten sonra populate-src-set çalıştırmamamız gerektiği anlamına gelir.
Gerekli:
- Giriş noktası işlevinin, eşdeğer atama kısıtlamasının parçası olabilecek herhangi bir girişi
iiçin:i, MeshTensorType'a VEYA iyi tanımlanmış bir kullanım kümesine sahiptir. - Giriş noktası işlevinin, eşit atama kısıtlamasının parçası olabilecek herhangi bir çıkışı için:
oMeshTensorType türündedir VEYA iyi tanımlanmış kaynak ve kullanım kümelerine sahiptir.o
Bir değerin iyi tanımlanmış kullanım kümesi, mpmd.assign işlemleri aracılığıyla ve başka hiçbir ağ olmadan değerin (geçişli olarak) atandığı tüm ağları içerir. İyi tanımlanmış bir src-set, tensörün yaşamasına izin verilen tüm ağları içerir ve başka ağ içermez.
Bu yalnızca giriş noktası işlevlerinde çalışsa da mevcut işlevlerdeki tüm geçişlerin tamamlanmasını gerektirdiğinden bunu bir modül geçişi olarak ele alıyoruz. Örneğin, bunu EntryPointFunctionPass yaparsak geçiş yöneticisi, giriş noktası olmayan işlevlerde doğrulama tamamlanmadan bu kartı çalıştırabilir.
Seçenekler
-verbose-logging : Whether to enable verbose logging
-constraints : A list of constraint, each enforcing that an input and output should be assigned to the same mesh.
-mpmd-infer-mesh-convert-reduce-ops
Açıklama eklenmiş dönüştürme işlemleri, azaltma işlemlerini mpmd.reduce işlemlerine dönüştürür ve azaltma işlemlerinin zincirlerini düzleştirir.
Açıklama eklenmiş azaltma işlemlerini mpmd.reduce işlemlerine dönüştürür ve bu azaltma işlemlerinin zincirlerini düzleştirir.
Sembollerle:
x = add(w0, w1) {mpmd.reduce = #mpmd.reduce
Seçenekler
-infer-cross-mesh-reductions : Whether to infer cross-mesh reductions. Will be enabled by default once stable.
-mpmd-infer-mesh-finalize
Desenler ağ çıkarımı yapıldıktan sonra son temizliği uygular.
Seçenekler
-infer-transfers : Whether to create transfers when needed, instead of erroring.
-mpmd-infer-mesh-populate-src-set
_Initializes the src_set for UnassignOps and func args and propagates the srcset.
Bu geçiş, src_set'i başlatır ve yayar. Böylece grafik, src_set bilgileriyle doldurulur.
Ön koşul: İşlev bağımsız değişkenlerinin src_set'lere sahip olması için use_set'in doldurulması gerekir.
Başlatma: Bir UnassignOp'un src_set'i, atadığı ağa ayarlanır. Bir işlev bağımsız değişkeninin src_set'i use_set'ine ayarlanır.
Yayma: src_sets, işlenenlerden işleme doğru yayılır ve işlenenlerin kesişimini alır. Ayrıntılar için PropagateSrcSet öğesine bakın.
-mpmd-infer-mesh-populate-use-set
_Initializes the use_set for AssignOps and propagates the useset.
Bu geçiş, use_set'i başlatır ve geriye doğru yayarak grafiği use_set bilgileriyle doldurur.
Başlatma: Bir AssignOp'un use_set'i, atadığı ağa ayarlanır.
Yayılma: use_sets, kullanıcıların birleşimi alınarak kullanıcılardan işlemin kendisine doğru geriye yayılır. Bir işlemin use_set'i, tanım gereği kullanıcılarının use_set'lerinin birleşimidir. Bunun nedeni, use_set'in geçişli kullanımların kümesi olmasıdır.
-mpmd-infer-mesh-rewrite-using-analysis
_İşlemleri kullanım setine göre yeniden yazar.
Bu geçiş, use_set ve src_set analizlerini kullanarak ağsız işlemleri parçalara sararak atar.
Ayrıca, analizlere artık gerek kalmadığı için temizleme kapsamında use_set ve src_set özelliklerini de kaldırır.
Ön koşul: Her işlemde use_set vardır. Yani analiz tamamlanmıştır. Ön koşul: Giriş noktası olmayan bir işlevin her bağımsız değişkeni en az bir sonlandırıcı olmayan işlem tarafından kullanılır.
YAPILACAKLAR: jupvfranco - Bu geçişin artık analizden çok fazla etkilenmediği göz önüne alınarak yeniden adlandırılması düşünülmelidir.
Seçenekler
-max-clones : How many copies of a meshless operation we allow. Setting it to 1 means we never clone the op.
-mpmd-infer-mesh-validate-no-additional-transfers-needed
Mesh ataması için ek aktarım gerekmediğini doğrular.
Bu geçiş, ek aktarım yapmadan tüm mesh'siz işlemler için mesh atamasının mümkün olduğunu doğrular.
İşlevsel olmayan, ağsız işlemler şu durumlarda hata verir:
- use_set, belirli bir işlem için src_set içinde yer almıyor. Örneğin, aktarım gerekiyor.
İşlev işlemleri için işlev bağımsız değişkenleriyle ilgili yukarıdaki koşulları kontrol etmek yeterlidir. Çünkü işlev, ağsız işlemler veya blok bağımsız değişkenleri döndürür.
Seçenekler
-error-limit : The number of errors to emit. Set to -1 to emit all errors. Cannot be 0.
-mpmd-infer-mesh-validate-src-set-not-empty
_Her ağsız işlemin boş olmayan bir src ayarına sahip olduğunu doğrular.
Bu geçiş, tüm ağsız işlemleri doğrular ve işlemin bir yere atanıp atanamayacağını kontrol eder. Örneğin, işlevsel olmayan işlemler için, bir işlemde src_set boş olduğunda veya ağlar arası bir azaltma olduğu çıkarımı yapıldığı ancak dönüştürülmediği durumlarda hata oluşur. Bu, işlevsel izin ataması için ön koşuldur.
İşlev işlemleri için işlev bağımsız değişkenleriyle ilgili yukarıdaki koşulları kontrol etmek yeterlidir. Çünkü işlev, ağsız işlemler veya blok bağımsız değişkenleri döndürür.
Bu, modül düzeyinde bir geçiş olmalıdır. Çünkü çağrılan tarafta bir hata olması durumunda çağrıları yazdırmak isteriz.
Ön koşul: Bu geçiş çalıştırılmadan önce, ağlar arası azaltmaların işlem sayısını azaltacak şekilde dönüştürülmesi gerekir.
Seçenekler
-error-limit : The number of errors to emit. Set to -1 to emit all errors. Cannot be 0.
-mpmd-inline-nested-user-exposed-ops
_Adlandırılmış bir computation içinde yerleştirilmiş, kullanıcıya açık herhangi bir mpmd op'yi satır içi yapar.
named_computation içinde iç içe yerleştirilmiş tüm named_computation, named_tensor, broadcast ve reduce işlemlerini satır içine yerleştirir. Bu işlemlerin ağ atamasının (tanımlandığında) üst öğenin ağ atamasıyla eşleştiğini kontrol eder.
Seçenekler
-assignment : Mapping between names (of computations and tensors) and mesh names, and optionally stage ids. E.g., 'n0@m0,n1@m1' defines that names n0 and n1 will be assigned to meshes m0 and m1, respectively. Alternatively 'n0@m0/0,n1@m1/1' means that these names are also assigned to the stages 0 and 1.
-mpmd-insert-nameless-clone-of-negligible-ops
Adlandırılmış hesaplamaların dışındaki önemsiz işlemleri kopyalar.
Hesaplamanın döndürme işlemi tarafından kullanıldıklarında, adlandırılmış hesaplamaların dışındaki tek sonuçlu, sıfır işlemli işlemler gibi önemsiz işlemleri kopyalar ve adlandırılmış hesaplamanın sonucunu klonla değiştirir. Bu, farklı ağlara atanmış adlandırılmış hesaplamalar tarafından bu tür sonuçlar kullanıldığında ağ çıkarımı çakışmasına neden olabileceği için gereklidir. Bu geçişi uygulayarak, mesh çıkarımının bu önemsiz işlemleri klonlamasına izin veriyoruz.
Bu geçiş, adlandırılmış hesaplamayı HİÇBİR ŞEKİLDE değiştirmez.
-mpmd-introduce-transfers
Kullanıcı ağı atamalarına göre veri aktarımları oluşturur.
Kullanıcı ağı atamalarına dayalı aktarım işlemlerini tanıtan bir kart oluşturur. Bunlardan bazıları:
- UnassignOp'un sonucu daha sonra aranan tarafta atanırsa UnassignOp'u mpmd çağrılarına zorunlu olarak ekleyin.
- Bir UnassignOp'un AssignOp'unu TransferOp ile değiştirir.
- Ekleme işlemini tüketen ağa atayın ve parçalar arasında ağsız bir ekleme varsa aktarım yapın.
-mpmd-map-input-output-to-mesh
Örgüleri işlev girişlerine ve çıkışına atar.
Kullanıcı tanımlı bir ağ ataması verildiğinde işlev girişlerini/çıkışlarını ağlara eşleyen bir geçiş oluşturur.
Giriş bağımsız değişkenleri için bu geçiş:
- Bir ağa yerleştirilmesi gereken giriş tensörlerini bir ağ tensörüne dönüştürür.
- İşlev imzasını günceller.
- Tensor kullanılmadan önce mpmd.unassign ekler.
Çıkış bağımsız değişkenleri için bu geçiş, tensör döndürülmeden önce mpmd.assign işlevini ekler ve işlev imzasını günceller.
Gerekli: Her giriş/çıkış dizini geçerlidir ve her eşlenmiş ağ, topolojide geçerli bir ağdır.
Seçenekler
-input-assignment : Mapping between function input indices and assigned mesh names.E.g., '0@m0,1@m1' defines that input with index 0 will be assigned to mesh m0 and input with index 1 will be assigned to mesh m1.
-output-assignment : Mapping between function output indices and assigned mesh names.E.g., '0@m0,1@m1' defines that output with index 0 will be assigned to mesh m0 and output with index 1 will be assigned to mesh m1.
-mpmd-map-named-ops-to-mpmd-ops
Ağları kullanıcı tanımlı işlemlere atar.
İsteğe bağlı olarak mpmd.named_tensor'ı Assign(Unassign(%v))'e (assignment içinde giriş olup olmadığına bağlıdır) atayan ve named_computation'ları mesh adlarına eşleyen bir geçiş oluşturur. Bu işlemde, named_computation'lar ile mesh adları arasında kullanıcı tanımlı bir eşleme kullanılır. Bu, her named_computation'ın bir Fragment ile değiştirilmesi ve işlenenler için AssignOps, bu Fragment'lerin sonuçları için ise UnassignOps oluşturulması anlamına gelir. Şimdi kullanıma sunulan Assign(Unassign(%v)) kalıbı, Transfer(%v) olarak yeniden yazılır.
Bu geçişten sonra named_computation/named_tensor işlemleri olmayacak.
Şunlar gerekir: Tüm named_computations ve named_tensors, işlevin en üst düzeyinde yer almalıdır.
Seçenekler
-assignment : Mapping between names (of computations and tensors) and mesh names, and optionally stage ids. E.g., 'n0@m0,n1@m1' defines that names n0 and n1 will be assigned to meshes m0 and m1, respectively. Alternatively 'n0@m0/0,n1@m1/1' means that these names are also assigned to the stages 0 and 1.
-mpmd-simplify-named-computations
Adlandırılmış hesaplama işlemlerinin giriş ve çıkışlarını basitleştirir.
Adlandırılmış her hesaplamayı ayrı ayrı basitleştirir. Özellikle:
- sonuçları ve bunlara karşılık gelen dönüş değerlerini tekilleştirir,
- işlenenleri ve bunlara karşılık gelen blok bağımsız değişkenlerini yinelenenlerden arındırır;
- ilgili dönüş işleneni, işlemin bir blok bağımsız değişkeni olan sonuçları kaldırır;
- İlgili blok bağımsız değişkeninin artık kullanılmadığı (veya en başından beri kullanılmadığı) işlemleri kaldırır ve
- kullanılmayan sonuçları kaldırır.
- Adlandırılmış bir hesaplamadaki
arg -> stablehlo.optimization_barrier -> returnkalıbınıarg -> returnkalıbıyla değiştirerek daha fazla basitleştirme yapılmasını sağlar.
-mpmd-validate-named-ops-in-mpmd-func
Adlandırılmış işlemlerin yalnızca mpmd işlevlerine yerleştirildiğini doğrular.
NamedComputationOp ve NamedTensorOp'nin yalnızca mpmd işlevlerine (yani bir topoloji özelliğine sahip işlevler) yerleştirildiğini doğrular.