يُرجى الاطّلاع على vhlo.md
للحصول على معلومات عن VHLO.
المساهمة بتغييرات غير متوافقة
يجب أن تخضع جميع التغييرات التي لها تأثير في التوافق لعملية RFC. ويشمل ذلك إضافة ميزة أو إيقافها نهائيًا أو إعادة تسميتها. بعد الموافقة على RFC، يجب إكمال الخطوات التالية:
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. إضافة عمليات تنفيذ VHLO المطلوبة والإحالات الناجحة
سيختلف الرمز البرمجي الدقيق المطلوب لدمج ميزة جديدة، ولكن في معظمه، يجب تغيير ما يلي:
- بالنسبة إلى العمليات الجديدة:
- أضِف العملية في VhloOps.td.
- أضِف عملية تحويل StableHLO إلى VHLO في StablehloLegalizeToVhlo.cpp.
- أضِف عملية تحويل VHLO إلى StableHLO في VhloLegalizeToStablehlo.cpp.
- بالنسبة إلى الإصدارات الجديدة من العمليات الحالية:
- أضِف العملية في VhloOps.td.
- تعديل تعيين StableHLO إلى VHLO في MapStablehloToVhlo.h
- إضافة إحالة ناجحة بين إصدارَي العمليات الجديدة والقديمة في VhloToVersion.cpp
- بالنسبة إلى الأنواع أو السمات الجديدة:
- أضِف النوع في VhloTypes.td أو السمة في VhloAttrs.td.
- أضِف عملية تحويل StableHLO إلى VHLO في StablehloLegalizeToVhlo.cpp.
- أضِف عملية تحويل VHLO إلى StableHLO في VhloLegalizeToStablehlo.cpp.
3- إضافة / تعديل اختبارات الوحدات
يكون المساهم في التغيير غير المتوافق مسؤولاً عن اختبارات الوحدات الإيجابية والسلبية للميزة، بالإضافة إلى اختبارات الوحدات للتوافق.
يتضمن اختبار وحدة التوافق تحديث stablehlo_legalize_to_vhlo.mlir
لضمان إجراء رحلات ذهاب وعودة من StableHLO باستخدام أحدث إصدار من VHLO، بالإضافة إلى أي اختبارات إضافية مطلوبة للتوافق للأمام أو للخلف. على سبيل المثال،
في حال إضافة عملية جديدة في الإصدار X
باستخدام Y = X - 1
، أضِف ملف اختبار مثل
vhlo_to_version_downgrade_invalid.0_Y_0.mlir
يُظهر أنّ العملية غير متوافقة
قبل الإصدار X
. في حال إضافة إصدار جديد من عملية، أضِف ملفًا تجريبيًا مثل
vhlo_to_version_downgrade.0_Y_0.mlir
يُظهر أنّه يمكن الرجوع إلى إصدار سابق من العملية
بنجاح.
إذا كان الأمر يتضمن سمات افتراضية، قم بتضمين اختبارات توضح أن الإعدادات الافتراضية متسلسلة وإلغاء تسلسلها بشكل صحيح.
4. إضافة اختبار التسلسل المحدّد
بعد إضافة الاختبارات إلى stablehlo_legalize_to_vhlo.mlir
، انسخ ملف الاختبار الذي يتضمّن الإصدارات والذي يتضمّن أكبر إصدار إلى ملف جديد بالإصدار الجديد، وأضِف الاختبارات الجديدة إلى هذا الملف أيضًا. ستحتاج أيضًا إلى إنشاء ملف bytecode مرتبط باستخدام 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