-mpmd-copy-topology-from-main
Menyalin topologi dari fungsi utama ke fungsi yang dirujuk oleh mpmd.call.
Menyalin atribut topologi dari fungsi utama ke fungsi apa pun yang dirujuk oleh mpmd.call. Hal ini juga menetapkan penerima panggilan mpmd.call ke visibilitas pribadi, agar tidak keliru dianggap sebagai fungsi titik entri.
-mpmd-enforce-input-output-equisharding
Menerapkan batasan pemerataan untuk fungsi MPMD.
Menerapkan batasan pemerataan input-output untuk fungsi MPMD dengan memperkenalkan TransferOps jika diperlukan.
Opsi
-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
Membuat mesh shardy berdasarkan topologi MPMD.
Pass ini menghasilkan penghapusan operasi mesh shardy yang ada dan menggantinya dengan operasi berdasarkan topologi MPMD. Selain itu, tensor sharding juga diupdate untuk merujuk ke operasi mesh baru.
-mpmd-infer-mesh-assign-mesh-func-leaves
_Menetapkan mesh ke setiap komputasi, output fungsi, dan input fungsi yang tidak digunakan menggunakan analisis use_set dan srcset.
Pass ini menetapkan mesh ke daun isi func (yaitu, hasil komputasi yang tidak digunakan, argumen fungsi yang tidak digunakan, dan output fungsi) dengan membuat AssignOps atau mengubah jenis, menggunakan informasi use_set dan src_set.
Kami juga memperlakukan nilai perantara tertentu sebagai leaf, demi analisis. Yaitu: operan mpmd.reduce dan mpmd.broadcast diperlakukan sebagai leaf dan pasangan penetapan-pembatalan penetapan akan dibuat di dalamnya.
Penetapan ini akan menghapus use_set semua operasi non-leaf, karena penggunaan yang sebelumnya dianotasi akan menjadi tidak valid karena menyimpulkan operasi reduce akan mengubah use_set beberapa nilai: propagasi use_set awal tidak mengetahui operasi reduce, tetapi sekarang setelah kita menyimpulkan operasi reduce, propagasi akan berbeda.
Penerusan ini akan gagal, memunculkan error, jika set penggunaan dan set sumber tidak diisi dengan benar untuk operasi leaf.
Kondisi awal: setiap operasi memiliki src-set yang tidak kosong, atau kita menyimpulkan transfer.
Opsi
-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
Menetapkan mesh ke input dan output sesuai dengan batasan penetapan input-output.
Penerusan ini menggunakan batasan penetapan yang sama untuk input-output guna menetapkan input dan output ke mesh yang sama.
Perhatikan bahwa hal ini menjamin input berada di mesh yang sama, terlepas dari
apakah input tersebut kemudian ditransfer ke mesh lain atau tidak. Namun, ini berarti kita tidak boleh menjalankan populate-src-set setelah lulus ini.
Memerlukan:
- untuk setiap input
idari fungsi titik entri yang mungkin menjadi bagian dari batasan penetapan yang sama:imemiliki MeshTensorType, ATAU set penggunaan yang ditetapkan dengan baik. - untuk output
ofungsi titik entri yang mungkin menjadi bagian dari batasan penetapan yang sama:omemiliki jenis MeshTensorType, ATAU set src dan penggunaan yang ditentukan dengan baik.
Jika set penggunaan nilai yang terdefinisi dengan baik mencakup semua mesh yang (secara transitif) ditetapkan nilainya, melalui operasi mpmd.assign dan tidak ada mesh lain. Set sumber yang ditentukan dengan baik mencakup semua mesh tempat tensor diizinkan untuk berada dan tidak ada mesh lain.
Meskipun hanya berjalan pada fungsi titik entri, kita menjadikannya sebagai operasi modul
karena memerlukan semua operasi pada fungsi yang ada untuk diselesaikan
sebelum dijalankan. Misalnya, jika kita menjadikannya EntryPointFunctionPass, maka pengelola kartu dapat menjalankan kartu ini sebelum validasi selesai pada fungsi titik non-entri.
Opsi
-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
Mengonversi operasi reduce yang dianotasi menjadi operasi mpmd.reduce dan meratakan rantai operasi reduce.
Mengonversi operasi reduce yang dianotasi menjadi operasi mpmd.reduce, dan juga meratakan rantai operasi reduce ini.
Dalam simbol:
x = add(w0, w1) {mpmd.reduce = #mpmd.reduce
Opsi
-infer-cross-mesh-reductions : Whether to infer cross-mesh reductions. Will be enabled by default once stable.
-mpmd-infer-mesh-finalize
Menerapkan pembersihan akhir setelah inferensi mesh pola.
Opsi
-infer-transfers : Whether to create transfers when needed, instead of erroring.
-mpmd-infer-mesh-populate-src-set
_Menginisialisasi src_set untuk UnassignOps dan argumen func serta menyebarkan srcset.
Pass ini menginisialisasi src_set dan menyebarkannya, mengisi grafik dengan info src_set.
Kondisi awal: agar argumen func memiliki src_set, use_set harus diisi.
Inisialisasi: src_set UnassignOp disetel ke mesh yang ditetapkannya. src_set argumen func disetel ke use_set-nya.
Propagasi: src_set dipropagasi ke depan dari operand ke op itu sendiri, dengan mengambil irisan operand. Lihat PropagateSrcSet untuk detailnya.
-mpmd-infer-mesh-populate-use-set
_Menginisialisasi use_set untuk AssignOps dan menyebarkan useset.
Pass ini menginisialisasi use_set dan menyebarkannya ke belakang, mengisi grafik dengan info use_set.
Inisialisasi: use_set AssignOp ditetapkan ke mesh yang ditetapkannya.
Penyebaran: use_sets disebarkan mundur dari pengguna ke operasi itu sendiri, dengan mengambil gabungan pengguna. use_set op adalah gabungan dari use_set penggunanya berdasarkan definisi, karena use_set adalah set penggunaan transitif.
-mpmd-infer-mesh-rewrite-using-analysis
_Menulis ulang operasi sesuai dengan set.
Pass ini menetapkan operasi tanpa mesh dengan membungkusnya dalam fragmen, menggunakan analisis use_set dan src_set.
Tindakan ini juga menghapus atribut use_set dan src_set sebagai bagian dari pembersihan, karena analisis tidak lagi diperlukan setelah ini.
Prakondisi: setiap operasi memiliki use_set, yaitu analisis telah selesai. Prakondisi: setiap argumen fungsi titik entri non-digunakan setidaknya oleh satu operasi non-terminator.
TODO: jupvfranco - pertimbangkan untuk mengganti nama pass ini karena tidak terlalu bergantung pada analisis lagi.
Opsi
-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
Memastikan tidak ada transfer tambahan yang diperlukan untuk penetapan mesh.
Lulus ini memvalidasi bahwa penetapan mesh dapat dilakukan untuk semua operasi tanpa mesh tanpa memperkenalkan transfer tambahan.
Untuk operasi tanpa mesh yang bukan operasi fungsi, error terjadi saat:
- use_set tidak ada dalam src_set untuk operasi tertentu, yaitu transfer diperlukan.
Untuk operasi fungsi, cukup periksa kondisi di atas untuk argumen fungsi, karena fungsi menampilkan operasi tanpa mesh, atau argumen blok.
Opsi
-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
_Memvalidasi bahwa setiap operasi tanpa mesh memiliki set srcyang tidak kosong.
Lulus ini memvalidasi semua operasi tanpa mesh, memeriksa apakah operasi dapat ditetapkan di suatu tempat. Artinya, untuk operasi tanpa mesh yang bukan operasi fungsi, akan terjadi error jika src_set kosong pada operasi atau jika disimpulkan sebagai pengurangan lintas mesh tetapi tidak dikonversi. Ini adalah prasyarat untuk penetapan daun fungsi.
Untuk operasi fungsi, cukup periksa kondisi di atas untuk argumen fungsi, karena fungsi menampilkan operasi tanpa mesh, atau argumen blok.
Ini harus berupa lulus di tingkat modul, karena jika terjadi error pada penerima panggilan, kita ingin mencetak pemanggil.
Kondisi awal: pengurangan lintas mesh harus dikonversi untuk mengurangi operasi sebelum pass ini dijalankan.
Opsi
-error-limit : The number of errors to emit. Set to -1 to emit all errors. Cannot be 0.
-mpmd-inline-nested-user-exposed-ops
_Menyisipkan operasi mpmd yang terekspos pengguna yang disarangkan dalamkomputasi bernama.
Menggabungkan operasi named_computation, named_tensor, broadcast, dan reduce yang ditetapkan dalam named_computation, dengan memeriksa apakah penetapan mesh-nya (jika ditentukan) cocok dengan induknya.
Opsi
-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
Meng-clone operasi yang tidak signifikan di luar komputasi bernama.
Meng-clone operasi yang tidak signifikan, yaitu operasi hasil tunggal, operasi operand nol, di luar komputasi bernama setiap kali digunakan oleh operasi return komputasi, menggantikan hasil named_computation dengan clone. Hal ini diperlukan karena jika hasil tersebut digunakan oleh komputasi bernama yang ditetapkan ke mesh yang berbeda, hal ini dapat menyebabkan konflik inferensi mesh. Dengan menerapkan pass ini, kami mengizinkan inferensi mesh untuk meng-clone operasi yang tidak signifikan ini.
Pass ini TIDAK mengubah komputasi bernama sama sekali.
-mpmd-introduce-transfers
Membuat transfer data berdasarkan penetapan mesh pengguna.
Membuat kartu yang memperkenalkan operasi transfer berdasarkan penetapan mesh pengguna. Hal ini mencakup:
- Dorong UnassignOp dalam panggilan mpmd jika hasil UnassignOp ditetapkan nanti di penerima panggilan.
- Mengganti AssignOp dari UnassignOp dengan TransferOp.
- Tetapkan penambahan ke mesh yang menggunakan dan perkenalkan transfer jika ada penambahan tanpa mesh di antara fragmen.
-mpmd-map-input-output-to-mesh
Menetapkan mesh ke input dan output fungsi.
Membuat kartu yang memetakan input/output fungsi ke mesh berdasarkan penetapan mesh yang ditentukan pengguna.
Untuk argumen input, lulus ini:
- Mentransmisikan tensor input yang harus diletakkan pada mesh ke tensor mesh.
- Memperbarui tanda tangan fungsi.
- Menambahkan mpmd.unassign sebelum tensor digunakan.
Untuk argumen output, penerusan ini menambahkan mpmd.assign sebelum tensor ditampilkan dan memperbarui tanda tangan fungsi.
Persyaratan: Setiap indeks input/output valid dan setiap mesh yang dipetakan adalah mesh yang valid dalam topologi.
Opsi
-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
Menetapkan mesh ke operasi yang ditentukan pengguna.
Membuat kartu yang secara opsional menetapkan mpmd.named_tensor ke
Assign(Unassign(%v)) (bergantung pada apakah ada entri di assignment), dan untuk
memetakan setiap named_computation ke mesh, menggunakan pemetaan yang ditentukan pengguna antara
named_computation dan nama mesh. Artinya, setiap
named_computation diganti dengan Fragment dan AssignOps dibuat untuk operand
dan UnassignOps untuk hasil Fragment ini. Pola Assign(Unassign(%v)) yang kini diperkenalkan ditulis ulang menjadi Transfer(%v).
Tidak ada operasi named_computation/named_tensor setelah langkah ini.
Persyaratan: semua named_computations dan named_tensors harus berada di tingkat teratas fungsi.
Opsi
-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
Menyederhanakan input dan output operasi komputasi bernama.
Menyederhanakan setiap komputasi bernama secara independen. Secara khusus, aplikasi ini:
- menghapus duplikat hasil, dan nilai kembalian yang sesuai;
- menghapus duplikat operand, dan argumen blok yang sesuai;
- menghapus hasil yang operand kembaliannya yang sesuai adalah argumen blok dari op;
- menghapus operand yang argumen blok terkaitnya tidak lagi digunakan (atau tidak pernah digunakan sejak awal); dan
- menghapus hasil yang tidak digunakan.
- menggantikan pola
arg -> stablehlo.optimization_barrier -> returndalam komputasi bernama dengan polaarg -> return, sehingga memungkinkan penyederhanaan lebih lanjut.
-mpmd-validate-named-ops-in-mpmd-func
Memvalidasi bahwa operasi bernama hanya di-nesting dalam fungsi mpmd.
Memvalidasi bahwa NamedComputationOp dan NamedTensorOp hanya di-nesting dalam fungsi mpmd, yaitu fungsi dengan atribut topologi.