قائمة التحقق من الترجمة الفورية في مكتبة StableHLO

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

أثناء تنفيذ العملية

  1. قدِّم استراتيجية اختبار مكتوبة بوضوح (في وصف طلب المراجعة) تشبه هذه لاستخدامها كمرجع أثناء مراجعة أسلوبَي التحقّق من الصحة واستنتاج النوع، والاختبارات المقابلة. سيتحقّق المُراجع من أنّ الوصف شامل.
  2. يمكنك الرجوع إلى hlo_evaluator لتحديد تفاصيل عملية التنفيذ الصعبة والثغرات المحتملة في الوظائف.
  3. يمكنك إرسال طلبات الدعم لمكونات البرامج المعنيّة إذا واجهت أي أخطاء أو وظائف غير متوفّرة.

بعد تنفيذ العملية

  1. في StablehloOps.td:

    1. تأكَّد من أنّ summary في ملف ODS الخاص بالعملية يتبع التنسيق العادي. (تذكرة ذات صلة)
    2. أضِف تعليقات تشير إلى تصنيفات القيود (مثل Cn أو In) من المواصفات بالتنسيق xyz_cn أو xyz_in، لعملية التشغيل XyzOp، لتحديد التطابق بين القيود في ODS والمواصفات. يوضّح المثال التالي كيفية إضافة تصنيفات القيود كتعليقات بجانب mlir Traits و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*/
            ....
         );
      );
      
  2. في TypeInference.cpp وStablehloOps.cpp:

    1. احذف التعليقات التي تشير إلى عبارات مثل "التحقّق من السمات التالية: ...".
    2. أضِف تعليقات تشير إلى تصنيفات القيود (مثل Cn أو In) من المواصفة بالتنسيق xyz_cn أو xyz_in، لعملية op XyzOp، لتحديد أجزاء مدقّقي الصحة ودوالّ الأشكال التي تتوافق مع القيود الواردة في المواصفة.
      1. من المقبول أن يتضمّن التعليق تصنيفات قيود متعددة أو أن يتضمّن تعليقات متعددة تتضمّن تصنيف القيود نفسه. يعتمد ذلك على كيفية تنفيذ القيود. إذا كانت هناك قيود متتالية، اجمعها على النحو التالي: xyz_cn...xyz_cm, xyz_in...xyz_jn.
      2. في حال عدم تطابق القيود بين القيود المفروضة على عملية التنفيذ والقيود المفروضة في المواصفات، يجب التأكّد من أنّ هناك مشكلة مفتوحة تعكس هذا التناقض.
  3. في اختبارات المترجم الفوري:

    1. أضِف ملفًا باسم <op_mnemonic>.mlir.
    2. اكتب الاختبارات باتّباع إرشادات الاختبار.
  4. في دليل testdata:

    1. يمكنك إجراء أي اختبارات غير مفعّلة تشملها العملية التي تمت إضافتها حديثًا.
    2. إذا اجتازت الاختبارات، فعِّلها من خلال تحويل RUN-DISABLED إلى RUN.
    3. إذا تعذّر اجتياز أحد الاختبارات لسبب آخر غير عدم تطابق الدقة، عليك إصلاح عملية التنفيذ أو الاختبار.
    4. في حال عدم تطابق الدقة، يمكنك وضع علامة RUN-DISABLED(#1278) على الاختبار (إذا لم يسبق لك ذلك).
  5. في ops_stablehlo.mlir:

    1. تأكَّد من توفّر اختبار واحد على الأقل (إيجابي أو سلبي) لكل قيد في أدوات التحقّق وطرق استنتاج النوع. ولن يتم اختبار القيود المشمولة في ODS. ستكون هذه الاختبارات في الغالب سلبية، لاختبار عدم استيفاء القيود أو إيجابية، لاختبار صحة الشكل المستنتج.
    2. تأكَّد من وضع جميع الاختبارات المتعلّقة بالعملية التي يتم اختبارها معًا.
    3. تأكَّد من أنّه تم prepended جميع الاختبارات المرتبطة بالعملية التي يتم اختبارها باستخدام CHECK-LABEL lit macro.
    4. اختَر اسم الدالة للاختبارات باستخدام التنسيق xyz_cn_im_... لقيود اختبار الدالة Cn وIm وما إلى ذلك لعملية التشغيل XyzOp. في الحالات التي لا يسري فيها التنسيق المقترَح، احتفظ بالاسم الحالي.
    5. بعد اكتمال الخطوة أعلاه، يجب ترتيب جميع الاختبارات المرتبطة بالعملية التي يتم اختبارها أبجديًا استنادًا إلى اسم الدالة.
    6. استمِر في إضافة الاختبارات إلى أن يعرض ccov تغطية بنسبة >= 90% للعملية.
  6. في infer_stablehlo.mlir:

    1. تأكَّد من توفّر جميع القيود المتعلّقة باختبارات الاستنتاج من الشكل في هذا الملف، مع اتّباع إرشادات التسمية نفسها المذكورة أعلاه.
    2. انقل أي اختبارات لاستنتاج الشكل من ملف ops_stablehlo.mlir إلى هذا الملف.
  7. في spec.md:

    1. أضِف رابطًا يؤدي إلى stablehlo/tests/interpret/<op_mnemonic>.mlir في قسم "أمثلة" (مثل مزيد من الأمثلة).
    2. تأكَّد من أنّ المواصفة تتضمّن مثالاً واحدًا فقط.
    3. تأكَّد من أنّ مثال المواصفات يتّبع إرشادات الاختبار.
    4. تأكَّد من إمكانية تفسير نموذج المواصفات.
    5. تأكَّد من أنّ مثال المواصفات هو نفسه الوارد في ملف ODS.
  8. في status.md:

    1. عدِّل عمود "المترجم" إلى yes.