Lihat vhlo.md
untuk mengetahui informasi tentang VHLO.
Berkontribusi Perubahan yang Tidak Kompatibel
Semua perubahan dengan implikasi kompatibilitas harus melalui proses RFC. Hal ini termasuk menambahkan, menghentikan penggunaan, atau mengganti nama fitur. Setelah RFC-nya disetujui, langkah-langkah berikut harus diselesaikan:
1. Menambahkan Nomor Versi di Version.h dan Mengupdate Log Versi
Sebelum memperbarui operasi, atribut, jenis, atau konversi VHLO, tambahkan nomor versi minor di Version.h, dan mengupdate log versi di VhloDialect.td
Setiap fitur VHLO baru yang ditambahkan akan menggunakan versi yang ditambahkan ini, misalnya setelah
menghubungi 0.10.0 --> 0.11.0
, operasi 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 hal berikut yang harus diubah:
- Untuk operasi baru:
- Menambahkan operasi di VhloOps.td
- Tambahkan StableHLO → konversi VHLO di StablehloLegalizeToVhlo.cpp
- Tambahkan VHLO → konversi StableHLO di VhloLegalizeToStablehlo.cpp
- Untuk versi baru dari operasi yang sudah ada:
- Menambahkan operasi di VhloOps.td
- Mengupdate pemetaan StableHLO ke VHLO di MapStablehloToVhlo.h
- Menambahkan konversi antara versi operasi 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
- Tambahkan VHLO → konversi StableHLO di VhloLegalizeToStablehlo.cpp
3. Menambahkan / Memperbarui Pengujian Unit
Kontributor perubahan yang tidak kompatibel bertanggung jawab atas pengujian unit negatif fitur, serta pengujian unit kompatibilitas.
Pengujian unit kompatibilitas melibatkan pembaruan stablehlo_legalize_to_vhlo.mlir
untuk memastikan bahwa perjalanan bolak-balik StabilHLO dengan versi terbaru VHLO, serta
sebagai uji 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 operasi tidak didukung
sebelum versi X
. Jika menambahkan versi baru dari sebuah operasi, tambahkan file pengujian seperti
vhlo_to_version_downgrade.0_Y_0.mlir
yang menunjukkan bahwa op dapat didowngrade
memulai proyek.
Jika operasi Anda memiliki atribut default, sertakan pengujian yang menunjukkan bahwa nilai default-nya diserialisasi dan dideserialisasi dengan benar.
4. Menambahkan Uji Serialisasi Berversi
Setelah menambahkan pengujian ke stablehlo_legalize_to_vhlo.mlir
, salin pengujian berversi
dengan versi terbesar ke file baru di versi baru, dan tambahkan
pengujian baru pada file tersebut. Anda juga perlu membuat
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