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();
عرض قاعدة التجزئة للعملية