StableHLO Çevirmen Yapılacaklar Listesi

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

  1. 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.
  2. Yanıltıcı uygulama ayrıntılarını ve olası işlev eksikliklerini belirlemek için hlo_evaluator politikasına bakın.
  3. 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

  1. StablehloOps.td sürümünde:

    1. Operasyonun ODS'sindeki summary öğesinin standart biçime uyduğundan emin olun. (ilgili bilet)
    2. ODS'deki kısıtlamalar ile spesifikasyon arasındaki ilişkiyi tanımlamak için XyzOp işlemi için xyz_cn veya xyz_in biçimindeki spesifikasyondan kısıtlama etiketlerine (ör. Cn veya In) referans veren yorumlar ekleyin. Aşağıdaki örnek, kısıtlama etiketlerinin mlir Traits ve TypeConstraints ile birlikte yorum olarak nasıl ekleneceğini gösterir. Not xyz_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*/
            ....
         );
      );
      
  2. TypeInference.cpp ve StablehloOps.cpp'de:

    1. "Aşağıdaki özellikleri doğrulayın: ..." gibi ifadeler içeren yorumları silin.
    2. 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çin xyz_cn veya xyz_in biçimindeki spesifikasyondaki kısıtlama etiketlerine (ör. Cn veya In) referans veren yorumlar ekleyin.
      1. 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.
      2. 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.
  3. Yorumlayıcı testlerinde:

    1. interpret_<op_mnemonic>.mlir adlı bir dosya ekleyin.
    2. Testleri test kurallarına uygun şekilde yazın.
  4. testdata dizininde:

    1. Yeni eklenen işlemin kapsamındaki devre dışı bırakılmış tüm testleri çalıştırın.
    2. Testler başarılı olursa RUN-DISABLED kodunu RUN biçimine dönüştürerek etkinleştirin.
    3. Bir test, hassasiyet uyuşmazlıkları dışında bir nedenden dolayı başarısız olursa uygulamayı/testi düzeltin.
    4. Hassasiyet uyuşmazlıkları için testi RUN-DISABLED(#1278) ile etiketleyin (henüz yapılmadıysa).
  5. ops_stablehlo.mlir dosyasında:

    1. 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.
    2. Test edilen işlemle ilgili tüm testlerin bir araya getirildiğinden emin olun.
    3. Test edilen işlemle ilgili tüm testlerin başına CHECK-LABEL ışıklı bir makro eklendiğinden emin olun.
    4. XyzOp işlemi için Cn, Im vb. işlev testi kısıtlamaları için xyz_cn_im_... biçimini kullanarak testlerin işlev adını seçin. Önerilen biçimin geçerli olmadığı durumlarda mevcut adı koruyun.
    5. 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.
    6. Cov, işlem için >=% 90 kapsamın üzerinde görünene kadar testleri eklemeye devam edin.
  6. infer_stablehlo.mlir dosyasında:

    1. Ş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.
    2. Şekil çıkarımı testlerini ops_stablehlo.mlir dosyasından bu dosyaya taşıyın.
  7. spec.md dosyasında:

    1. "Örnekler" bölümüne interpret_<op_mnemonic>.mlir bağlantısı ekleyin (ör. Diğer Örnekler).
    2. Teknik özelliğin yalnızca 1 örnek içerdiğinden emin olun.
    3. Spesifikasyon örneğinin test yönergelerine uygun olduğundan emin olun.
    4. Spesifikasyon örneği testinin yorumlanabilir olduğundan emin olun.
    5. Spesifikasyon örneğinin ODS'dekiyle aynı olduğundan emin olun.
  8. status.md dosyasında:

    1. "Çevirmen" sütununu yes olarak güncelleyin.