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
XyzOp
işlemi için spesifikasyondaki kısıtlama etiketlerine (ör.Cn
veyaIn
) atıfta bulunan yorumlarıxyz_cn
veyaxyz_in
biçiminde ekleyin. Aşağıdaki örnekte, mlirTraits
veTypeConstraints
ile birlikte kısıtlama etiketlerinin yorum olarak nasıl ekleneceği gösterilmektedir.xyz_c4
notu,StableHLO_FooOp
sınıfında tanımlanan kısıtlamaları (ör.StableHLO_ShapedInterfaceOp
,StableHLO_UnaryElementwiseOp
,StableHLO_Op
vb.) 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
XyzOp
işlemi içinxyz_cn
veyaxyz_in
biçiminde spesifikasyondaki kısıtlama etiketlerine (ör.Cn
veyaIn
) 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_jn
olarak 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>.mlir
adlı 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-DISABLED
değeriniRUN
olarak 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-LABEL
yanan bir makro eklendiğinden emin olun. - İşlev test kısıtlamaları için
xyz_cn_im_...
,Cn
,Im
vb. işlemler içinXyzOp
biç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>.mlir
bağ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
yes
olarak güncelleyin.
- "Tercüman" sütununu