لهجة 'mpmd'

العمليات

mpmd.assign (mpmd::AssignOp)

عملية التعيين

البنية:

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

تُستخدَم لتعيين موتر محلي لشبكة على أنّه مكرّر بالكامل داخل تلك الشبكة.

هذه عملية مؤقتة يتم تقديمها عند خفض عمليات jax، وذلك للانتقال من الأنواع المحلية إلى أنواع الشبكة المتداخلة. سيتم إلغاء هذه العمليات أثناء الاستيراد، عندما تصبح مدخلات عملية الدالة ونتائجها موترات شبكية.

يجب أن يتطابق اسم الشبكة لنوع النتيجة مع شبكة في المخطط الطوبولوجي، ويجب أن يكون نوعه العام مطابقًا لنوع المعامِل.

أصل عملية التعيين هو أصل الشبكة، مثل named_computation أو mesh inference أو غير ذلك.

السمات: AlwaysSpeculatableImplTrait، HasParent<::mlir::func::FuncOp, ForOp>

واجهات برمجة التطبيقات: ConditionallySpeculatable وNoMemoryEffect (MemoryEffectOpInterface)

التأثيرات: MemoryEffects::Effect{}

السمات:

السمةنوع MLIRالوصف
origin::mlir::StringAttrسمة السلسلة

المعاملات:

المُعامل الوصف
tensor متّجه متعدّد الأبعاد من أي قيم غير رمزية

النتائج:

النتيجة الوصف
result نوع متّجه الشبكة

mpmd.broadcast (mpmd::BroadcastOp)

عملية البث

البنية:

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

تتيح نقل (أو تكرار) متّجه متعدّد الأبعاد في أي شبكة متداخلة يتم استخدامه فيها. عندما يتم نقل البيانات، يكون مصدر النقل هو الموقع الجغرافي الحالي للمعامل.

السمات: AlwaysSpeculatableImplTrait، SameOperandsAndResultType

واجهات برمجة التطبيقات: ConditionallySpeculatable وInferTypeOpInterface وNoMemoryEffect (MemoryEffectOpInterface)

التأثيرات: MemoryEffects::Effect{}

المعاملات:

المُعامل الوصف
tensor متّجه متعدّد الأبعاد من أي قيم غير رمزية

النتائج:

النتيجة الوصف
result متّجه متعدّد الأبعاد من أي قيم غير رمزية

mpmd.call (mpmd::CallOp)

وظيفة الاتصال الخاصة ببرنامج "مطوّر التسويق المفضَّل"

البنية:

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

عملية استدعاء دالة مفيدة لتضمين نص التكرارات الحلقية في تعريفات الدوال، وذلك لتقليل حجم الرمز البرمجي، على سبيل المثال.

واجهات برمجة التطبيقات: ArgAndResultAttrsOpInterface وCallOpInterface وSymbolUserOpInterface

السمات:

السمةنوع MLIRالوصف
callee::mlir::FlatSymbolRefAttrسمة مرجعية للرمز المسطّح

المعاملات:

المُعامل الوصف
tensors متغيّر لوتري من موتر من أي قيم غير رمزية أو نوع موتر شبكي

النتائج:

النتيجة الوصف
«unnamed» متغيّر لوتري من موتر من أي قيم غير رمزية أو نوع موتر شبكي

mpmd.for (mpmd::ForOp)

لمشغّل الشبكة

تعرض هذه الدالة نتيجة تنفيذ دالة أساسية لعدد ثابت من التكرارات، مع توفّر فهرس التكرار في الدالة الأساسية.

يمكن تحديد عامل فك تكرار اختياري يجب أن يقسم عدد التكرارات، وذلك لفك تكرار نص العملية بهذا العامل، أي أنّه بالنسبة إلى عامل فك التكرار N، يتم تكرار النص لإنشاء N نسخة ويتم تقليل عدد التكرارات بمقدار 1/N. تستخدم كل نسخة باستثناء النسخة الأولى نتائج النسخة السابقة بدلاً من وسيطات الكتلة، ويتم ضرب فهرس التكرار في عامل التوسيع ثم زيادته بعد كل نسخة.

يمكن أن يقبل عامل التشغيل "for" أي أنواع ويعرضها، ولكن يجب أن يكون TypeID لهذه الأنواع متطابقًا، مثلاً جميع أنواع المتّجهات المتعدّدة الأبعاد أو جميع أنواع الشبكات المتداخلة MPMD وما إلى ذلك. يتيح لنا ذلك استخدام العمليّة على مستويات مختلفة، مع مشاركة عمليات التنفيذ والتحويلات.

السمات: HLO_PairwiseSameOperandAndResultType وRecursiveMemoryEffects وRecursivelySpeculatableImplTrait وSingleBlockImplicitTerminator<ReturnOp> وSingleBlock

واجهات برمجة التطبيقات: ConditionallySpeculatable وLoopLikeOpInterface وOpAsmOpInterface وShardableDataFlowOpInterface

السمات:

السمةنوع MLIRالوصف
iterations::mlir::IntegerAttrسمة عدد صحيح غير موقّع 32 بت
unroll_factor::mlir::IntegerAttrسمة عدد صحيح غير موقّع 32 بت

المعاملات:

المُعامل الوصف
tensors متغيّر من أي نوع غير رمزي

النتائج:

النتيجة الوصف
results متغيّر من أي نوع غير رمزي

mpmd.fragment (mpmd::FragmentOp)

عملية الجزء

تعيّن هذه السمة عملية حسابية، أي مجموعة من العمليات، لشبكة معيّنة في بنية MPMD، والتي من المفترض أن يتم تنفيذها كجزء فردي من برنامج SPMD.

لا يأخذ الجزء إلا موترات الشبكة التي تم تعيينها إلى الشبكة نفسها التي تم تعيين الجزء إليها، ولا يعرض إلا هذه الموترات.

يجب أن يتطابق اسم الشبكة للجزء مع شبكة في المخطط الطوبولوجي.

يتضمّن الجزء قائمة بالمصادر، أي البيانات الوصفية التي تتضمّن معلومات حول العمليات الحسابية الأصلية المسماة التي شكّلت هذا الجزء، ومعرّف staged_id محدّد إذا وفقط إذا كان جزءًا محدّدًا من قِبل المستخدم، أي أنّه يتضمّن قائمة غير فارغة بالمصادر. تحدّد السمة الاختيارية in_shardings تقسيم وسيطات الحظر الخاصة بالجزء، والتي تتوافق مع المعامِلات. تحدّد out_shardings الاختيارية تقسيم النتائج.

يجب ألا يحتوي جزء الرمز على أي متغيرات حرة، ويجب أن يكون نوع كل وسيطة من وسيطات الحظر والقيم التي يتم إرجاعها في الجزء هو نوع الموتر العام للموتر الشبكي المقابل.

السمات: 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تقسيم الموتر حسب المعامِل/نتيجة العملية
out_shardings::mlir::sdy::TensorShardingPerValueAttrتقسيم الموتر حسب المعامِل/نتيجة العملية

المعاملات:

المُعامل الوصف
inputs متغير من نوع موتر الشبكة أو الرمز المميّز

النتائج:

النتيجة الوصف
results متغير من نوع موتر الشبكة أو الرمز المميّز

mpmd.fragment_call (mpmd::FragmentCallOp)

عملية استدعاء الجزء

تمثّل هذه السمة طلبًا إلى دالة تتضمّن جزءًا من نص MPMD، أي عملية حسابية مخصّصة لشبكة معيّنة في بنية MPMD، والمقصود تنفيذها كجزء فردي من برنامج SPMD.

يجب أن يتطابق اسم الشبكة الخاصة بالجزء مع شبكة في بنية الدالة الحاضنة، ويجب أن يتطابق شكل الشبكة مع شكل الدالة المستدعاة.

يحدّد المصدر العمليات الحسابية المسماة للمستخدم التي ساهمت في طلب الجزء هذا، مثلاً من خلال الدمج.

يجب أن تكون أنواع الإدخال والنتائج للدالة التي يتم استدعاؤها هي أنواع الموتر المحلي للموترات الشبكية المقابلة لمعاملات ونتائج هذه العملية على التوالي.

مثال:

%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 of mesh tensor type

النتائج:

النتيجة الوصف
«unnamed» variadic of mesh tensor type

mpmd.named_computation (mpmd::NamedComputationOp)

عملية النطاق المُسمّى

تجمع هذه السمة عملية حسابية، أي مجموعة من العمليات، وتمنحها اسمًا وعددًا من عمليات النقل من خلال السمة UserOrigin. يمكن استخدام NamedComputation هذا لتعيين شبكة للحساب في MPMD أو للتحسينات.

يشير عدد عمليات التبديل (القيمة التلقائية=0) إلى ما إذا كان الحساب المسمّى قد تم إنتاجه من خلال عدد معيّن من عمليات تبديل JAX AD.

يجب ألا يحتوي نطاق العملية على أي متغيرات حرة، ويجب أن يكون نوع كل وسيطة من وسيطات الحظر والقيم التي تم إرجاعها في النطاق هو نفسه نوع المدخلات ونوع القيمة التي تم إرجاعها الخاص بالعملية.

السمات: IsolatedFromAbove وRecursiveMemoryEffects وRecursivelySpeculatableImplTrait وSingleBlockImplicitTerminator<ReturnOp> وSingleBlock

الواجهات: ConditionallySpeculatable

السمات:

السمةنوع MLIRالوصف
origin::mlir::mpmd::UserOriginAttrمصدر العمليات الحسابية التي يحدّدها المستخدم

المعاملات:

المُعامل الوصف
tensors متغير من متّجه متعدّد الأبعاد مرتّب من نوع عدد عائم أو منطقي أو عدد صحيح أو نوع معقّد من 4 أو 6 أو 8 أو 16 أو 32 أو 64 بت مع عناصر عدد عائم من 32 أو 64 بت أو قيم عدد صحيح كمّية لكل متّجه متعدّد الأبعاد أو رمز مميز

النتائج:

النتيجة الوصف
results متغير من متّجه متعدّد الأبعاد مرتّب من نوع عدد عائم أو منطقي أو عدد صحيح أو نوع معقّد من 4 أو 6 أو 8 أو 16 أو 32 أو 64 بت مع عناصر عدد عائم من 32 أو 64 بت أو قيم عدد صحيح كمّية لكل متّجه متعدّد الأبعاد أو رمز مميز

mpmd.named_tensor (mpmd::NamedTensorOp)

تخصيص متّجه متعدّد الأبعاد لشبكة متداخلة

البنية:

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

عملية تعريفية تربط نتيجة الموتر باسم معيّن. يمكن استخدام NamedTensor هذا لتعيين شبكة للموتر في 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)

تتيح هذه السمة اختزال متّجه متعدّد الأبعاد على مستوى شبكات متداخلة مختلفة، ثم بثه إلى أي مكان يجب استخدامه فيه.

السمات: AlwaysSpeculatableImplTrait، SameOperandsAndResultType

واجهات برمجة التطبيقات: ConditionallySpeculatable وNoMemoryEffect (MemoryEffectOpInterface)

التأثيرات: MemoryEffects::Effect{}

السمات:

السمةنوع MLIRالوصف
reduction::mlir::mpmd::ReductionAttrتشير إلى انخفاض.

المعاملات:

المُعامل الوصف
tensors متغيّر لمتّجه متعدّد الأبعاد من أي قيم غير رمزية

النتائج:

النتيجة الوصف
result متّجه متعدّد الأبعاد من أي قيم غير رمزية

mpmd.return (mpmd::ReturnOp)

تؤدي العملية mpmd.return إلى إنهاء المناطق المرتبطة بعمليات تستند إلى مناطق mpmd. وهي متغيرة العدد: تأخذ كمعلمات قائمة بالقيم التي يمكن أن تكون أنواعها أي نوع (ولكن من النوع نفسه، مثلاً AnyTensor)، وبالتالي يمكن إعادة استخدامها على مستويات مختلفة من حزمة MPMD IR.

البنية:

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

السمات: AlwaysSpeculatableImplTrait، Terminator

واجهات برمجة التطبيقات: ConditionallySpeculatable وNoMemoryEffect (MemoryEffectOpInterface)

التأثيرات: MemoryEffects::Effect{}

المعاملات:

المُعامل الوصف
results متغيّر من أي نوع غير رمزي

mpmd.transfer (mpmd::TransferOp)

عملية النقل

البنية:

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

تنقل هذه العملية موترًا موزّعًا من شبكة إلى أخرى.

يجب أن تتطابق أسماء الشبكات الخاصة بأنواع المعامِلات والنتائج مع الشبكات في المخطط الطوبولوجي، ويجب أن تكون أنواعها العامة متطابقة.

السمات: AlwaysSpeculatableImplTrait، HasParent<::mlir::func::FuncOp>

واجهات برمجة التطبيقات: ConditionallySpeculatable وNoMemoryEffect (MemoryEffectOpInterface) وShardingRuleOpInterface

التأثيرات: MemoryEffects::Effect{}

المعاملات:

المُعامل الوصف
tensor نوع متّجه الشبكة

النتائج:

النتيجة الوصف
result نوع متّجه الشبكة

mpmd.unassign (mpmd::UnassignOp)

عملية إلغاء التعيين

البنية:

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

تؤدي هذه الدالة إلى إلغاء تعيين متّجه متعدّد الأبعاد مكرّر بالكامل من شبكة متداخلة.

هذه عملية مؤقتة يتم تقديمها عند خفض عمليات jax، وذلك للانتقال من الأنواع المحلية إلى أنواع الشبكة المتداخلة. سيتم إلغاء هذه العمليات أثناء الاستيراد، عندما تصبح مدخلات عملية الدالة ونتائجها موترات شبكية.

يجب أن يتطابق اسم الشبكة لنوع المعامِل مع شبكة في المخطط الطوبولوجي، ويجب أن يكون نوعه العام مطابقًا لنوع النتيجة.

السمات: AlwaysSpeculatableImplTrait وHasParent<::mlir::func::FuncOp, ForOp> وInferTensorType

واجهات برمجة التطبيقات: ConditionallySpeculatable وInferShapedTypeOpInterface وInferTypeOpInterface وNoMemoryEffect (MemoryEffectOpInterface)

التأثيرات: MemoryEffects::Effect{}

السمات:

السمةنوع MLIRالوصف
origin::mlir::StringAttrسمة السلسلة

المعاملات:

المُعامل الوصف
tensor نوع متّجه الشبكة

النتائج:

النتيجة الوصف
result متّجه متعدّد الأبعاد من أي قيم غير رمزية

السمات

MeshWithOriginsAttr

الانسجام مع أصوله:

البنية:

#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++‎ الوصف
القيمة ::llvm::ArrayRef<MeshWithOriginsAttr>

NamedMeshAttr

جهازان باسم وشبكة Mesh

البنية:

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

المَعلمات:

المَعلمة نوع C++‎ الوصف
الاسم ::llvm::StringRef الاسم
شبكة متداخلة sdy::MeshAttr شبكة متداخلة

OriginAttr

مصدر تعيين الشبكة المتداخلة:

البنية:

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

أصل مهمة الشبكة المتداخلة

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 تعداد من النوع ReductionType

TopologyAttr

طوبولوجيا الشبكات المسماة:

البنية:

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

المَعلمات:

المَعلمة نوع C++‎ الوصف
شبكات ::llvm::ArrayRef<NamedMeshAttr> شبكات الطوبولوجيا

UserOriginAttr

مصدر العمليات الحسابية التي يحدّدها المستخدم:

البنية:

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

المَعلمات:

المَعلمة نوع C++‎ الوصف
userName ::mlir::StringAttr
transposeCount int64_t

الأنواع

MeshTensorType

نوع موتر الشبكة

تُعيّن هذه السمة RankedTensorType لشبكة SPMD معيّنة في بنية MPMD لشبكات البرنامج. يحتوي النوع على تجزئة اختيارية تحدد كيفية تجزئة الموتر بالنسبة إلى شبكة SPMD. إذا لم يكن التقسيم متوفّرًا، يتم تكرار الموتر بالكامل.

المَعلمات:

المَعلمة نوع C++‎ الوصف
mesh_name ::llvm::StringRef اسم الشبكة المتداخلة
ranked_tensor_type ::mlir::RankedTensorType نوع المتّجه المرتب
تقسيم إلى أجزاء ::mlir::sdy::TensorShardingAttr
memory_kind ::mlir::StringAttr

عمليات التعداد

ReductionType

سمة نوع التخفيض

الحالات:

الرمز القيمة سلسلة
kNone 0 لا ينطبق
kAdd 1 إضافة
kMax 2 الحد الأقصى
kMin 3 دقيقة
kMul 4 mul
kOr 5 أو
kAnd 6 و

EdgeNodeType

تعداد نوع عُقدة الحافة

الحالات:

الرمز القيمة سلسلة
OPERAND 0 المعامل
النتيجة 1 نتيجة

PropagationDirection

تعداد اتجاه الانتشار

الحالات:

الرمز القيمة سلسلة
لم يتم اختيار لون 0 لم يتم اختيار لون
FORWARD 1 FORWARD
رجوع 2 رجوع
BOTH 3 BOTH

ReductionOp

تعداد عمليات الحدّ من البيانات

الحالات:

الرمز القيمة سلسلة
SUM 0 الجمع
الحد الأقصى 1 الحد الأقصى
MIN 2 دقيقة