Dalam dokumen ini, kami merangkum pedoman untuk menerapkan dan meninjau untuk penafsir. Kami sengaja menyertakan beberapa tindakan tambahan item yang terkait dengan pemverifikasi dan inferensi jenis, dengan gagasan untuk membuat kemajuan hal-hal tersebut di samping implementasi penerjemah.
Saat menerapkan operasi
- Menyediakan strategi pengujian yang ditulis secara eksplisit (dalam deskripsi PR) mirip dengan ini untuk menggunakan sebagai referensi saat meninjau verifikasi dan inferensi jenis metode, dan pengujian yang sesuai. Peninjau akan memeriksa ulang apakah deskripsinya komprehensif.
- Konsultasi hlo_evaluator untuk mengidentifikasi detail implementasi yang rumit dan potensi kesenjangan fungsi.
- Ajukan tiket untuk komponen software terkait jika Anda menemukan bug atau kehilangan fungsi.
Setelah mengimplementasikan operasi
Di StablehloOps.td:
- Pastikan
summary
di ODS operasi mengikuti format standar. (tiket terkait) Menambahkan komentar yang merujuk ke label batasan (misalnya
Cn
atauIn
) dari spesifikasi dalam formatxyz_cn
atauxyz_in
, untuk operasiXyzOp
, guna mengidentifikasi korespondensi antara batasan dalam ODS dan spesifikasinya. Tujuan contoh berikut menunjukkan cara menambahkan label batasan sebagai komentar bersama mlirTraits
danTypeConstraints
. Catatanxyz_c4
merujuk pada batasan yang ditentukan dalam classStableHLO_FooOp
(misalnya,StableHLO_ShapedInterfaceOp
,StableHLO_UnaryElementwiseOp
,StableHLO_Op
, dll.).def StableHLO_XyzOp: StableHLO_FooOp<"xyz", [Trait1, Trait2 /*xyz_c1, xyz_c2*/, InferTensorType /*xyz_c3*/]> { /*xyz_c4*/ ... let summary = "Xyz operation"; let arguments = (ins 1DTensorOf<[HLO_Float]>:$a, /*xyz_c5, xyz_i1*/ HLO_Tensor:$b, /*xyz_i2*/ .... ); );
- Pastikan
Di TypeInference.cpp dan StablehloOps.cpp:
- Hapus komentar yang bertuliskan hal-hal seperti "Verifikasi properti berikut: ...".
- Menambahkan komentar yang merujuk ke label batasan (misalnya
Cn
atauIn
) dari spesifikasi dalam formatxyz_cn
atauxyz_in
, untuk operasiXyzOp
, guna mengidentifikasi bagian mana dari pemverifikasi dan fungsi bentuk yang sesuai dengan kendala-kendala dalam spesifikasi.- Diperbolehkan untuk memiliki komentar dengan
beberapa label batasan atau memiliki
beberapa komentar dengan
label batasan yang sama. Itu semua
tergantung pada
bagaimana batasan diimplementasikan. Jika ada batasan berturut-turut,
meringkasnya menjadi
xyz_cn...xyz_cm, xyz_in...xyz_jn
. - Jika ada ketidakcocokan antara batasan dalam implementasi VS dan yang ada dalam spesifikasi, pastikan masalah terbuka yang mencerminkan perbedaan tersebut.
- Diperbolehkan untuk memiliki komentar dengan
beberapa label batasan atau memiliki
beberapa komentar dengan
label batasan yang sama. Itu semua
tergantung pada
bagaimana batasan diimplementasikan. Jika ada batasan berturut-turut,
meringkasnya menjadi
Dalam pengujian penafsir:
- Tambahkan file bernama
<op_mnemonic>.mlir
. - Tulis pengujian dengan mengikuti panduan pengujian.
- Tambahkan file bernama
-
- Menjalankan pengujian nonaktif apa pun yang dicakup oleh operasi yang baru ditambahkan.
- Jika lulus pengujian, aktifkan pengujian dengan mengonversi
RUN-DISABLED
menjadiRUN
. - Jika pengujian gagal karena alasan selain ketidakcocokan presisi, perbaiki implementasi/pengujian.
- Untuk ketidakcocokan presisi, beri tag pada pengujian dengan
RUN-DISABLED(#1278)
(jika hal ini belum dilakukan).
-
- Pastikan setidaknya ada satu tes (positif atau negatif) untuk setiap pengujian batasan dalam metode inferensi pemverifikasi dan jenis; batasan-batasan yang tercakup dalam ODS tidak akan diuji. Tes ini sebagian besar akan bernilai negatif, pengujian bahwa batasan tidak terpenuhi atau positif, menguji bahwa bentuk yang disimpulkan sudah benar.
- Pastikan semua pengujian yang terkait dengan op yang sedang diuji ditempatkan secara bersamaan.
- Pastikan semua pengujian yang terkait
dengan operasi yang diuji
ditambahkan dengan makro menyala
CHECK-LABEL
. - Memilih nama fungsi pengujian menggunakan format
xyz_cn_im_...
untuk pengujian fungsi batasanCn
,Im
, dll. untuk operasiXyzOp
. Apabila format yang diusulkan tidak terapkan, pertahankan nama yang ada. - Setelah langkah di atas selesai, urutkan semua pengujian yang terkait dengan operasi dalam pengujian menurut abjad berdasarkan nama fungsi.
- Terus tambahkan pengujian sampai ccov menunjukkan cakupan >= 90% untuk operasi.
-
- Pastikan semua batasan yang terkait dengan uji inferensi bentuk ada dalam file ini, dengan mengikuti panduan penamaan yang sama dengan yang disebutkan di atas.
- Pindahkan pengujian inferensi bentuk dari ops_stablehlo.mlir ke file ini.
Di spec.md:
- Tambahkan link ke
stablehlo/tests/interpret/<op_mnemonic>.mlir
ke "Contoh" bagian (misalnya, Contoh Lainnya). - Pastikan spesifikasi hanya memiliki 1 contoh.
- Pastikan contoh spesifikasi mengikuti panduan pengujian.
- Pastikan pengujian contoh spesifikasi dapat ditafsirkan.
- Pastikan contoh spesifikasi sama dengan yang ada di ODS.
- Tambahkan link ke
Dalam status.md:
- Perbarui "Penerjemah" kolom ke
yes
.
- Perbarui "Penerjemah" kolom ke