वीएचएलओ के बारे में जानकारी के लिए, vhlo.md
देखें.
काम न करने वाले बदलावों को शामिल करना
साथ ही, जिन बदलावों से, Google के साथ काम करने की सुविधा पर असर पड़ता है उन्हें आरएफ़सी की प्रोसेस से गुज़रना होगा. इसमें किसी सुविधा को जोड़ना, बंद करना या उसका नाम बदलना शामिल है. आरएफ़सी को मंज़ूरी मिलने के बाद, ये चरण पूरे करने होंगे:
1. Version.h में वर्शन नंबर बढ़ाना और वर्शन लॉग अपडेट करना
VHLO ऑपरेशन, एट्रिब्यूट, टाइप या कन्वर्ज़न अपडेट करने से पहले, Version.h में माइनर वर्शन नंबर बढ़ाएं और VhloDialect.td में वर्शन लॉग अपडेट करें
जोड़ी गई कोई भी नई VHLO सुविधा, इस बंप किए गए वर्शन का इस्तेमाल करेगी. उदाहरण के लिए, 0.10.0 --> 0.11.0
को बंप करने के बाद, VhloOps.td में एक नया ऑपरेशन, इनका इस्तेमाल करेगा:
VHLO_Op<"abs_v2", "0.11.0", "current">
2. ज़रूरी वीएचएलओ लागू करना और कन्वर्ज़न जोड़ना
किसी नई सुविधा को इंटिग्रेट करने के लिए ज़रूरी कोड अलग-अलग होगा. हालांकि, ज़्यादातर मामलों में इनमें बदलाव करना होगा:
- नए ऑपरेशन के लिए:
- VhloOps.td में ऑपरेशन जोड़ें
- StablehloLegalizeToVhlo.cpp में StableHLO → VHLO कन्वर्ज़न जोड़ें
- VhloLegalizeToStablehlo.cpp में VHLO → StableHLO कन्वर्ज़न जोड़ें
- मौजूदा ऑपरेशन के नए वर्शन के लिए:
- VhloOps.td में ऑपरेशन जोड़ें
- MapStablehloToVhlo.h में, StableHLO से VHLO मैपिंग को अपडेट करें
- VhloToVersion.cpp में, नए और पुराने ओपी वर्शन के बीच कन्वर्ज़न जोड़ें
- नए टाइप या एट्रिब्यूट के लिए:
- टाइप को VhloTypes.td में या एट्रिब्यूट को VhloAttrs.td में जोड़ें
- StablehloLegalizeToVhlo.cpp में StableHLO → VHLO कन्वर्ज़न जोड़ें
- VhloLegalizeToStablehlo.cpp में, VHLO → StableHLO कन्वर्ज़न जोड़ें
3. यूनिट टेस्ट जोड़ना या अपडेट करना
किसी सुविधा में किए गए ऐसे बदलाव के लिए, योगदान देने वाला व्यक्ति ज़िम्मेदार होता है जो काम नहीं करता. साथ ही, वह सुविधा के यूनिट टेस्ट के सकारात्मक और नकारात्मक, दोनों नतीजों के लिए ज़िम्मेदार होता है. इसके अलावा, वह सुविधा के साथ काम करने के यूनिट टेस्ट के लिए भी ज़िम्मेदार होता है.
कंपैटिबिलिटी यूनिट की जांच में stablehlo_legalize_to_vhlo.mlir को अपडेट किया जाता है, ताकि यह पक्का किया जा सके कि StableHLO की दोतरफ़ा यात्रा के लिए VHLO के नए वर्शन के साथ-साथ, आगे और पीछे के काम करने की जांच की ज़रूरत पड़ सकती है. उदाहरण के लिए, अगर Y = X - 1
के साथ X
वर्शन में नया ऑपरेटर जोड़ा जा रहा है, तो vhlo_to_version_downgrade_invalid.0_Y_0.mlir
जैसी टेस्ट फ़ाइल जोड़ें. इससे पता चलता है कि X
वर्शन से पहले, ऑपरेटर काम नहीं करता. अगर किसी ऑपरेशन का नया वर्शन जोड़ना है, तो vhlo_to_version_downgrade.0_Y_0.mlir
जैसी टेस्ट फ़ाइल जोड़ें. इससे पता चलता है कि ऑपरेशन को डाउनग्रेड किया जा सकता है.
अगर आपके ऑप में डिफ़ॉल्ट विशेषताएं हैं, तो ऐसे टेस्ट शामिल करें जो दिखाते हैं कि डिफ़ॉल्ट को क्रम से लगाया गया है और सही तरीके से डीसीरियलाइज़ किया गया है.
4. वर्शन वाला सीरियलाइज़ेशन टेस्ट जोड़ें
stablehlo_legalize_to_vhlo.mlir
में टेस्ट जोड़ने के बाद, सबसे बड़े वर्शन वाली वर्शन वाली टेस्ट फ़ाइल को नए वर्शन वाली नई फ़ाइल में कॉपी करें. साथ ही, उस फ़ाइल में नए टेस्ट भी जोड़ें. आपको stablehlo-translate
का इस्तेमाल करके, इससे जुड़ी बाइटकोड फ़ाइल भी बनानी होगी:
export TARGET_VERSION=1.X.0
export TARGET_FILENAME=${TARGET_VERSION//./_}
stablehlo-translate --serialize --target=$TARGET_VERSION --strip-debuginfo stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir > stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir.bc