Bu dokümanda, tercüman için opsiyon uygulama ve incelemeyle ilgili kuralları özetliyoruz. Yorumlayıcı uygulamasıyla birlikte bu alanlarda da ilerleme kaydetmek amacıyla doğrulayıcı ve tür çıkarımıyla ilgili birkaç yardımcı işlem öğesi ekledik.
İşlemi uygularken
- Doğrulama ve tür çıkarım yöntemlerini ve ilgili testleri incelerken referans olarak kullanmak için buna benzer, açıkça yazılmış bir test stratejisi (PR açıklamasında) sağlayın. İnceleme uzmanı, açıklamanın kapsamlı olup olmadığını tekrar kontrol eder.
- Zor uygulama ayrıntılarını ve olası işlev eksikliklerini belirlemek için hlo_evaluator işlevine bakın.
- Hata veya eksik işlev bulursanız ilgili yazılım bileşenleri için destek kaydı oluşturun.
İşlemi uyguladıktan sonra
StablehloOps.td dosyasında:
- Operasyonun ODS'sindeki
summaryöğesinin standart biçime uyduğundan emin olun. (ilgili bilet) ODS'deki kısıtlamalar ile spesifikasyon arasındaki eşleşmeyi belirlemek için
XyzOpişlemi için spesifikasyondaki kısıtlama etiketlerine (ör.CnveyaIn) atıfta bulunan yorumlarıxyz_cnveyaxyz_inbiçiminde ekleyin. Aşağıdaki örnekte, mlirTraitsveTypeConstraintsile birlikte kısıtlama etiketlerinin yorum olarak nasıl ekleneceği gösterilmektedir.xyz_c4notu,StableHLO_FooOpsınıfında tanımlanan kısıtlamaları (ör.StableHLO_ShapedInterfaceOp,StableHLO_UnaryElementwiseOp,StableHLO_Opvb.) ifade eder.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*/ .... ); );
- Operasyonun ODS'sindeki
TypeInference.cpp ve StablehloOps.cpp dosyalarında:
- "Aşağıdaki özellikleri doğrulayın: ..." gibi ifadeler içeren yorumları silin.
- Doğrulayıcıların ve şekil işlevlerinin hangi bölümlerinin spesifikasyondaki hangi kısıtlamalara karşılık geldiğini belirlemek için
XyzOpişlemi içinxyz_cnveyaxyz_inbiçiminde spesifikasyondaki kısıtlama etiketlerine (ör.CnveyaIn) atıfta bulunan yorumlar ekleyin.- Birden fazla kısıtlama etiketi içeren bir yorum veya aynı kısıtlama etiketine sahip birden fazla yorum olmasında sakınca yoktur. Bu durum, kısıtlamaların nasıl uygulandığına bağlıdır. Art arda gelen kısıtlamalar varsa bunları
xyz_cn...xyz_cm, xyz_in...xyz_jnolarak daraltın. - VS'deki uygulama kısıtlamaları ile spesifikasyondaki kısıtlamalar arasında uyuşmazlık varsa bu tutarsızlığı yansıtan açık bir sorun bulunduğundan emin olun.
- Birden fazla kısıtlama etiketi içeren bir yorum veya aynı kısıtlama etiketine sahip birden fazla yorum olmasında sakınca yoktur. Bu durum, kısıtlamaların nasıl uygulandığına bağlıdır. Art arda gelen kısıtlamalar varsa bunları
-
<op_mnemonic>.mliradlı bir dosya ekleyin.- Test yönergelerini uygulayarak testleri yazın.
-
- Yeni eklenen işlem kapsamındaki devre dışı bırakılmış testleri çalıştırın.
- Testler başarılı olursa
RUN-DISABLEDdeğeriniRUNolarak değiştirerek etkinleştirin. - Bir test, hassasiyet uyuşmazlığı dışında bir nedenle başarısız olursa uygulamayı/testi düzeltin.
- Hassasiyet uyuşmazlıkları için testi
RUN-DISABLED(#1278)ile etiketleyin (henüz yapılmadıysa).
ops_stablehlo.mlir dosyasında:
- Doğrulayıcı ve tür çıkarım yöntemlerinde her kısıtlama için en az bir test (pozitif veya negatif) bulunduğundan emin olun. ODS'de kapsanan kısıtlamalar test edilmez. Bu testler çoğunlukla negatiftir (kısıtlamaların karşılanmadığını test eder) veya pozitiftir (tahmine dayalı şeklin doğru olduğunu test eder).
- Test edilen işlemle ilgili tüm testlerin birlikte yerleştirildiğinden emin olun.
- Test edilen işlemle ilgili tüm testlerin başına
CHECK-LABELyanan bir makro eklendiğinden emin olun. - İşlev test kısıtlamaları için
xyz_cn_im_...,Cn,Imvb. işlemler içinXyzOpbiçimini kullanarak testlerin işlev adını seçin. Önerilen biçimin geçerli olmadığı durumlarda mevcut adı koruyun. - Yukarıdaki adım tamamlandıktan sonra, test edilen işlevle ilgili tüm testleri işlev adına göre alfabetik olarak sıralayın.
- ccov, operasyon için %90'ın üzerinde kapsam gösterdiğinde test eklemeye devam edin.
infer_stablehlo.mlir dosyasında:
- Şekil çıkarım testleriyle ilgili tüm kısıtlamaların, yukarıda belirtilen adlandırma kurallarına uygun şekilde bu dosyada bulunduğundan emin olun.
- ops_stablehlo.mlir dosyasında bulunan tüm şekil çıkarım testlerini bu dosyaya taşıyın.
spec.md dosyasında:
- "Örnekler" bölümüne
stablehlo/tests/interpret/<op_mnemonic>.mlirbağlantısını ekleyin (ör. Diğer Örnekler). - Spesifikasyonda yalnızca 1 örnek bulunduğundan emin olun.
- Spesifikasyon örneğinin test yönergelerine uyduğundan emin olun.
- Spesifikasyon örneği testinin yorumlanabilir olduğundan emin olun.
- Spesifikasyon örneğinin ODS'dekiyle aynı olduğundan emin olun.
- "Örnekler" bölümüne
status.md içinde:
- "Tercüman" sütununu
yesolarak güncelleyin.
- "Tercüman" sütununu