في هذا المستند، نلخّص الإرشادات المتعلقة بتنفيذ ملف ترجمة ومراجعته. لقد أدرجنا عمدًا بعض عناصر الإجراء الداعمة المرتبطة بأدوات التحقّق من الصحة واستنتاج النوع، وذلك بهدف تحقيق تقدّم في هذين المجالين إلى جانب تنفيذ المترجم.
أثناء تنفيذ العملية
- قدِّم استراتيجية اختبار مكتوبة بوضوح (في وصف طلب المراجعة) تشبه هذه لاستخدامها كمرجع أثناء مراجعة أسلوبَي التحقّق من الصحة واستنتاج النوع، والاختبارات المقابلة. سيتحقّق المُراجع من أنّ الوصف شامل.
- يمكنك الرجوع إلى hlo_evaluator لتحديد تفاصيل عملية التنفيذ الصعبة والثغرات المحتملة في الوظائف.
- يمكنك إرسال طلبات الدعم لمكونات البرامج المعنيّة إذا واجهت أي أخطاء أو وظائف غير متوفّرة.
بعد تنفيذ العملية
في StablehloOps.td:
- تأكَّد من أنّ
summary
في ملف ODS الخاص بالعملية يتبع التنسيق العادي. (تذكرة ذات صلة) أضِف تعليقات تشير إلى تصنيفات القيود (مثل
Cn
أوIn
) من المواصفات بالتنسيقxyz_cn
أوxyz_in
، لعملية التشغيلXyzOp
، لتحديد التطابق بين القيود في ODS والمواصفات. يوضّح المثال التالي كيفية إضافة تصنيفات القيود كتعليقات بجانب mlirTraits
وTypeConstraints
. تشير الملاحظةxyz_c4
إلى القيود المحدّدة في فئةStableHLO_FooOp
(مثلStableHLO_ShapedInterfaceOp
وStableHLO_UnaryElementwiseOp
StableHLO_Op
وما إلى ذلك).def StableHLO_XyzOp: StableHLO_FooOp<"xyz", [Trait1, Trait2 /*xyz_c1, xyz_c2*/, InferTensorType /*xyz_c3*/]> { /*xyz_c4*/ ... let summary = "Xyz operation"; let arguments = (ins 1DTensorOf<[HLO_Float]>:$a, /*xyz_c5, xyz_i1*/ HLO_Tensor:$b, /*xyz_i2*/ .... ); );
- تأكَّد من أنّ
في TypeInference.cpp وStablehloOps.cpp:
- احذف التعليقات التي تشير إلى عبارات مثل "التحقّق من السمات التالية: ...".
- أضِف تعليقات تشير إلى تصنيفات القيود (مثل
Cn
أوIn
) من المواصفة بالتنسيقxyz_cn
أوxyz_in
، لعملية opXyzOp
، لتحديد أجزاء مدقّقي الصحة ودوالّ الأشكال التي تتوافق مع القيود الواردة في المواصفة.- من المقبول أن يتضمّن التعليق تصنيفات قيود متعددة أو أن يتضمّن
تعليقات متعددة تتضمّن تصنيف القيود نفسه. يعتمد ذلك على
كيفية تنفيذ القيود. إذا كانت هناك قيود متتالية،
اجمعها على النحو التالي:
xyz_cn...xyz_cm, xyz_in...xyz_jn
. - في حال عدم تطابق القيود بين القيود المفروضة على عملية التنفيذ والقيود المفروضة في المواصفات، يجب التأكّد من أنّ هناك مشكلة مفتوحة تعكس هذا التناقض.
- من المقبول أن يتضمّن التعليق تصنيفات قيود متعددة أو أن يتضمّن
تعليقات متعددة تتضمّن تصنيف القيود نفسه. يعتمد ذلك على
كيفية تنفيذ القيود. إذا كانت هناك قيود متتالية،
اجمعها على النحو التالي:
-
- أضِف ملفًا باسم
<op_mnemonic>.mlir
. - اكتب الاختبارات باتّباع إرشادات الاختبار.
- أضِف ملفًا باسم
في دليل testdata:
- يمكنك إجراء أي اختبارات غير مفعّلة تشملها العملية التي تمت إضافتها حديثًا.
- إذا اجتازت الاختبارات، فعِّلها من خلال تحويل
RUN-DISABLED
إلىRUN
. - إذا تعذّر اجتياز أحد الاختبارات لسبب آخر غير عدم تطابق الدقة، عليك إصلاح عملية التنفيذ أو الاختبار.
- في حال عدم تطابق الدقة، يمكنك وضع علامة
RUN-DISABLED(#1278)
على الاختبار (إذا لم يسبق لك ذلك).
-
- تأكَّد من توفّر اختبار واحد على الأقل (إيجابي أو سلبي) لكل قيد في أدوات التحقّق وطرق استنتاج النوع. ولن يتم اختبار القيود المشمولة في ODS. ستكون هذه الاختبارات في الغالب سلبية، لاختبار عدم استيفاء القيود أو إيجابية، لاختبار صحة الشكل المستنتج.
- تأكَّد من وضع جميع الاختبارات المتعلّقة بالعملية التي يتم اختبارها معًا.
- تأكَّد من أنّه تم prepended جميع الاختبارات المرتبطة بالعملية التي يتم اختبارها باستخدام
CHECK-LABEL
lit macro. - اختَر اسم الدالة للاختبارات باستخدام التنسيق
xyz_cn_im_...
لقيود اختبار الدالةCn
وIm
وما إلى ذلك لعملية التشغيلXyzOp
. في الحالات التي لا يسري فيها التنسيق المقترَح، احتفظ بالاسم الحالي. - بعد اكتمال الخطوة أعلاه، يجب ترتيب جميع الاختبارات المرتبطة بالعملية التي يتم اختبارها أبجديًا استنادًا إلى اسم الدالة.
- استمِر في إضافة الاختبارات إلى أن يعرض ccov تغطية بنسبة >= 90% للعملية.
-
- تأكَّد من توفّر جميع القيود المتعلّقة باختبارات الاستنتاج من الشكل في هذا الملف، مع اتّباع إرشادات التسمية نفسها المذكورة أعلاه.
- انقل أي اختبارات لاستنتاج الشكل من ملف ops_stablehlo.mlir إلى هذا الملف.
في spec.md:
- أضِف رابطًا يؤدي إلى
stablehlo/tests/interpret/<op_mnemonic>.mlir
في قسم "أمثلة" (مثل مزيد من الأمثلة). - تأكَّد من أنّ المواصفة تتضمّن مثالاً واحدًا فقط.
- تأكَّد من أنّ مثال المواصفات يتّبع إرشادات الاختبار.
- تأكَّد من إمكانية تفسير نموذج المواصفات.
- تأكَّد من أنّ مثال المواصفات هو نفسه الوارد في ملف ODS.
- أضِف رابطًا يؤدي إلى
في status.md:
- عدِّل عمود "المترجم" إلى
yes
.
- عدِّل عمود "المترجم" إلى