इस दस्तावेज़ में, हम अनुवादक के लिए एक विकल्प को लागू करने और की समीक्षा करने के दिशा-निर्देशों के बारे में बताते हैं. हमने जान-बूझकर कुछ सहायक ऐक्शन आइटम शामिल किए हैं जो पुष्टि करने वाले और टाइप अनुमान से जुड़े हैं. साथ ही, इन कार्रवाई से दूसरी चीज़ों को बेहतर बनाने के साथ-साथ इंटरप्रेटर को लागू करने में भी मदद मिलेगी.
ऑपरेटर को लागू करते समय
- साफ़ तौर पर लिखित टेस्टिंग की रणनीति (पीआर जानकारी में) उपलब्ध कराएं. इस की तरह, पुष्टि करने, टाइप के अनुमान के तरीकों, और उनसे जुड़े टेस्ट की समीक्षा करते समय, इसे रेफ़रंस के तौर पर इस्तेमाल करें. समीक्षक इस बात की दोबारा जांच करेगा कि ब्यौरा विस्तार से लिखा है या नहीं.
- लागू करने में होने वाली मुश्किल जानकारी और फ़ंक्शन में हो सकने वाली कमियों के बारे में जानने के लिए, hlo_evaluator से संपर्क करें.
- अगर आपको कोई गड़बड़ी मिलती है या कोई ऐसी सुविधा नहीं मिलती है जो सॉफ़्टवेयर से जुड़ी नहीं है, तो संबंधित सॉफ़्टवेयर कॉम्पोनेंट के लिए टिकट फ़ाइल करें.
ऑपरेटर को लागू करने के बाद
StablehloOps.td में:
- पक्का करें कि Op के ODS में
summary
, स्टैंडर्ड फ़ॉर्मैट के मुताबिक हो. (इससे जुड़ा टिकट) ओडीएस और खास जानकारी के बीच के अंतर को पहचानने के लिए, ऑपरेटर
XyzOp
के लिएxyz_cn
याxyz_in
फ़ॉर्मैट वाले कंस्ट्रेंट लेबल (जैसे किCn
याIn
) से जुड़ी टिप्पणियां जोड़ें. इस उदाहरण में बताया गया है कि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*/ .... ); );
- पक्का करें कि Op के ODS में
TypeInference.cpp और StablehloOps.cpp में:
- उन टिप्पणियों को मिटाएं जिनमें "इन प्रॉपर्टी की पुष्टि करें: ..." जैसा कुछ लिखा हो.
- ऑपरेटर
XyzOp
के लिए,xyz_cn
याxyz_in
फ़ॉर्मैट में दिए गए कंस्ट्रेंट लेबल (जैसे किCn
याIn
) के बारे में बताने वाली टिप्पणियां जोड़ें. इससे यह पता किया जा सकेगा कि पुष्टि करने वाले और आकार के फ़ंक्शन के कौनसे हिस्से, स्पेसिफ़िकेशन में बताई गई पाबंदियों के हिसाब से हैं.- एक से ज़्यादा कंस्ट्रेंट लेबल वाली टिप्पणी करना या एक ही कंस्ट्रेंट लेबल वाली
कई टिप्पणियां करना ठीक है. यह सब इस बात पर निर्भर करता है कि
पाबंदियां कैसे लागू की जाती हैं. अगर लगातार कई पाबंदियां हैं, तो उन्हें
xyz_cn...xyz_cm, xyz_in...xyz_jn
के तौर पर शामिल करें. - अगर लागू करने की प्रोसेस और स्पेसिफ़िकेशन में बताई गई पाबंदियों में अंतर है, तो पक्का करें कि इस अंतर को दिखाने वाली कोई खुली समस्या हो.
- एक से ज़्यादा कंस्ट्रेंट लेबल वाली टिप्पणी करना या एक ही कंस्ट्रेंट लेबल वाली
कई टिप्पणियां करना ठीक है. यह सब इस बात पर निर्भर करता है कि
पाबंदियां कैसे लागू की जाती हैं. अगर लगातार कई पाबंदियां हैं, तो उन्हें
अनुवादक टेस्ट में:
interpret_<op_mnemonic>.mlir
नाम की फ़ाइल जोड़ें.- जांच करने के दिशा-निर्देशों का पालन करके, जांच का डेटा लिखें.
testdata डायरेक्ट्री में:
- जोड़े गए नए ऑपरेशन के तहत आने वाले बंद किए गए टेस्ट को चलाएं.
- जांच में पास हो जाने पर,
RUN-DISABLED
कोRUN
में बदलकर उन्हें चालू करें. - अगर सटीक मेल न खाने के अलावा, किसी और वजह से जांच नहीं हो पाती है, तो लागू करने/जांच करने की प्रोसेस को ठीक करें.
- पूरी तरह मेल न खाने के लिए, टेस्ट को
RUN-DISABLED(#1278)
के साथ टैग करें (अगर पहले से ऐसा नहीं किया गया है).
ops_stablehlo.mlir में:
- पक्का करें कि पुष्टि करने वाले और टाइप के अनुमान के तरीकों में हर कंस्ट्रेंट के लिए कम से कम एक टेस्ट (पॉज़िटिव या नेगेटिव) हो. ओडीएस में शामिल कंस्ट्रेंट की जांच नहीं की जाएगी. ज़्यादातर ये टेस्ट नेगेटिव होंगे. इसमें यह टेस्ट किया जाएगा कि कंस्ट्रेंट के थ्रेशोल्ड पास नहीं हैं या पॉज़िटिव नहीं हैं. इससे यह टेस्ट किया जाता है कि अनुमानित आकार सही है या नहीं.
- पक्का करें कि जांच के तहत आने वाले ऑप से जुड़े सभी टेस्ट एक साथ रखे गए हों.
- पक्का करें कि जांच के तहत आने वाले ऑप से जुड़े सभी टेस्ट,
CHECK-LABEL
लाइट वाले मैक्रो से पहले जोड़े गए हों. - ऑपरेटर
XyzOp
के लिए फ़ंक्शन टेस्टिंग कंस्ट्रेंटCn
,Im
वगैरह के लिए,xyz_cn_im_...
फ़ॉर्मैट का इस्तेमाल करके, टेस्ट के फ़ंक्शन का नाम चुनें. अगर प्रस्तावित फ़ॉर्मैट लागू नहीं होता है, तो मौजूदा नाम ही रखें. - ऊपर दिया गया चरण पूरा होने के बाद, ऑपरेटर के जांच से जुड़े सभी जांच को फ़ंक्शन के नाम के आधार पर वर्णमाला के क्रम में लगाएं.
- तब तक टेस्ट जोड़ते रहें, जब तक कि ccov सेल में 90% से ज़्यादा कवरेज न दिखे.
infer_stablehlo.mlir में:
- पक्का करें कि इस फ़ाइल में, आकार के अनुमान की जांच से जुड़ी सभी पाबंदियां मौजूद हों. साथ ही, नाम रखने के लिए ऊपर बताए गए दिशा-निर्देशों का पालन करें.
- ops_stablehlo.mlir फ़ाइल से किसी भी आकार के अनुमान की जांच को इस फ़ाइल में ले जाएं.
spec.md में:
- "उदाहरण" सेक्शन में,
interpret_<op_mnemonic>.mlir
का लिंक जोड़ें (जैसे, ज़्यादा उदाहरण). - पक्का करें कि खास जानकारी में सिर्फ़ एक उदाहरण हो.
- पक्का करें कि खास जानकारी में दिया गया उदाहरण, जांच से जुड़े दिशा-निर्देशों के मुताबिक हो.
- पक्का करें कि खास उदाहरण की जांच से जुड़ी जानकारी समझ में आए.
- पक्का करें कि खास जानकारी का उदाहरण वही है जो ओडीएस में मौजूद है.
- "उदाहरण" सेक्शन में,
status.md में:
- "अनुवादक" कॉलम को
yes
पर अपडेट करें.
- "अनुवादक" कॉलम को