Bu belgede, çevirmen için bir operatörün uygulanmasına ve incelenmesine ilişkin yönergeler özetlenmektedir. Çevirmen uygulamasıyla birlikte bu cephelerde de ilerleme kaydetme fikriyle birlikte, doğrulayıcı ve tür çıkarımıyla ilgili birkaç yardımcı işlem öğesini kasıtlı olarak dahil ettik.
Operasyonları 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. İnceleyen kişi, açıklamanın kapsamlı olup olmadığını tekrar kontrol eder.
- Yanıltıcı uygulama ayrıntılarını ve olası işlev eksikliklerini belirlemek için hlo_evaluator politikasına bakın.
- Herhangi bir hata veya eksik işlev tespit ederseniz ilgili yazılım bileşenleri için destek kaydı oluşturun.
İşlemi uyguladıktan sonra
StablehloOps.td sürümünde:
- Operasyonun ODS'sindeki
summary
öğesinin standart biçime uyduğundan emin olun. (ilgili bilet) ODS'deki kısıtlamalar ile spesifikasyon arasındaki ilişkiyi tanımlamak için
XyzOp
işlemi içinxyz_cn
veyaxyz_in
biçimindeki spesifikasyondan kısıtlama etiketlerine (ör.Cn
veyaIn
) referans veren yorumlar ekleyin. Aşağıdaki örnek, kısıtlama etiketlerinin mlirTraits
veTypeConstraints
ile birlikte yorum olarak nasıl ekleneceğini gösterir. Notxyz_c4
,StableHLO_FooOp
sınıfında tanımlanan kısıtlamaları ifade eder (ör.StableHLO_ShapedInterfaceOp
,StableHLO_UnaryElementwiseOp
,StableHLO_Op
vb.).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'de:
- "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çimindeki spesifikasyondaki kısıtlama etiketlerine (ör.Cn
veyaIn
) referans veren yorumlar ekleyin.- Birden fazla kısıtlama etiketine sahip bir yorum veya aynı sınırlama etiketine sahip birden çok yorum kullanılabilir. Bu tamamen kısıtlamaların nasıl
uygulandığına bağlıdır. Ardışık kısıtlamalar varsa bunları
xyz_cn...xyz_cm, xyz_in...xyz_jn
olarak sıkıştırın. - Uygulama VS'deki kısıtlamalar ile spesifikasyondakiler arasında uyuşmazlık olması durumunda bu tutarsızlığı yansıtan açık bir sorun bulunduğundan emin olun.
- Birden fazla kısıtlama etiketine sahip bir yorum veya aynı sınırlama etiketine sahip birden çok yorum kullanılabilir. Bu tamamen kısıtlamaların nasıl
uygulandığına bağlıdır. Ardışık kısıtlamalar varsa bunları
-
interpret_<op_mnemonic>.mlir
adlı bir dosya ekleyin.- Testleri test kurallarına uygun şekilde yazın.
-
- Yeni eklenen işlemin kapsamındaki devre dışı bırakılmış tüm testleri çalıştırın.
- Testler başarılı olursa
RUN-DISABLED
kodunuRUN
biçimine dönüştürerek etkinleştirin. - Bir test, hassasiyet uyuşmazlıkları dışında bir nedenden dolayı 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öntemlerindeki her kısıtlama için en az bir test (pozitif veya negatif) bulunduğundan emin olun. ODS'de ele alınan kısıtlamalar test edilmez. Bu testler genellikle olumsuz sonuç verir ve kısıtlamaların karşılanmadığını veya pozitif olduğunu, tahmin edilen şeklin doğru olup olmadığını test eder.
- Test edilen işlemle ilgili tüm testlerin bir araya getirildiğinden emin olun.
- Test edilen işlemle ilgili tüm testlerin başına
CHECK-LABEL
ışıklı bir makro eklendiğinden emin olun. XyzOp
işlemi içinCn
,Im
vb. işlev testi kısıtlamaları içinxyz_cn_im_...
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 altındaki işlem ile ilgili tüm testleri, işlev adına göre alfabetik olarak sıralayın.
- Cov, işlem için >=% 90 kapsamın üzerinde görünene kadar testleri 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.
- Şekil çıkarımı testlerini ops_stablehlo.mlir dosyasından bu dosyaya taşıyın.
spec.md dosyasında:
- "Örnekler" bölümüne
interpret_<op_mnemonic>.mlir
bağlantısı ekleyin (ör. Diğer Örnekler). - Teknik özelliğin yalnızca 1 örnek içerdiğinden emin olun.
- Spesifikasyon örneğinin test yönergelerine uygun olduğ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 dosyasında:
- "Çevirmen" sütununu
yes
olarak güncelleyin.
- "Çevirmen" sütununu