VHLO hakkında bilgi için vhlo.md
sayfasına bakın.
Uyumlu Olmayan Değişiklikler Katkıda Bulunma
Uyumluluk sonuçları olan tüm değişiklikler RFC sürecinden geçmelidir. Özellik ekleme, desteği sonlandırma veya yeniden adlandırma işlemleri de bu kapsamdadır. RFC onaylandıktan sonra aşağıdaki adımlar tamamlanmalıdır:
1. Version.h dosyasında sürüm numarasını artırma ve sürüm günlüğünü güncelleme
VHLO işlemlerini, özelliklerini, türlerini veya dönüşümlerini güncellemeden önce Version.h dosyasında küçük sürüm numarasını artırın ve VhloDialect.td dosyasında sürüm günlüğünü güncelleyin.
Eklenen yeni VHLO özellikleri bu yükseltilmiş sürümü kullanır. Örneğin, 0.10.0 --> 0.11.0
yükseltildikten sonra VhloOps.td'deki yeni bir işlem şunu kullanır:
VHLO_Op<"abs_v2", "0.11.0", "current">
2. Gerekli VHLO Uygulamasını ve Dönüşümleri Ekleyin
Yeni bir özelliği entegre etmek için gereken tam kod değişiklik gösterse de çoğu durumda aşağıdakilerin değiştirilmesi gerekir:
- Yeni operasyonlar için:
- Operasyonu VhloOps.td dosyasına ekleyin.
- StablehloLegalizeToVhlo.cpp dosyasına StableHLO → VHLO dönüşümü ekleyin
- VhloLegalizeToStablehlo.cpp dosyasına VHLO → StableHLO dönüşümü ekleme
- Mevcut operasyonların yeni sürümleri için:
- Operasyonu VhloOps.td dosyasına ekleyin.
- MapStablehloToVhlo.h dosyasında StableHLO ile VHLO eşlemesini güncelleyin
- VhloToVersion.cpp dosyasında yeni ve eski op sürümleri arasında bir dönüşüm ekleyin
- Yeni türler veya özellikler için:
- Türü VhloTypes.td'ya veya özelliği VhloAttrs.td'ye ekleyin.
- StablehloLegalizeToVhlo.cpp dosyasına StableHLO → VHLO dönüşümü ekleme
- VhloLegalizeToStablehlo.cpp dosyasına VHLO → StableHLO dönüşümü ekleme
3. Birim Testleri Ekleme/Güncelleme
Uyumlu olmayan bir değişikliğin katkıda bulunanı, özelliğin hem olumlu hem de olumsuz birim testlerinin yanı sıra uyumluluk birim testlerinden sorumludur.
Uyumluluk birim testi, StableHLO'nun VHLO'nun en son sürümüyle gidip gelmesini sağlamak için stablehlo_legalize_to_vhlo.mlir dosyasını güncellemeyi ve gerekli olan ek ileri veya geri uyumluluk testlerini yapmayı içerir. Örneğin, Y = X - 1
ile X
sürümünde yeni bir işlem ekleyecekseniz vhlo_to_version_downgrade_invalid.0_Y_0.mlir
gibi bir test dosyası ekleyerek işlemin X
sürümünden önce desteklenmediğini gösterin. Bir işlemin yeni sürümünü ekleyecekseniz işlemin başarılı bir şekilde sürüm düşürülebileceğini gösteren vhlo_to_version_downgrade.0_Y_0.mlir
gibi bir test dosyası ekleyin.
İşleminizde varsayılan özellikler varsa varsayılanların doğru şekilde serileştirildiğini ve seri dışına çıkarıldığını gösteren testler ekleyin.
4. Sürümlü Serileştirme Testi Ekle
stablehlo_legalize_to_vhlo.mlir
'e test ekledikten sonra, en büyük sürüme sahip sürümlü test dosyasını yeni sürümde yeni bir dosyaya kopyalayın ve yeni testleri de bu dosyaya ekleyin. Ayrıca stablehlo-translate
kullanarak ilişkili bir bytecode dosyası oluşturmanız gerekir:
export TARGET_VERSION=1.X.0
export TARGET_FILENAME=${TARGET_VERSION//./_}
stablehlo-translate --serialize --target=$TARGET_VERSION --strip-debuginfo stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir > stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir.bc