Dialek 'mpmd'

Operasi

mpmd.assign (mpmd::AssignOp)

Operasi penetapan

Sintaksis:

operation ::= `mpmd.assign` attr-dict $tensor `:` functional-type(operands, results)

Menetapkan tensor lokal ke mesh sebagai direplikasi sepenuhnya dalam mesh tersebut.

Ini adalah operasi sementara yang diperkenalkan saat menurunkan operasi jax, untuk berpindah dari jenis lokal ke jenis mesh. Operasi ini akan dihilangkan selama impor, saat input dan hasil operasi func menjadi tensor mesh.

Nama mesh jenis hasil harus sesuai dengan mesh dalam topologi, dan jenis globalnya harus sama dengan jenis operand.

Asal-usul operasi penugasan adalah asal-usul mesh, misalnya named_computation, inferensi mesh, dll.

Ciri-ciri: AlwaysSpeculatableImplTrait, HasParent<::mlir::func::FuncOp, ForOp>

Antarmuka: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Efek: MemoryEffects::Effect{}

Atribut:

AtributJenis MLIRDeskripsi
origin::mlir::StringAttratribut string

Operand:

Operand Deskripsi
tensor tensor nilai jenis non-token apa pun

Hasil:

Hasil Deskripsi
result jenis tensor mesh

mpmd.broadcast (mpmd::BroadcastOp)

Operasi siaran

Sintaksis:

operation ::= `mpmd.broadcast` attr-dict $tensor `:` type($tensor)

Memungkinkan tensor ditransfer (atau direplikasi) di mesh mana pun tempat tensor tersebut digunakan. Setiap kali ditransfer, asal transfer adalah lokasi operand saat ini.

Ciri-ciri: AlwaysSpeculatableImplTrait, SameOperandsAndResultType

Antarmuka: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)

Efek: MemoryEffects::Effect{}

Operand:

Operand Deskripsi
tensor tensor nilai jenis non-token apa pun

Hasil:

Hasil Deskripsi
result tensor nilai jenis non-token apa pun

mpmd.call (mpmd::CallOp)

Fungsi panggilan khusus MPMD

Sintaksis:

operation ::= `mpmd.call` $callee `(` $tensors `)` attr-dict `:` functional-type(operands, results)

Operasi panggilan fungsi. Berguna untuk membungkus isi loop dalam deklarasi fungsi untuk mengurangi ukuran kode, misalnya.

Antarmuka: ArgAndResultAttrsOpInterface, CallOpInterface, SymbolUserOpInterface

Atribut:

AtributJenis MLIRDeskripsi
callee::mlir::FlatSymbolRefAttratribut referensi simbol datar

Operand:

Operand Deskripsi
tensors variadik tensor dari nilai jenis non-token atau jenis tensor mesh

Hasil:

Hasil Deskripsi
«tanpa nama» variadik tensor dari nilai jenis non-token atau jenis tensor mesh

mpmd.for (mpmd::ForOp)

Untuk operator

Menampilkan hasil eksekusi fungsi isi untuk sejumlah iterasi tetap, dengan indeks iterasi tersedia di isi.

Faktor pembuka opsional, yang harus membagi jumlah iterasi, dapat ditentukan untuk membuka isi operasi dengan faktor tersebut, yaitu untuk faktor pembuka N, isi direplikasi untuk membuat N salinan dan jumlah iterasi dikurangi dengan faktor 1/N. Setiap salinan kecuali yang pertama menggunakan hasil salinan sebelumnya, bukan argumen blok, dan indeks iterasi dikalikan dengan faktor unroll dan diinkrementalkan setelah setiap salinan.

Operator for dapat menerima dan menampilkan jenis apa pun, tetapi TypeID-nya harus sama -- misalnya, semua jenis tensor atau semua jenis mesh MPMD, dll. Hal ini memungkinkan kita menggunakan operasi di berbagai tingkat, berbagi implementasi dan transformasi.

Ciri: HLO_PairwiseSameOperandAndResultType, RecursiveMemoryEffects, RecursivelySpeculatableImplTrait, SingleBlockImplicitTerminator<ReturnOp>, SingleBlock

Antarmuka: ConditionallySpeculatable, LoopLikeOpInterface, OpAsmOpInterface, ShardableDataFlowOpInterface

Atribut:

AtributJenis MLIRDeskripsi
iterations::mlir::IntegerAttrAtribut bilangan bulat 32-bit tanpa tanda
unroll_factor::mlir::IntegerAttrAtribut bilangan bulat 32-bit tanpa tanda

Operand:

Operand Deskripsi
tensors variadik dari jenis non-token apa pun

Hasil:

Hasil Deskripsi
results variadik dari jenis non-token apa pun

mpmd.fragment (mpmd::FragmentOp)

Operasi fragmen

Menetapkan komputasi, yaitu blok operasi, ke mesh tertentu dalam topologi MPMD, yang dimaksudkan untuk dieksekusi sebagai fragmen program SPMD individual.

Fragmen hanya mengambil dan menampilkan tensor mesh yang ditetapkan ke mesh yang sama dengan fragmen.

Nama mesh fragmen harus sesuai dengan mesh dalam topologi.

Fragmen mencakup daftar asal, yaitu metadata dengan informasi tentang named_computations asli yang membentuk fragmen ini, dan staged_id yang ditentukan iff adalah fragmen yang ditentukan pengguna, yaitu memiliki daftar asal yang tidak kosong. in_shardings opsional menentukan sharding argumen blok fragmen, yang sesuai dengan operand. out_shardings opsional menentukan shard hasil.

Region fragmen tidak boleh memiliki variabel bebas, dan jenis setiap argumen blok dan nilai yang ditampilkan di region adalah jenis tensor global dari tensor mesh yang sesuai.

Ciri: HasParent<::mlir::func::FuncOp, ForOp>, IsolatedFromAbove, RecursiveMemoryEffects, RecursivelySpeculatableImplTrait, SingleBlockImplicitTerminator<ReturnOp>, SingleBlock

Antarmuka: ConditionallySpeculatable, ShardableDataFlowOpInterface

Atribut:

AtributJenis MLIRDeskripsi
origin::mlir::ArrayAttrarray info asal
mesh_name::mlir::StringAttratribut string
stage_id::mlir::IntegerAttrAtribut bilangan bulat 64-bit tanpa tanda
in_shardings::mlir::sdy::TensorShardingPerValueAttrSharding tensor per operand/hasil operasi
out_shardings::mlir::sdy::TensorShardingPerValueAttrSharding tensor per operand/hasil operasi

Operand:

Operand Deskripsi
inputs variadik jenis tensor mesh atau token

Hasil:

Hasil Deskripsi
results variadik jenis tensor mesh atau token

mpmd.fragment_call (mpmd::FragmentCallOp)

Operasi panggilan fragmen

Mewakili panggilan ke fungsi yang menyimpan isi fragmen MPMD, yaitu komputasi yang ditetapkan ke mesh tertentu dalam topologi MPMD, yang ditujukan untuk dieksekusi sebagai fragmen program SPMD individual.

Nama mesh fragmen harus sesuai dengan mesh dalam topologi fungsi penutup, dan bentuk mesh tersebut harus cocok dengan bentuk mesh tujuan panggilan.

Asal menentukan komputasi bernama pengguna yang berkontribusi pada panggilan fragmen ini, misalnya melalui penggabungan.

Jenis input dan hasil fungsi callee harus berupa jenis tensor lokal dari tensor mesh yang sesuai dari operand dan hasil operasi ini masing-masing.

Contoh:

%2 = mpmd.fragment_call<mesh="m1",> origin=[] @my_fragment(%0, %1) :
  (m<esh>_tensor..., m<esh>_te>nsor...) - m<esh>_tensor...

Ciri-ciri: HasParent<::mlir::func::FuncOp>, MemRefsNormalizable

Antarmuka: ArgAndResultAttrsOpInterface, CallOpInterface, SymbolUserOpInterface

Atribut:

AtributJenis MLIRDeskripsi
origin::mlir::ArrayAttrarray info asal
mesh_name::mlir::StringAttratribut string
callee::mlir::FlatSymbolRefAttratribut referensi simbol datar

Operand:

Operand Deskripsi
tensors variadik jenis tensor mesh

Hasil:

Hasil Deskripsi
«tanpa nama» variadik jenis tensor mesh

mpmd.named_computation (mpmd::NamedComputationOp)

Operasi cakupan bernama

Mengelompokkan komputasi, yaitu blok operasi, dan memberinya nama serta jumlah transposisi melalui atribut UserOrigin. NamedComputation ini dapat digunakan untuk menetapkan mesh ke komputasi di MPMD atau untuk pengoptimalan.

Jumlah transpos (default=0) menunjukkan apakah komputasi bernama telah dihasilkan oleh sejumlah transformasi transpos JAX AD.

Region op tidak boleh memiliki variabel bebas, dan jenis setiap argumen blok dan nilai yang ditampilkan di region harus sama dengan jenis input dan jenis nilai yang ditampilkan op.

Ciri: IsolatedFromAbove, RecursiveMemoryEffects, RecursivelySpeculatableImplTrait, SingleBlockImplicitTerminator<ReturnOp>, SingleBlock

Antarmuka: ConditionallySpeculatable

Atribut:

AtributJenis MLIRDeskripsi
origin::mlir::mpmd::UserOriginAttrAsal komputasi yang ditentukan pengguna.

Operand:

Operand Deskripsi
tensors variadik tensor berperingkat dari float/bool 4/6/8/16/32/64-bit atau bilangan bulat/kompleks 2/4/8/16/32/64-bit dengan elemen float 32/64-bit atau nilai terkuantisasi bilangan bulat per-tensor atau token

Hasil:

Hasil Deskripsi
results variadik tensor berperingkat dari float/bool 4/6/8/16/32/64-bit atau bilangan bulat/kompleks 2/4/8/16/32/64-bit dengan elemen float 32/64-bit atau nilai terkuantisasi bilangan bulat per-tensor atau token

mpmd.named_tensor (mpmd::NamedTensorOp)

Menetapkan tensor ke mesh

Sintaksis:

operation ::= `mpmd.named_tensor` $tensor `name````=```$name attr-dict `:` type($result)

Operasi identitas yang mengaitkan hasil tensor dengan nama tertentu. NamedTensor ini dapat digunakan untuk menetapkan mesh ke tensor di MPMD.

Ciri-ciri: AlwaysSpeculatableImplTrait, SameOperandsAndResultType

Antarmuka: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)

Efek: MemoryEffects::Effect{}

Atribut:

AtributJenis MLIRDeskripsi
name::mlir::StringAttratribut string

Operand:

Operand Deskripsi
tensor tensor nilai jenis non-token apa pun

Hasil:

Hasil Deskripsi
result tensor nilai jenis non-token apa pun

mpmd.reduce (mpmd::ReduceOp)

Operasi pengurangan lintas-mesh

Sintaksis:

operation ::= `mpmd.reduce` `` $reduction attr-dict $tensors `:` functional-type(operands, results)

Memungkinkan tensor direduksi di berbagai mesh, lalu disiarkan ke tempat yang memerlukannya.

Ciri-ciri: AlwaysSpeculatableImplTrait, SameOperandsAndResultType

Antarmuka: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Efek: MemoryEffects::Effect{}

Atribut:

AtributJenis MLIRDeskripsi
reduction::mlir::mpmd::ReductionAttrMenunjukkan pengurangan.

Operand:

Operand Deskripsi
tensors variadik tensor dari nilai jenis non-token apa pun

Hasil:

Hasil Deskripsi
result tensor nilai jenis non-token apa pun

mpmd.return (mpmd::ReturnOp)

Operasi mpmd.return menghentikan region yang terlampir pada operasi berbasis region mpmd. Fungsi ini bersifat variadik: fungsi ini mengambil daftar nilai sebagai argumen yang jenisnya dapat berupa apa saja (tetapi dari jenis yang sama, misalnya AnyTensor) dan oleh karena itu dapat digunakan kembali di berbagai tingkat stack IR MPMD.

Sintaksis:

operation ::= `mpmd.return` attr-dict $results (`:` type($results)^)?

Ciri-ciri: AlwaysSpeculatableImplTrait, Terminator

Antarmuka: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

Efek: MemoryEffects::Effect{}

Operand:

Operand Deskripsi
results variadik dari jenis non-token apa pun

mpmd.transfer (mpmd::TransferOp)

Operasi transfer

Sintaksis:

operation ::= `mpmd.transfer` attr-dict $tensor `:` functional-type(operands, results)

Mentransfer tensor terdistribusi dari satu mesh ke mesh lainnya.

Nama mesh jenis operand dan hasil harus sesuai dengan mesh dalam topologi, dan jenis globalnya harus identik.

Ciri-ciri: AlwaysSpeculatableImplTrait, HasParent<::mlir::func::FuncOp>

Antarmuka: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShardingRuleOpInterface

Efek: MemoryEffects::Effect{}

Operand:

Operand Deskripsi
tensor jenis tensor mesh

Hasil:

Hasil Deskripsi
result jenis tensor mesh

mpmd.unassign (mpmd::UnassignOp)

Operasi penghapusan penetapan

Sintaksis:

operation ::= `mpmd.unassign` attr-dict $tensor `:` functional-type(operands, results)

Membatalkan penetapan tensor yang direplikasi sepenuhnya dari mesh.

Ini adalah operasi sementara yang diperkenalkan saat menurunkan operasi jax, untuk berpindah dari jenis lokal ke jenis mesh. Operasi ini akan dihilangkan selama impor, saat input dan hasil operasi func menjadi tensor mesh.

Nama mesh jenis operand harus sesuai dengan mesh dalam topologi, dan jenis globalnya harus identik dengan jenis hasil.

Ciri: AlwaysSpeculatableImplTrait, HasParent<::mlir::func::FuncOp, ForOp>, InferTensorType

Antarmuka: ConditionallySpeculatable, InferShapedTypeOpInterface, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)

Efek: MemoryEffects::Effect{}

Atribut:

AtributJenis MLIRDeskripsi
origin::mlir::StringAttratribut string

Operand:

Operand Deskripsi
tensor jenis tensor mesh

Hasil:

Hasil Deskripsi
result tensor nilai jenis non-token apa pun

Atribut

MeshWithOriginsAttr

Sesuai dengan asalnya.

Sintaksis:

#mpmd.mesh_with_origins<
  ::llvm::StringRef,   # mesh_name
  ::llvm::ArrayRef<OriginAttr>   # origins
>

Parameter:

Parameter Jenis C++ Deskripsi
mesh_name ::llvm::StringRef mesh_name
asal ::llvm::ArrayRef<OriginAttr> asal

MeshesWithOriginsAttr

Daftar mesh dengan asal-usulnya.

Sintaksis:

#mpmd.meshes_with_origins<
  ::llvm::ArrayRef<MeshWithOriginsAttr>   # value
>

Parameter:

Parameter Jenis C++ Deskripsi
nilai ::llvm::ArrayRef<MeshWithOriginsAttr>

NamedMeshAttr

Pasangan dengan nama dan Mesh.

Sintaksis:

#mpmd.named_mesh<
  ::llvm::StringRef,   # name
  sdy::MeshAttr   # mesh
>

Parameter:

Parameter Jenis C++ Deskripsi
nama ::llvm::StringRef nama
mesh sdy::MeshAttr mesh

OriginAttr

Asal penetapan mesh.

Sintaksis:

#mpmd.origin<
  ::llvm::StringRef   # origin_label
>

Asal penetapan mesh.

origin_label adalah label yang dapat dibaca manusia untuk asal. Tujuannya adalah untuk digunakan dalam proses debug.

Parameter:

Parameter Jenis C++ Deskripsi
origin_label ::llvm::StringRef origin_label

ReductionAttr

Menunjukkan pengurangan.

Sintaksis:

#mpmd.reduction<
  `none` | `add` | `max` | `min` | `mul` | `or` | `and`   # reduction_type
>

Parameter:

Parameter Jenis C++ Deskripsi
reduction_type ::mlir::mpmd::ReductionType enum jenis ReductionType

TopologyAttr

Topologi mesh bernama.

Sintaksis:

#mpmd.topology<
  ::llvm::ArrayRef<NamedMeshAttr>   # meshes
>

Parameter:

Parameter Jenis C++ Deskripsi
mesh ::llvm::ArrayRef<NamedMeshAttr> mesh topologi

UserOriginAttr

Asal komputasi yang ditentukan pengguna.

Sintaksis:

#mpmd.user_origin<
  ::mlir::StringAttr,   # userName
  int64_t   # transposeCount
>

Parameter:

Parameter Jenis C++ Deskripsi
userName ::mlir::StringAttr
transposeCount int64_t

Jenis

MeshTensorType

Jenis tensor mesh

Menetapkan RankedTensorType ke mesh SPMD tertentu dalam topologi mesh MPMD program. Jenis ini menyimpan sharding opsional yang menentukan cara tensor di-shard sehubungan dengan mesh SPMD. Jika sharding tidak ada, tensor akan direplikasi sepenuhnya.

Parameter:

Parameter Jenis C++ Deskripsi
mesh_name ::llvm::StringRef nama mesh
ranked_tensor_type ::mlir::RankedTensorType jenis tensor berperingkat
sharding ::mlir::sdy::TensorShardingAttr
memory_kind ::mlir::StringAttr

Enum

ReductionType

Atribut jenis pengurangan

Kasus:

Simbol Nilai String
kNone 0 tidak ada
kAdd 1 tambahkan
kMax 2 maks
kMin 3 mnt
kMul 4 mul
kOr 5 atau
kAnd 6 dan

EdgeNodeType

Enum jenis node edge

Kasus:

Simbol Nilai String
OPERAND 0 operand
HASIL 1 hasil

PropagationDirection

Enum arah propagasi

Kasus:

Simbol Nilai String
TIDAK ADA 0 TIDAK ADA
MAJU 1 MAJU
MUNDUR 2 MUNDUR
KEDUANYA 3 KEDUANYA

ReductionOp

Enum operasi pengurangan

Kasus:

Simbol Nilai String
SUM 0 jumlah
MAKS 1 maks
MIN 2 mnt