قائمة التحقق الخاصة بالترجمة الفورية من 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، الخاص بالعملية XyzOp، لتحديد أجزاء أدوات التحقق ودوال الأشكال التي تتوافق مع القيود في المواصفات.
      1. لا بأس في أن يكون لديك تعليق ذو تصنيفات شروط متعددة أو عدة تعليقات تحمل نفس تسمية القيد. يتوقف كل ذلك على كيفية تنفيذ القيود. في حال وجود قيود متتالية، يمكن تكثيفها كـ xyz_cn...xyz_cm, xyz_in...xyz_jn.
      2. في حال كان هناك عدم تطابق بين القيود في التنفيذ مقابل القيود الواردة في المواصفات، فتأكد من وجود مشكلة مفتوحة تعكس هذا التناقض.
  3. في اختبارات الترجمة الفورية:

    1. إضافة ملف باسم interpret_<op_mnemonic>.mlir.
    2. اكتب الاختبارات وفقًا لإرشادات الاختبار.
  4. في دليل testdata:

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

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

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

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

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