สำเนียง 'mpmd'

การดำเนินการ

mpmd.assign (mpmd::AssignOp)

มอบหมายการดำเนินการ

ไวยากรณ์:

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

กำหนด Tensor ในเครื่องให้กับ Mesh เป็นแบบจำลองที่จำลองอย่างเต็มรูปแบบภายใน Mesh นั้น

นี่คือการดำเนินการชั่วคราวที่ใช้เมื่อลดการดำเนินการ Jax เพื่อเปลี่ยนจากประเภทในเครื่องเป็นประเภท Mesh ระบบจะนำการดำเนินการเหล่านี้ออกในระหว่างการนำเข้า เมื่ออินพุตและผลลัพธ์ของการดำเนินการฟังก์ชันกลายเป็นเทนเซอร์แบบเมช

ชื่อ Mesh ของประเภทผลลัพธ์ควรสอดคล้องกับ Mesh ใน โทโพโลยี และประเภทส่วนกลางควรเหมือนกับประเภทตัวถูกดำเนินการ

ต้นทางของ Assign Op คือต้นทางของ Mesh เช่น named_computation, mesh inference เป็นต้น

ลักษณะ: AlwaysSpeculatableImplTrait, HasParent<::mlir::func::FuncOp, ForOp>

อินเทอร์เฟซ: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

ผลกระทบ: MemoryEffects::Effect{}

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
origin::mlir::StringAttrแอตทริบิวต์สตริง

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensor เทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็น

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
result ประเภท Tensor ของ Mesh

mpmd.broadcast (mpmd::BroadcastOp)

การออกอากาศ

ไวยากรณ์:

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

อนุญาตให้โอน (หรือจำลอง) Tensor ใน Mesh ใดก็ได้ที่มีการใช้ Tensor นั้น เมื่อใดก็ตามที่มีการโอน ต้นทางของการโอนคือตำแหน่งปัจจุบันของตัวถูกดำเนินการ

ลักษณะ: AlwaysSpeculatableImplTrait, SameOperandsAndResultType

อินเทอร์เฟซ: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)

ผลกระทบ: MemoryEffects::Effect{}

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensor เทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็น

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
result เทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็น

mpmd.call (mpmd::CallOp)

ฟังก์ชันการโทรเฉพาะ MPMD

ไวยากรณ์:

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

การดำเนินการเรียกใช้ฟังก์ชัน มีประโยชน์ในการรวมเนื้อหาของการวนซ้ำในการประกาศฟังก์ชันเพื่อลดขนาดโค้ด เป็นต้น

อินเทอร์เฟซ: ArgAndResultAttrsOpInterface, CallOpInterface, SymbolUserOpInterface

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
callee::mlir::FlatSymbolRefAttrแอตทริบิวต์อ้างอิงสัญลักษณ์แฟลต

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensors variadic ของเทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็นหรือประเภทเทนเซอร์แบบเมช

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
«ไม่มีชื่อ» variadic ของเทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็นหรือประเภทเทนเซอร์แบบเมช

mpmd.for (mpmd::ForOp)

สำหรับผู้ให้บริการ

แสดงผลลัพธ์ของการเรียกใช้ฟังก์ชันเนื้อหาตามจำนวนการวนซ้ำที่แน่นอน โดยมีดัชนีการวนซ้ำในเนื้อหา

คุณระบุปัจจัยการคลายลูปที่ไม่บังคับ ซึ่งต้องหารจำนวนการวนซ้ำได้ เพื่อคลายลูปเนื้อหาของ Op ตามปัจจัยนั้นได้ กล่าวคือ สำหรับ ปัจจัยการคลายลูป N ระบบจะจำลองเนื้อหาเพื่อสร้างสำเนา N รายการ และลดจำนวน การวนซ้ำลงด้วยปัจจัย 1/N สำเนาแต่ละรายการยกเว้นรายการแรกจะใช้ผลลัพธ์ของสำเนาก่อนหน้าแทนอาร์กิวเมนต์ของบล็อก และระบบจะคูณดัชนีการวนซ้ำด้วยปัจจัยการคลี่ออกและเพิ่มค่าหลังจากสำเนาทุกรายการ

ตัวดำเนินการ for สามารถยอมรับและแสดงผลประเภทใดก็ได้ แต่ TypeID ของตัวดำเนินการเหล่านี้ ต้องเหมือนกัน เช่น ประเภท Tensor ทั้งหมดหรือประเภท Mesh MPMD ทั้งหมด เป็นต้น ซึ่ง ช่วยให้เราใช้การดำเนินการในระดับต่างๆ ได้ โดยใช้การติดตั้งใช้งานและการแปลงร่วมกัน

ลักษณะ: HLO_PairwiseSameOperandAndResultType, RecursiveMemoryEffects, RecursivelySpeculatableImplTrait, SingleBlockImplicitTerminator<ReturnOp>, SingleBlock

อินเทอร์เฟซ: ConditionallySpeculatable, LoopLikeOpInterface, OpAsmOpInterface, ShardableDataFlowOpInterface

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
iterations::mlir::IntegerAttrแอตทริบิวต์จำนวนเต็มแบบ 32 บิตที่ไม่มีเครื่องหมาย
unroll_factor::mlir::IntegerAttrแอตทริบิวต์จำนวนเต็มแบบ 32 บิตที่ไม่มีเครื่องหมาย

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensors variadic ของประเภทที่ไม่ใช่โทเค็น

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
results variadic ของประเภทที่ไม่ใช่โทเค็น

mpmd.fragment (mpmd::FragmentOp)

การดำเนินการกับ Fragment

กำหนดการคำนวณ เช่น บล็อกของการดำเนินการ ให้กับ Mesh ที่เฉพาะเจาะจงในโทโพโลยี MPMD ซึ่งมีจุดประสงค์เพื่อดำเนินการเป็นส่วนย่อยของโปรแกรม SPMD แต่ละรายการ

โดยจะรับและส่งคืนเฉพาะเทนเซอร์ของเมชที่กำหนดให้กับเมชเดียวกันกับที่กำหนดให้กับ Fragment

ชื่อ Mesh ของ Fragment ควรตรงกับ Mesh ในโทโพโลยี

Fragment ประกอบด้วยรายการต้นทาง ซึ่งก็คือข้อมูลเมตาที่มีข้อมูลเกี่ยวกับ named_computation ต้นฉบับที่สร้าง Fragment นี้ และ staged_id ที่กำหนดiff เป็น Fragment ที่ผู้ใช้กำหนดเอง กล่าวคือ มีรายการต้นทางที่ไม่ว่างเปล่า ส่วน in_shardings ที่ไม่บังคับจะระบุการแบ่งกลุ่มของอาร์กิวเมนต์บล็อกของ Fragment ซึ่งสอดคล้องกับตัวถูกดำเนินการ out_shardings ที่ไม่บังคับจะระบุการแบ่งกลุ่มของผลลัพธ์

ภูมิภาคของ Fragment ไม่ควรมีตัวแปรอิสระ และประเภทของอาร์กิวเมนต์แต่ละบล็อกและค่าที่ส่งคืนในภูมิภาคคือประเภทเทนเซอร์ส่วนกลางของเทนเซอร์ตาข่ายที่เกี่ยวข้อง

ลักษณะ: HasParent<::mlir::func::FuncOp, ForOp>, IsolatedFromAbove, RecursiveMemoryEffects, RecursivelySpeculatableImplTrait, SingleBlockImplicitTerminator<ReturnOp>, SingleBlock

อินเทอร์เฟซ: ConditionallySpeculatable, ShardableDataFlowOpInterface

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
origin::mlir::ArrayAttrอาร์เรย์ของข้อมูลต้นทาง
mesh_name::mlir::StringAttrแอตทริบิวต์สตริง
stage_id::mlir::IntegerAttrแอตทริบิวต์จำนวนเต็มแบบไม่มีเครื่องหมาย 64 บิต
in_shardings::mlir::sdy::TensorShardingPerValueAttrการแบ่งเทนเซอร์ตามตัวถูกดำเนินการ/ผลลัพธ์ของ Op
out_shardings::mlir::sdy::TensorShardingPerValueAttrการแบ่งเทนเซอร์ตามตัวถูกดำเนินการ/ผลลัพธ์ของ Op

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
inputs variadic ของประเภทเทนเซอร์แบบเมชหรือโทเค็น

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
results variadic ของประเภทเทนเซอร์แบบเมชหรือโทเค็น

mpmd.fragment_call (mpmd::FragmentCallOp)

การดำเนินการเรียกใช้ Fragment

แสดงถึงการเรียกฟังก์ชันที่มีเนื้อหาของส่วนย่อย MPMD กล่าวคือ การคำนวณที่กำหนดให้กับ Mesh ที่เฉพาะเจาะจงในโทโพโลยี MPMD ซึ่งมีจุดประสงค์เพื่อดำเนินการเป็นส่วนย่อยของโปรแกรม SPMD แต่ละรายการ

ชื่อเมชของ Fragment ควรตรงกับเมชในโทโพโลยีของฟังก์ชันที่ครอบคลุม และรูปร่างเมชนั้นควรตรงกับรูปร่างของฟังก์ชันที่เรียก

ต้นทางระบุการคำนวณที่ตั้งชื่อโดยผู้ใช้ซึ่งมีส่วนทำให้เกิดการเรียกใช้ ส่วนนี้ เช่น ผ่านการผสาน

ประเภทอินพุตและผลลัพธ์ของฟังก์ชันของฟังก์ชันที่เรียกต้องเป็นประเภทเทนเซอร์ในเครื่อง ของเทนเซอร์ตาข่ายที่สอดคล้องกันของตัวถูกดำเนินการและผลลัพธ์ของ Op นี้ ตามลำดับ

ตัวอย่าง

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

ลักษณะ: HasParent<::mlir::func::FuncOp>, MemRefsNormalizable

อินเทอร์เฟซ: ArgAndResultAttrsOpInterface, CallOpInterface, SymbolUserOpInterface

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
origin::mlir::ArrayAttrอาร์เรย์ของข้อมูลต้นทาง
mesh_name::mlir::StringAttrแอตทริบิวต์สตริง
callee::mlir::FlatSymbolRefAttrแอตทริบิวต์อ้างอิงสัญลักษณ์แฟลต

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensors variadic ของประเภทเทนเซอร์ของเมช

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
«ไม่มีชื่อ» variadic ของประเภทเทนเซอร์ของตาข่าย

mpmd.named_computation (mpmd::NamedComputationOp)

การดำเนินการขอบเขตที่มีชื่อ

จัดกลุ่มการคำนวณ เช่น บล็อกของการดำเนินการ และตั้งชื่อให้พร้อม จำนวนการทรานสโพสผ่านแอตทริบิวต์ UserOrigin NamedComputation นี้สามารถใช้เพื่อกำหนด Mesh ให้กับการคำนวณใน MPMD หรือเพื่อการเพิ่มประสิทธิภาพ

จำนวนการสลับเปลี่ยน (ค่าเริ่มต้น=0) ระบุว่าการคำนวณที่มีชื่อ เกิดจากการแปลงการสลับเปลี่ยน JAX AD จำนวนหนึ่งหรือไม่

รีเจียนของ Op ไม่ควรมีตัวแปรอิสระ และประเภทของ อาร์กิวเมนต์ของแต่ละบล็อกและค่าที่แสดงผลในรีเจียนต้องเหมือนกับ ประเภทของอินพุตและประเภทการแสดงผลของ Op

ลักษณะ: IsolatedFromAbove, RecursiveMemoryEffects, RecursivelySpeculatableImplTrait, SingleBlockImplicitTerminator<ReturnOp>, SingleBlock

อินเทอร์เฟซ: ConditionallySpeculatable

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
origin::mlir::mpmd::UserOriginAttrแหล่งที่มาของการคำนวณที่ผู้ใช้ระบุ

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensors variadic ของเทนเซอร์ที่มีอันดับของจำนวนลอยตัว 4/6/8/16/32/64 บิตหรือบูลีนหรือจำนวนเต็ม 2/4/8/16/32/64 บิตหรือประเภทจำนวนเชิงซ้อนที่มีองค์ประกอบจำนวนลอยตัว 32/64 บิตหรือค่าที่กำหนดปริมาณจำนวนเต็มต่อเทนเซอร์หรือโทเค็น

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
results variadic ของเทนเซอร์ที่มีอันดับของจำนวนลอยตัว 4/6/8/16/32/64 บิตหรือบูลีนหรือจำนวนเต็ม 2/4/8/16/32/64 บิตหรือประเภทเชิงซ้อนที่มีองค์ประกอบจำนวนลอยตัว 32/64 บิตหรือค่าที่กำหนดปริมาณจำนวนเต็มต่อเทนเซอร์หรือโทเค็น

mpmd.named_tensor (mpmd::NamedTensorOp)

กำหนด Tensor ให้กับ Mesh

ไวยากรณ์:

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

การดำเนินการระบุตัวตนที่เชื่อมโยงผลลัพธ์ของเทนเซอร์กับชื่อที่กำหนด คุณสามารถใช้ NamedTensor นี้เพื่อกำหนด Mesh ให้กับ Tensor ใน MPMD ได้

ลักษณะ: AlwaysSpeculatableImplTrait, SameOperandsAndResultType

อินเทอร์เฟซ: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)

ผลกระทบ: MemoryEffects::Effect{}

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
name::mlir::StringAttrแอตทริบิวต์สตริง

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensor เทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็น

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
result เทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็น

mpmd.reduce (mpmd::ReduceOp)

การลดการทำงานแบบข้ามเมช

ไวยากรณ์:

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

ช่วยให้ลด Tensor ใน Mesh ต่างๆ แล้ว ออกอากาศไปยังที่ใดก็ตามที่ต้องใช้

ลักษณะ: AlwaysSpeculatableImplTrait, SameOperandsAndResultType

อินเทอร์เฟซ: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

ผลกระทบ: MemoryEffects::Effect{}

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
reduction::mlir::mpmd::ReductionAttrแสดงถึงการลดลง

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensors variadic ของเทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็น

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
result เทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็น

mpmd.return (mpmd::ReturnOp)

การดำเนินการ mpmd.return จะสิ้นสุดภูมิภาคที่แนบมากับ mpmd region-based ops เป็นฟังก์ชันที่รับอาร์กิวเมนต์ได้หลายตัว: รับรายการค่าเป็นอาร์กิวเมนต์ ซึ่งมีประเภทเป็นอะไรก็ได้ (แต่ต้องเป็นประเภทเดียวกัน เช่น AnyTensor) และ จึงนำไปใช้ซ้ำได้ในระดับต่างๆ ของสแต็ก IR ของ MPMD

ไวยากรณ์:

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

ลักษณะ: AlwaysSpeculatableImplTrait, Terminator

อินเทอร์เฟซ: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

ผลกระทบ: MemoryEffects::Effect{}

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
results variadic ของประเภทที่ไม่ใช่โทเค็น

mpmd.transfer (mpmd::TransferOp)

การดำเนินการโอน

ไวยากรณ์:

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

โอน Tensor แบบกระจายจาก Mesh หนึ่งไปยังอีก Mesh หนึ่ง

ชื่อเมชของประเภทตัวถูกดำเนินการและประเภทผลลัพธ์ควรสอดคล้องกับเมชในโทโพโลยี และประเภทส่วนกลางควรเหมือนกัน

ลักษณะ: AlwaysSpeculatableImplTrait, HasParent<::mlir::func::FuncOp>

อินเทอร์เฟซ: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShardingRuleOpInterface

ผลกระทบ: MemoryEffects::Effect{}

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensor ประเภท Tensor ของ Mesh

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
result ประเภท Tensor ของ Mesh

mpmd.unassign (mpmd::UnassignOp)

การยกเลิกการมอบหมาย

ไวยากรณ์:

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

ยกเลิกการกำหนด Tensor ที่จำลองแบบเต็มจาก Mesh

นี่คือการดำเนินการชั่วคราวที่นำมาใช้เมื่อลดการดำเนินการ Jax เพื่อเปลี่ยนจากประเภทในเครื่องเป็นประเภท Mesh ระบบจะนำการดำเนินการเหล่านี้ออกในระหว่างการนำเข้า เมื่ออินพุตและผลลัพธ์ของการดำเนินการฟังก์ชันกลายเป็นเทนเซอร์แบบเมช

ชื่อ Mesh ของประเภทตัวถูกดำเนินการควรสอดคล้องกับ Mesh ใน โทโพโลยี และประเภทส่วนกลางควรเหมือนกับประเภทผลลัพธ์

ลักษณะ: AlwaysSpeculatableImplTrait, HasParent<::mlir::func::FuncOp, ForOp>, InferTensorType

อินเทอร์เฟซ: ConditionallySpeculatable, InferShapedTypeOpInterface, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)

ผลกระทบ: MemoryEffects::Effect{}

แอตทริบิวต์

แอตทริบิวต์ประเภท MLIRคำอธิบาย
origin::mlir::StringAttrแอตทริบิวต์สตริง

ตัวถูกดำเนินการ:

ตัวถูกดำเนินการ คำอธิบาย
tensor ประเภท Tensor ของ Mesh

ผลลัพธ์:

ผลลัพธ์ คำอธิบาย
result เทนเซอร์ของค่าประเภทที่ไม่ใช่โทเค็น

Attributes

MeshWithOriginsAttr

Mesh กับต้นกำเนิด

ไวยากรณ์:

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

พารามิเตอร์ ได้แก่

พารามิเตอร์ ประเภท C++ คำอธิบาย
mesh_name ::llvm::StringRef mesh_name
ต้นกำเนิด ::llvm::ArrayRef<OriginAttr> ต้นกำเนิด

MeshesWithOriginsAttr

รายการตาข่ายพร้อมต้นทาง

ไวยากรณ์:

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

พารามิเตอร์ ได้แก่

พารามิเตอร์ ประเภท C++ คำอธิบาย
value ::llvm::ArrayRef<MeshWithOriginsAttr>

NamedMeshAttr

อุปกรณ์ 2 เครื่องที่มีชื่อและ Mesh

ไวยากรณ์:

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

พารามิเตอร์ ได้แก่

พารามิเตอร์ ประเภท C++ คำอธิบาย
name ::llvm::StringRef name
Mesh sdy::MeshAttr Mesh

OriginAttr

แหล่งที่มาของการกำหนด Mesh

ไวยากรณ์:

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

ต้นทางของการกำหนด Mesh

origin_label คือป้ายกำกับที่มนุษย์อ่านได้สำหรับต้นทาง โดยมีวัตถุประสงค์เพื่อใช้ในการแก้ไขข้อบกพร่อง

พารามิเตอร์ ได้แก่

พารามิเตอร์ ประเภท C++ คำอธิบาย
origin_label ::llvm::StringRef origin_label

ReductionAttr

แสดงถึงการลดลง

ไวยากรณ์:

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

พารามิเตอร์ ได้แก่

พารามิเตอร์ ประเภท C++ คำอธิบาย
reduction_type ::mlir::mpmd::ReductionType enum ของประเภท ReductionType

TopologyAttr

โทโพโลยีของเมชที่มีชื่อ

ไวยากรณ์:

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

พารามิเตอร์ ได้แก่

พารามิเตอร์ ประเภท C++ คำอธิบาย
meshes ::llvm::ArrayRef<NamedMeshAttr> โทโพโลยีเมช

UserOriginAttr

แหล่งที่มาของการคำนวณที่ผู้ใช้ระบุ

ไวยากรณ์:

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

พารามิเตอร์ ได้แก่

พารามิเตอร์ ประเภท C++ คำอธิบาย
userName ::mlir::StringAttr
transposeCount int64_t

ประเภท

MeshTensorType

ประเภทของเมชเทนเซอร์

กำหนด RankedTensorType ให้กับ SPMD Mesh ที่เฉพาะเจาะจงใน โทโพโลยี MPMD ของ Mesh ในโปรแกรม ประเภทนี้มีการแบ่งส่วนที่ไม่บังคับซึ่งระบุวิธีแบ่งส่วน Tensor เทียบกับ Mesh SPMD หากไม่มีการชาร์ดดิ้ง ระบบจะจำลองแบบ Tensor อย่างเต็มรูปแบบ

พารามิเตอร์ ได้แก่

พารามิเตอร์ ประเภท C++ คำอธิบาย
mesh_name ::llvm::StringRef ชื่อ Mesh
ranked_tensor_type ::mlir::RankedTensorType ประเภท Tensor ที่มีอันดับ
ชาร์ดดิ้ง ::mlir::sdy::TensorShardingAttr
memory_kind ::mlir::StringAttr

Enum

ReductionType

แอตทริบิวต์ประเภทการลด

เคส

สัญลักษณ์ ค่า สตริง
kNone 0 ไม่มี
kAdd 1 เพิ่ม
kMax 2 สูงสุด
kMin 3 นาที
kMul 4 mul
kOr 5 หรือ
kAnd 6 และ

EdgeNodeType

Edge node type enum

เคส

สัญลักษณ์ ค่า สตริง
OPERAND 0 ตัวถูกดำเนินการ
ผลลัพธ์ 1 ผลลัพธ์

PropagationDirection

การแจงนับทิศทางการเผยแพร่

เคส

สัญลักษณ์ ค่า สตริง
ไม่มี 0 ไม่มี
ส่งต่อ 1 ส่งต่อ
ย้อนกลับ 2 ย้อนกลับ
ทั้งสองฝ่าย 3 ทั้งสองฝ่าย

ReductionOp

Reduction op enum

เคส

สัญลักษณ์ ค่า สตริง
SUM 0 รวม
สูงสุด 1 สูงสุด
นาที 2 นาที