-mpmd-copy-topology-from-main

نسخ التصميم من الدالة الرئيسية إلى الدوال التي تشير إليها mpmd.call

تنسخ هذه السمة سمة الطوبولوجيا من الدالة الرئيسية إلى أي دالة يتم الرجوع إليها بواسطة mpmd.call. يؤدي ذلك أيضًا إلى ضبط مستوى رؤية mpmd.call على "خاص" لتجنُّب الخلط بينه وبين دالة نقطة الدخول.

-mpmd-enforce-input-output-equisharding

تفرض قيودًا على التقسيم المتساوي لوظائف MPMD.

تفرض هذه السمة قيودًا على التجزئة المتساوية للإدخال والإخراج في دوال MPMD من خلال تقديم TransferOps عند الضرورة.

الخيارات

-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.

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

-mpmd-infer-mesh-assign-mesh-func-leaves

_تعيين شبكة لكل عملية حسابية غير مستخدَمة، ولكل ناتج دالة، ولكل إدخال دالة باستخدام تحليل use_set وsrcset

تُعيّن عملية التمرير هذه الشبكات إلى أوراق بنية الدالة (أي نتائج العمليات الحسابية غير المستخدَمة، ووسيطات الدالة غير المستخدَمة، ومخرجات الدالة) من خلال إنشاء AssignOps أو تغيير النوع، وذلك باستخدام معلومات use_set وsrc_set.

نتعامل أيضًا مع بعض القيم الوسيطة كعناصر فرعية لأغراض التحليل. وهي: يتم التعامل مع معاملات mpmd.reduce وmpmd.broadcast على أنّها عناصر فرعية، وسيتم إنشاء زوج assign-unassign عليها.

سيؤدي هذا التعيين إلى محو use_set لجميع العمليات غير الطرفية، لأنّ الاستخدامات التي تمّت إضافة تعليقات توضيحية إليها سابقًا ستصبح قديمة لأنّ استنتاج عمليات reduce سيغيّر use_set لبعض القيم: لا يكون الانتشار الأوّلي لـ use_set على علم بعمليات reduce، ولكن بعد أن استنتجنا عمليات reduce، سيصبح الانتشار مختلفًا.

سيتعذّر إنشاء هذه البطاقة، وسيتم عرض أخطاء، إذا لم تتم تعبئة مجموعات الاستخدام والمصادر بشكل صحيح لعمليات الأوراق.

الشرط المسبق: يحتوي كل عملية على src-set غير فارغ، أو نستنتج عمليات النقل.

الخيارات

-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

تُعيِّن شبكة للمدخلات والمخرجات وفقًا لقيود تعيين المدخلات والمخرجات.

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

يُرجى العِلم أنّ هذا يضمن أن يكون الإدخال على الشبكة نفسها، بغض النظر عمّا إذا كان سيتم نقله لاحقًا إلى شبكات أخرى. ولكن هذا يعني أنّه يجب عدم تنفيذ populate-src-set بعد هذه العملية.

المتطلبات:

  • بالنسبة إلى أي إدخال i لدالة نقطة الدخول التي قد تكون جزءًا من قيد التعيين المتساوي: يجب أن يكون i من النوع MeshTensorType، أو أن يكون لديه مجموعة استخدام محددة جيدًا.
  • بالنسبة إلى أي ناتج o من دالة نقطة الدخول قد يكون جزءًا من قيد التعيين المتساوي: يجب أن يكون نوع o هو MeshTensorType، أو أن تكون مجموعات المصدر والاستخدام محددة جيدًا.

حيث تتضمّن مجموعة الاستخدام المحدّدة جيدًا لقيمة ما جميع الشبكات المتداخلة التي تم تعيين القيمة لها (بشكل متعدٍّ) من خلال عمليات mpmd.assign وليس أي شبكة متداخلة أخرى. يتضمّن src-set المحدّد جيدًا جميع الشبكات المتداخلة التي يُسمح بتخزين المتّجه متعدّد الأبعاد فيها، ولا يتضمّن أي شبكة أخرى.

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

الخيارات

-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

تحويل عمليات التصغير المشروحة إلى عمليات تصغير mpmd وتسوية سلاسل عمليات التصغير

يحوّل عمليات الاختزال التي تمّت إضافة تعليقات توضيحية إليها إلى عمليات اختزال متوازية ومتعدّدة البيانات (MPMD)، كما يسطّح سلاسل عمليات الاختزال هذه.

في الرموز:

x = add(w0, w1) {mpmd.reduce = #mpmd.reduce} y = add(x, w2) {mpmd.reduce = #mpmd.reduce} ~~> r = mpmd.reduce(w0,w1,w2)

الخيارات

-infer-cross-mesh-reductions : Whether to infer cross-mesh reductions. Will be enabled by default once stable.

-mpmd-infer-mesh-finalize

تُطبَّق عملية التنظيف النهائية بعد استنتاج شبكة الأنماط.

الخيارات

-infer-transfers : Whether to create transfers when needed, instead of erroring.

-mpmd-infer-mesh-populate-src-set

_تهيئة src_set لـ UnassignOps ووسيطات الدالة ونشر set.

تعمل هذه الخطوة على إعداد src_set ونشره، ما يؤدي إلى ملء الرسم البياني بمعلومات src_set.

شرط مسبق: لكي تتضمّن وسيطات الدالة src_sets، يجب ملء use_set.

التهيئة: يتم ضبط src_set الخاص بـ UnassignOp على الشبكة المتداخلة التي يتم تعيينها إليها. يتم ضبط src_set لوسيطة دالة على use_set.

الانتشار: تنتشر src_sets للأمام من المعامِلات إلى العملية نفسها، مع أخذ التقاطع بين المعامِلات. ولمزيد من التفاصيل، يمكنك الاطّلاع على PropagateSrcSet.

-mpmd-infer-mesh-populate-use-set

_Initializes the use_set for AssignOps and propagates the useset.

تؤدي هذه الخطوة إلى بدء استخدام use_set ونشره بشكل عكسي، ما يؤدي إلى ملء الرسم البياني بمعلومات use_set.

الإعداد الأوّلي: يتم ضبط مجموعة use_set الخاصة بـ AssignOp على الشبكة التي يتم تعيينها إليها.

الانتشار: تنتشر use_sets بشكل عكسي من المستخدمين إلى العملية نفسها، مع أخذ اتحاد المستخدمين. إنّ use_set لعملية ما هو اتحاد use_sets الخاصة بمستخدميها حسب التعريف، لأنّ use_set هي مجموعة الاستخدامات المتعدية.

-mpmd-infer-mesh-rewrite-using-analysis

_إعادة كتابة العمليات وفقًالمجموعة الاستخدام

تُعيّن هذه العملية عمليات بدون شبكة من خلال تضمينها في أجزاء، وذلك باستخدام تحليلَي use_set وsrc_set.

تزيل هذه الطريقة أيضًا السمتَين use_set وsrc_set كجزء من عملية التنظيف، لأنّه لم يعُد هناك حاجة إلى عمليات التحليل بعد ذلك.

الشرط المسبق: كل عملية لها مجموعة استخدام، أي أنّ التحليل مكتمل. الشرط المسبق: يتم استخدام كل وسيطة لدالة غير نقطة دخول مرة واحدة على الأقل من خلال عملية غير إنهاء.

TODO: jupvfranco - consider renaming this pass given that it doesn't depend on the analysis so much anymore.

الخيارات

-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

يتحقّق من عدم الحاجة إلى عمليات نقل إضافية لتحديد شبكة الربط.

تؤكّد هذه الحالة إمكانية تعيين الشبكة لجميع العمليات التي لا تتضمّن شبكة بدون الحاجة إلى عمليات نقل إضافية.

بالنسبة إلى العمليات غير المستندة إلى شبكة والتي لا تكون عمليات دالة، يحدث خطأ في الحالات التالية:

  1. use_set غير مضمّن في src_set لعملية معيّنة، أي أنّ عملية نقل مطلوبة.

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

الخيارات

-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

_تتحقّق من أنّ كل عملية بدون شبكة تتضمّن مجموعة src غير فارغة.

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

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

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

الشرط المسبق: يجب تحويل عمليات تقليل الشبكات المتداخلة لتقليل عدد العمليات قبل تنفيذ هذه الخطوة.

الخيارات

-error-limit : The number of errors to emit. Set to -1 to emit all errors. Cannot be 0.

-mpmd-inline-nested-user-exposed-ops

_تضمين أي عملية mpmd معروضة للمستخدمين ومضمّنة فيعملية حسابية مسماة

تضمين أي عملية named_computation أو named_tensor أو broadcast أو reduce متداخلة في عملية named_computation، مع التأكّد من أنّ عملية تعيين الشبكة (عند تحديدها) تتطابق مع عملية التعيين في العنصر الرئيسي

الخيارات

-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

استنساخ العمليات غير المهمة خارج العمليات الحسابية المسماة:

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

لا تغيّر هذه البطاقة الحساب المسمّى على الإطلاق.

-mpmd-introduce-transfers

إنشاء عمليات نقل بيانات استنادًا إلى مهام شبكة المستخدمين

تنشئ هذه السمة بطاقة تعرّف عمليات النقل استنادًا إلى عمليات تعيين شبكة المستخدمين. يشمل ذلك ما يلي:

  1. إرسال UnassignOp إلى استدعاءات mpmd إذا تم تعيين نتيجة UnassignOp لاحقًا في الدالة المستدعاة
  2. يستبدل AssignOp في UnassignOp بـ TransferOp.
  3. عيِّن الإضافة إلى الشبكة المستهلكة وأدخِل عملية نقل إذا كانت هناك إضافة غير شبكية بين الأجزاء.

-mpmd-map-input-output-to-mesh

تعيين شبكات لمدخلات الدالة ومخرجاتها

تُنشئ هذه العقدة بطاقة تمرير تربط مدخلات/مخرجات الدالة بالشبكات، مع تحديد مهمة شبكة من قِبل المستخدم.

بالنسبة إلى وسيطات الإدخال، يجب أن تستوفي البطاقة ما يلي:

  1. تحويل موترات الإدخال التي يجب وضعها على شبكة إلى موتر شبكة
  2. تعديل توقيع الدالة
  3. تضيف هذه السمة mpmd.unassign قبل استخدام الموتر.

بالنسبة إلى وسيطات الإخراج، تضيف هذه العملية mpmd.assign قبل عرض الموتر ويتم تعديل توقيع الدالة.

المتطلبات: يجب أن يكون كل فهرس إدخال/إخراج صالحًا، وأن يكون كل شكل شبكي تم ربطه صالحًا في المخطط الطوبولوجي.

الخيارات

-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

تُستخدَم لربط الشبكات بالعمليات التي يحدّدها المستخدم.

تنشئ هذه الدالة بطاقة مع تعيين mpmd.named_tensor بشكل اختياري إلى Assign(Unassign(%v)) (يعتمد ذلك على ما إذا كان هناك إدخال في assignment)، وإلى ربط كل named_computation بشبكة متداخلة، وذلك باستخدام عملية ربط يحدّدها المستخدم بين named_computations وأسماء الشبكات المتداخلة. وهذا يعني استبدال كل named_computation بـ Fragment وإنشاء AssignOps للمعاملات وUnassignOps لنتائج هذه Fragments. تتم إعادة كتابة النمط Assign(Unassign(%v)) الذي تم تقديمه الآن إلى Transfer(%v). لن تكون هناك عمليات named_computation/named_tensor بعد هذه الخطوة.

تتطلّب: أن تكون جميع named_computations وnamed_tensors في المستوى الأعلى من الدالة.

الخيارات

-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

تبسيط المدخلات والمخرجات لعمليات الحساب المسماة:

يبسّط كل عملية حسابية مسماة بشكل مستقل. وعلى وجه الخصوص، فإنّها:

  • إزالة النتائج المكرّرة وقيم العائد المقابلة لها
  • يزيل التكرار من المعاملات ووسيطات الحظر المقابلة لها
  • تزيل النتائج التي يكون عامل التشغيل المقابل لها عبارة عن وسيط للدالة البرمجية؛
  • يزيل المعامِلات التي لم يعُد هناك أي استخدامات لوسيطة الحظر المقابلة (أو لم يكن هناك أي استخدامات لها في البداية)
  • يزيل النتائج غير المستخدَمة.
  • يستبدل النمط arg -> stablehlo.optimization_barrier -> return ضمن عملية حسابية مسماة بالنمط arg -> return، ما يتيح تبسيطًا إضافيًا.

-mpmd-validate-named-ops-in-mpmd-func

تتحقّق هذه السمة من أنّ العمليات المُسمّاة تكون متداخلة فقط في دوال mpmd.

تتحقّق هذه السمة من أنّ NamedComputationOp وNamedTensorOp مضمّنتان فقط في دوال mpmd، أي الدوال التي تتضمّن سمة طوبولوجيا.