StableHLO Çevirmen Kontrol Listesi

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

  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. İnceleme uzmanı, açıklamanın kapsamlı olup olmadığını tekrar kontrol eder.
  2. Zor uygulama ayrıntılarını ve olası işlev eksikliklerini belirlemek için hlo_evaluator işlevine bakın.
  3. Hata veya eksik işlev bulursanız ilgili yazılım bileşenleri için destek kaydı oluşturun.

İşlemi uyguladıktan sonra

  1. StablehloOps.td dosyasında:

    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 eşleşmeyi belirlemek için XyzOp işlemi için spesifikasyondaki kısıtlama etiketlerine (ör. Cn veya In) atıfta bulunan yorumları xyz_cn veya xyz_in biçiminde ekleyin. Aşağıdaki örnekte, mlir Traits ve TypeConstraints 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*/
            ....
         );
      );
      
  2. TypeInference.cpp ve StablehloOps.cpp dosyalarında:

    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çiminde spesifikasyondaki kısıtlama etiketlerine (ör. Cn veya In) atıfta bulunan yorumlar ekleyin.
      1. 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.
      2. 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.
  3. Yorumcu testlerinde:

    1. <op_mnemonic>.mlir adlı bir dosya ekleyin.
    2. Test yönergelerini uygulayarak testleri yazın.
  4. testdata dizininde:

    1. Yeni eklenen işlem kapsamındaki devre dışı bırakılmış testleri çalıştırın.
    2. Testler başarılı olursa RUN-DISABLED değerini RUN olarak değiştirerek etkinleştirin.
    3. Bir test, hassasiyet uyuşmazlığı dışında bir nedenle 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ö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).
    2. Test edilen işlemle ilgili tüm testlerin birlikte yerleştirildiğinden emin olun.
    3. Test edilen işlemle ilgili tüm testlerin başına CHECK-LABEL yanan bir makro eklendiğinden emin olun.
    4. İşlev test kısıtlamaları için xyz_cn_im_..., Cn, Im vb. işlemler için XyzOp 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 edilen işlevle ilgili tüm testleri işlev adına göre alfabetik olarak sıralayın.
    6. ccov, operasyon için %90'ın üzerinde kapsam gösterdiğinde test 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. ops_stablehlo.mlir dosyasında bulunan tüm şekil çıkarım testlerini bu dosyaya taşıyın.
  7. spec.md dosyasında:

    1. "Örnekler" bölümüne stablehlo/tests/interpret/<op_mnemonic>.mlir bağlantısını ekleyin (ör. Diğer Örnekler).
    2. Spesifikasyonda yalnızca 1 örnek bulunduğundan emin olun.
    3. Spesifikasyon örneğinin test yönergelerine uyduğ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 içinde:

    1. "Tercüman" sütununu yes olarak güncelleyin.