StableHLO अनुवादक की चेकलिस्ट

इस दस्तावेज़ में, हम उन दिशा-निर्देशों के बारे में खास जानकारी दे रहे हैं जो अनुवादक के लिए ऑपरेट करें. हमने जान-बूझकर कुछ सहायक कार्रवाइयां शामिल की हैं पुष्टि करने वाले और टाइप के अनुमान से जुड़े आइटम, जिनसे यह पता चलता हो कि किस तरह आगे बढ़ना है साथ ही, इंटरप्रेटर की सुविधा लागू की जा सकती है.

सेशन लागू करते समय

  1. टेस्ट के लिए साफ़ तौर पर लिखित रणनीति दी गई हो (पीआर के ब्यौरे में) इसके समान इसका इस्तेमाल करें पुष्टि और टाइप के अनुमान की समीक्षा करते समय, रेफ़रंस के तौर पर और संबंधित परीक्षणों के बारे में बताया है. समीक्षक इस बात की दोबारा जांच करेगा कि वर्णन व्यापक है.
  2. सलाह लें hlo_evaluator की जांच करें.
  3. अगर आपको कोई गड़बड़ी मिलती है, तो इससे जुड़े सॉफ़्टवेयर कॉम्पोनेंट के लिए टिकट फ़ाइल करें या उसका फ़ंक्शन मौजूद न हो.

सेशन लागू करने के बाद

  1. StablehloOps.td में:

    1. पक्का करें कि सेशन के ओडीएस में मौजूद summary, स्टैंडर्ड फ़ॉर्मैट के हिसाब से हो. (इससे मिलता-जुलता टिकट)
    2. कंस्ट्रेंट लेबल (जैसे कि Cn या In) का रेफ़रंस देने वाली टिप्पणियां जोड़ें विशिष्टता xyz_cn या xyz_in फ़ॉर्मैट में, सेशन XyzOp के लिए, ओडीएस में कंस्ट्रेंट और स्पेसिफ़िकेशन के बीच तालमेल. कॉन्टेंट बनाने नीचे दिए गए उदाहरण में, कंस्ट्रेंट लेबल को टिप्पणियों के तौर पर जोड़ने का तरीका बताया गया है mmir 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) का रेफ़रंस देने वाली टिप्पणियां जोड़ें पहचान करने के लिए, सेशन XyzOp के लिए, xyz_cn या xyz_in फ़ॉर्मैट में स्पेसिफ़िकेशन पुष्टि करने वाले और आकार फ़ंक्शन के कौनसे हिस्से किससे जुड़े हैं की शर्तों को पूरा करते हैं.
      1. एक से ज़्यादा कंस्ट्रेंट लेबल वाली टिप्पणी होना ठीक है या कई टिप्पणियां एक ही कंस्ट्रेंट लेबल वाली. यह सब इस पर निर्भर करता है सीमाओं को कैसे लागू किया जाता है. अगर लगातार कंस्ट्रेंट होते हैं, तो उन्हें xyz_cn...xyz_cm, xyz_in...xyz_jn में छोटा करें.
      2. अगर कंस्ट्रेंट के बीच कोई मैच नहीं होता है लागू करने के लिए उपयोग करते हैं, तो पक्का करें कि इस अंतर को दिखाने वाली एक खुली समस्या है.
  3. इंटरप्रेटर टेस्ट में:

    1. <op_mnemonic>.mlir नाम की फ़ाइल जोड़ें.
    2. जांच के दिशा-निर्देशों के मुताबिक जांच लिखें.
  4. टेस्टडेटा डायरेक्ट्री में:

    1. नई जोड़ी गई कार्रवाई के तहत आने वाले सभी बंद टेस्ट चलाएं.
    2. अगर जांच में पास हो जाता है, तो RUN-DISABLED को RUN में बदलकर उन्हें चालू करें.
    3. अगर सटीक जानकारी के मेल न खाने के अलावा, किसी दूसरी वजह से जांच नहीं हो पाती है, तो लागू/जांच करता है.
    4. सटीक मिलान के लिए, जाँच को RUN-DISABLED(#1278) से टैग करें (अगर पहले से नहीं किया गया है).
  5. ops_stablehlo.mlir में:

    1. पक्का करें कि हर एक टेस्ट के लिए कम से कम एक टेस्ट (पॉज़िटिव या नेगेटिव) हो पुष्टि करने वाले और टाइप के अनुमान के तरीकों में कंस्ट्रेंट; कंस्ट्रेंट ओडीएस में शामिल ऐप्लिकेशन की जांच नहीं की जाएगी. ये टेस्ट ज़्यादातर नेगेटिव होंगे, जांच करके बताना चाहते हैं कि सीमाएं पूरी नहीं होती या पॉज़िटिव नहीं होतीं, अनुमानित आकार सही है.
    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. stablehlo/tests/interpret/<op_mnemonic>.mlir में लिंक जोड़ें से लेकर "उदाहरण" तक सेक्शन (उदाहरण के लिए, ज़्यादा उदाहरण).
    2. पक्का करें कि खास जानकारी में सिर्फ़ एक उदाहरण हो.
    3. पक्का करें कि शर्त का उदाहरण, जांच के दिशा-निर्देशों का पालन करता हो.
    4. पक्का करें कि खास जानकारी के उदाहरण की जांच की जा सकती हो, ताकि उसे समझा जा सके.
    5. पक्का करें कि स्पेसिफ़िकेशन का उदाहरण, ओडीएस में दिए गए उदाहरण से मेल खाता हो.
  8. status.md में:

    1. "अनुवादक" अपडेट करें कॉलम yes.