לקבלת מידע על VHLO, ראו vhlo.md
.
ביצוע שינויים לא תואמים
כל שינוי שיש לו השלכות על תאימות חייב להתבצע בתהליך 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
שמציין שאפשר לשדרג לאחור את הפעולה
בהצלחה.
אם לפעילות שלך יש מאפייני ברירת מחדל, יש לכלול בדיקות שמראות שברירות המחדל הן עברו סריאליזציה ועבר תהליך deserialize בצורה נכונה.
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