StableHLO spesifikasyonu kontrol listesi

Bu dokümanda, bu özellikte yapılan değişiklikleri incelemeye yönelik yönergeleri özetleyeceğiz. Şu anda bu değişiklikler genellikle birden çok kaynakta birden çok öğenin kontrol edilmesini içermektedir. Bu nedenle bu dokümanda, incelemeleri basitleştirmek için tüm öğeler özetlenmektedir:

  1. status.md dosyasındaki "Spesifikasyon" sütununda "yes" değerinin gösterildiğinden emin olun. Yeni işlem ekliyorsanız satır ekleyin.
  2. Bölüm başlığının ODS'deki işlem anımsatıcısıyla eşleşip eşleşmediğini kontrol edin.
  3. "Semantik" bölümünün XLA'nın İşlem Semantiği ile eşleşip eşleşmediğini kontrol edin.
  4. "Girişler" ve "Çıkışlar" bölümlerinin şunları kontrol edin:
    1. ODS ile aynı öğeleri listeleyin.
    2. HloTeachion::CreateFromProto ile aynı öğeleri listeleyin.
    3. Tam olarak ODS ile aynı şekilde sıralanır.
    4. Herhangi bir uyuşmazlık varsa bununla ilgili biletler olup olmadığını kontrol edin.
  5. "Sınırlamalar" bölümünde şunları kontrol edin:
    1. XLA'nın shape_inference.cc öğesiyle eşleşir.
    2. XLA'nın hlo_verifier.cc öğesiyle eşleşir.
    3. ODS ile eşleşir.
    4. StablehloOps.cpp ile eşleşir.
    5. Herhangi bir uyuşmazlık varsa bununla ilgili biletler olup olmadığını kontrol edin. Spesifikasyondaki tüm bu biletleri mümkün olduğunca spesifik konumlarda bağlayın (ör. bir bilet, uygulanmamış bir kısıtlamayla ilgiliyse bileti doğrudan bu kısıtlamada bağlayın).
    6. ODS ve StablehloOps.cpp'nin karşılık gelen bölümleri spesifikasyonla eşleşiyorsa status.md'deki "Doğrulama" ve "Tür Çıkarımı" sütunlarında "evet" ifadesinin bulunduğundan emin olun.
  6. "Örnekler" bölümünde:
    1. Yalnızca bir örnek içeriyor. (Gelecekte StableHLO çevirmen test paketinden daha fazla örneğin bağlantısı vereceğiz).
    2. Kod örneklerinde stablehlo-opt çalıştırarak geçerli MLIR söz dizimi kullanır.
    3. stablehlo-opt -mlir-print-op-generic çalıştırılarak edinilebilen genel MLIR söz dizimini kullanır (pretprinter değişiklikleriyle ilgili spesifikasyonları değiştirmek zorunda kalmamak için spesifikasyonda genel söz dizimine bağlı kalınır).
  7. Operasyonun ODS'sindeki description öğesinin şunları kontrol edin:
    1. Teknik özelliğin ilk cümlesini içeriyor.
    2. Ardından spesifikasyonun ilgili bölümüne bağlantı verilir.
    3. Ardından spesifikasyon ile aynı örneği kullanır ancak stablehlo-opt çalıştırılmasıyla elde edilebilecek güzel söz dizimi aracılığıyla bu örneği kullanır.
  8. Doğrulama ve tür çıkarımı kısıtlamalarının uygulanmasıyla ilgili dosyaların aşağıda belirtilen yönergelere uygun olduğundan emin olun:
    1. StablehloOps.td için #1 numaralı kuralı uygulayın.
    2. TypeInference.cpp ve StablehloOps.cpp ile ilgili 2. kuralı uygulayın.
    3. ops_stablehlo.mlir için 5 numaralı kuralı uygulayın.
    4. infer_stablehlo.mlir için 6. kuralı uygulayın.
  9. İşlemi yan etkiler ve tahmin edilebilirlik açısından değerlendirin.
    1. İşlemin yan etkisi yoksa ve her zaman spekülatif nitelikteyse Pure özelliğini gönderin. Çoğu işlem, çalışma zamanında şekil uyuşmazlıklarına (tanımsız davranış) yol açabilecek olan dinamik şekillere izin verdiği için bu nadir görülen bir durumdur. Bazı işlemlerin başka durumlarda da tanımsız davranışları olabilir. İşlemlerin büyük çoğunluğunun yan etkisi yoktur (NoMemoryEffect özelliğine sahip olmaları gerekir).
    2. Çoğu işlem, HLO_SpeculatableIf* özelliklerinden birine girer. İşlem, bunların hiçbirine uymuyorsa ConditionallySpeculatable özelliğini verin ve arayüz yöntemlerini uygulayın. Tahmin edilebilirlik mantığını kapsamak için testleri stablehlo/tests/ops_speculatability.mlir öğesine ekleyin.