تعريفات OpInterface

CollectiveOpInterface (Sdy_CollectiveOpInterface)

واجهة لجميع العمليات الجماعية تُغلِّف هذه الفئة عمليات الحصول/الضبط الشائعة لسمة outSharding.

القيود:

  • يجب أن يتضمّن المعامل عملية تقسيم أو أن يعرض allowMissingInputSharding() قيمة "صحيح".
  • out_sharding صالحة بالنسبة إلى النوع المقابل.
  • يجب أن يكون تجزئة الم Operand والنتيجة متطابقَين إذا كانت دالة allowDifferentMeshes() تعرِض قيمة خاطئة.
  • ترتيب العنصر المُشغّل واقتسام النتائج هو نفسه.

الطرق:

getOutSharding

::mlir::sdy::TensorShardingAttr getOutSharding();

لعرض تقسيم مصفوفة الناتج لعملية جمعية.

setOutShardingAttr

void setOutShardingAttr(::mlir::sdy::TensorShardingAttr sharding);

تُستخدَم لتحديد تقسيم مصفوفة الناتج لعملية التشغيل المجمّعة.

getTensor

::mlir::TypedValue<::mlir::TensorType> getTensor();

الحصول على عامل تشغيل مصفوفة العملية الجامعة

getType

::mlir::Type getType();

الحصول على نوع نتيجة العملية المجمّعة

allowDifferentMeshes

bool allowDifferentMeshes();

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

allowMissingInputSharding

bool allowMissingInputSharding();

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

ShardableDataFlowOpInterface (Sdy_ShardableDataFlowOpInterface)

واجهة عمليات تتيح لـ shardy نشر عمليات التقسيم من خلال تدفق البيانات حواف العمليات التي تُوسّع هذه الواجهة

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

المالك هو هدف يحدّده المستخدم لجانب تدفق البيانات الذي يستخدمه أسلوب الانتشار في shardy. يمكن للمستخدم اختياره بشكل عشوائي، ولكن يجب أن يكون ثابتًا.

على سبيل المثال:

  y_1, ..., y_n = custom_op (x_1, ..., x_n)
                  ((body_arg_1,..., body_arg_n) {
                    ...
                    return return_value_1, ..., return_value_n
                  })

يحتوي الإجراء المخصّص هذا على نوعَين من حواف تدفق البيانات، وهما n حواف لكل منهما بين return_value_i (المصادر) وy_i (الأهداف) وn حواف بين x_i(المصادر) وbody_arg_i(الأهداف). في هذه الحالة، يكون مالكو الحواف نفسهم المستهدَفين.

في ما يلي مثال على عملية تتضمّن أهدافًا متعدّدة:

  y_0, ..., y_n = while (x_0, ..., x_n)
                  ((pred_arg_0,... , pred_arg_n) { ... })
                  ((body_arg_0,..., body_arg_n) {
                    ...
                    return return_value_0, ..., return_value_n
                  })

يحتوي هذا الإجراء الذي يستخدِم حلقة while على n من حواف تدفق البيانات، وتكون حواف تدفق البيانات i بين المصادر x_i وreturn_value_i والاستهدافات y_i وpred_arg_i body_arg_i.

الطرق:

getBlockArgumentEdgeOwnerShardings

mlir::SmallVector<mlir::sdy::TensorShardingAttr> getBlockArgumentEdgeOwnerShardings();

تعرِض هذه الدالة أقسام جميع مالكي حواف تدفق بيانات مَعلمة الكتلة.

setBlockArgumentEdgeOwnerShardings

void setBlockArgumentEdgeOwnerShardings(mlir::ArrayRef<mlir::sdy::TensorShardingAttr> shardings);

تُستخدَم لضبط shardings لجميع مالكي حواف وسيطة الحظر.

getOpResultEdgeOwnerShardings

mlir::SmallVector<mlir::sdy::TensorShardingAttr> getOpResultEdgeOwnerShardings();

تعرِض هذه الدالة أقسام جميع مالكي حواف تدفق بيانات نتائج العمليات.

setOpResultEdgeOwnerShardings

void setOpResultEdgeOwnerShardings(mlir::ArrayRef<mlir::sdy::TensorShardingAttr> shardings);

تُحدِّد shardings لجميع مالكي حواف نتائج op.

transformTargetSharding

mlir::sdy::TensorShardingAttr transformTargetSharding(mlir::Value target, mlir::sdy::TensorShardingAttr sharding, mlir::sdy::DataFlowShardingTransformType transformType);

تحوّل sharding الهدف استنادًا إلى transformType

يمكنك الاطّلاع على DataFlowShardingTransformType لمزيد من المعلومات.

getBlockArgumentEdgeOwners

mlir::ArrayRef<mlir::BlockArgument> getBlockArgumentEdgeOwners();

تحصل على جميع مالكي حواف وسيطة الحظر.

getOpResultEdgeOwners

mlir::ResultRange getOpResultEdgeOwners();

تحصل على جميع مالكي حواف نتائج العمليات.

getEdgeSources

mlir::SmallVector<mlir::OpOperand*> getEdgeSources(mlir::Value owner);

تحصل على مصادر حواف تدفق البيانات المحدَّدة من خلال الحافة owner.

getEdgeOwnerFromTarget

mlir::Value getEdgeOwnerFromTarget(mlir::Value target);

تحصل على المالك target لإحدى حواف تدفق البيانات استنادًا إلى target قد يكون أو قد لا يكون المالك.

getEdgeOwnerFromSource

mlir::Value getEdgeOwnerFromSource(mlir::OpOperand&source);

تحصل على مالك هدف لجانب تدفّق البيانات استنادًا إلى source.

getNonEdgeOwnerTargets

mlir::SmallVector<mlir::Value> getNonEdgeOwnerTargets(mlir::Value owner);

تحصل على استهدافات غير المالكين لجانب تدفق البيانات استنادًا إلى الحافة owner.

ShardingRuleOpInterface (Sdy_ShardingRuleOpInterface)

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

الطرق:

getShardingRule

mlir::sdy::OpShardingRuleAttr getShardingRule();

عرض قاعدة التجزئة للعملية