تعريفات OpInterface

ShardableDataFlowOpInterface (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
                  })

يشتمل هذا الخيار custom_op على نوعين لحواف تدفق البيانات، حواف (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::ArrayRef<mlir::sdy::TensorShardingAttr> getBlockArgumentEdgeOwnerShardings();

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

setBlockArgumentEdgeOwnerSharding

void setBlockArgumentEdgeOwnerSharding(unsigned index, mlir::sdy::TensorShardingAttr sharding);

تُستخدَم لضبط sharding لمالك الحافة الخاصة بوسيطة الحظر باستخدام index المحدَّد.

setBlockArgumentEdgeOwnerShardings

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

تُعدِّل shardings لجميع مالكي حواف وسيطة الكتلة.

getOpResultEdgeOwnerShardings

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

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

setOpResultEdgeOwnerSharding

void setOpResultEdgeOwnerSharding(unsigned index, mlir::sdy::TensorShardingAttr sharding);

تُستخدَم لضبط sharding لمالك الحافة الخاصة بنتيجة العملية باستخدام index المحدّد.

setOpResultEdgeOwnerShardings

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

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

getBlockArgumentEdgeOwners

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

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

getOpResultEdgeOwners

mlir::ResultRange getOpResultEdgeOwners();

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

getEdgeSources

mlir::SmallVector<mlir::Value> getEdgeSources(mlir::Value target);

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

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 (ShardingRuleOpInterface)

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

الطرق:

getShardingRule

mlir::sdy::OpShardingRuleAttr getShardingRule();

تعرِض هذه السمة قاعدة التجزئة لعملية التنفيذ.