Lihat vhlo.md
untuk mengetahui informasi tentang VHLO.
Berkontribusi pada Perubahan yang Tidak Kompatibel
Semua perubahan dengan implikasi kompatibilitas harus melalui proses RFC. Hal ini mencakup penambahan, penghentian, atau penggantian nama fitur. Setelah RFC disetujui, langkah-langkah berikut harus diselesaikan:
1. Meningkatkan Nomor Versi di Version.h dan Memperbarui Log Versi
Sebelum memperbarui operasi, atribut, jenis, atau konversi VHLO, tambahkan nomor versi minor di Version.h, dan perbarui log versi di VhloDialect.td
Setiap fitur VHLO baru yang ditambahkan akan menggunakan versi yang di-bump ini, misalnya setelah
meng-bump 0.10.0 --> 0.11.0
, op baru di VhloOps.td
akan menggunakan:
VHLO_Op<"abs_v2", "0.11.0", "current">
2. Tambahkan Penerapan dan Konversi VHLO yang Diperlukan
Kode yang tepat yang diperlukan untuk mengintegrasikan fitur baru akan bervariasi, tetapi untuk sebagian besar, kode berikut perlu diubah:
- Untuk operasi baru:
- Tambahkan operasi di VhloOps.td
- Menambahkan konversi StableHLO → VHLO di StablehloLegalizeToVhlo.cpp
- Menambahkan konversi VHLO → StableHLO di VhloLegalizeToStablehlo.cpp
- Untuk versi baru dari operasi yang sudah ada:
- Tambahkan operasi di VhloOps.td
- Memperbarui pemetaan StableHLO ke VHLO di MapStablehloToVhlo.h
- Menambahkan konversi antara versi op baru dan lama di VhloToVersion.cpp
- Untuk jenis atau atribut baru:
- Tambahkan jenis di VhloTypes.td atau atribut di VhloAttrs.td
- Tambahkan StableHLO → konversi VHLO di StablehloLegalizeToVhlo.cpp
- Menambahkan konversi VHLO → StableHLO di VhloLegalizeToStablehlo.cpp
3. Menambahkan/Memperbarui Pengujian Unit
Kontributor perubahan yang tidak kompatibel bertanggung jawab atas pengujian unit positif dan negatif fitur, serta pengujian unit kompatibilitas.
Pengujian unit kompatibilitas melibatkan pembaruan stablehlo_legalize_to_vhlo.mlir
untuk memastikan bahwa StableHLO melakukan perjalanan bolak-balik dengan VHLO versi terbaru, serta
pengujian kompatibilitas maju atau mundur tambahan yang diperlukan. Misalnya,
jika menambahkan operasi baru pada versi X
dengan Y = X - 1
, tambahkan file pengujian seperti
vhlo_to_version_downgrade_invalid.0_Y_0.mlir
yang menunjukkan bahwa operasi tidak didukung
sebelum versi X
. Jika menambahkan versi baru op, tambahkan file pengujian seperti
vhlo_to_version_downgrade.0_Y_0.mlir
yang menunjukkan bahwa op dapat berhasil
didowngrade.
Jika operasi Anda memiliki atribut default, sertakan pengujian yang menunjukkan bahwa default diserialisasi dan dideserialisasi dengan benar.
4. Menambahkan Uji Serialisasi Berversi
Setelah menambahkan pengujian ke stablehlo_legalize_to_vhlo.mlir
, salin file pengujian berversi
dengan versi terbesar ke file baru pada versi baru, dan tambahkan
pengujian baru ke file tersebut juga. Anda juga harus membuat file bytecode
terkait menggunakan 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