Xem vhlo.md
để biết thông tin về VHLO.
Góp phần thay đổi không tương thích
Mọi thay đổi liên quan đến khả năng tương thích đều phải trải qua quy trình RFC. Điều này bao gồm việc thêm, ngừng sử dụng hoặc đổi tên một tính năng. Sau khi RFC được phê duyệt, bạn phải hoàn tất các bước sau:
1. Thay đổi Số phiên bản trong Version.h và Cập nhật nhật ký phiên bản
Trước khi cập nhật các thao tác, thuộc tính, loại hoặc lượt chuyển đổi VHLO, hãy tăng số phiên bản phụ trong Version.h và cập nhật nhật ký phiên bản trong VhloDialect.td
Mọi tính năng VHLO mới được thêm vào sẽ sử dụng phiên bản đã nâng cấp này, ví dụ: sau khi nâng cấp 0.10.0 --> 0.11.0
, một toán tử mới trong VhloOps.td sẽ sử dụng:
VHLO_Op<"abs_v2", "0.11.0", "current">
2. Thêm hoạt động triển khai và lượt chuyển đổi VHLO bắt buộc
Mã chính xác cần thiết để tích hợp một tính năng mới sẽ khác nhau, nhưng đối với hầu hết các phần, bạn cần thay đổi những nội dung sau:
- Đối với các toán tử mới:
- Thêm toán tử trong VhloOps.td
- Thêm StableHLO → lượt chuyển đổi VHLO trong StablehloLegalizeToVhlo.cpp
- Thêm lượt chuyển đổi VHLO → StableHLO trong VhloLegalizeToStablehlo.cpp
- Đối với các phiên bản mới của các thao tác hiện có:
- Thêm cơ hội trong VhloOps.td
- Cập nhật bản đồ ánh xạ StableHLO thành VHLO trong MapStablehloToVhlo.h
- Thêm lượt chuyển đổi giữa phiên bản op mới và cũ trong VhloToVersion.cpp
- Đối với các loại hoặc thuộc tính mới:
- Thêm loại trong VhloTypes.td hoặc thuộc tính trong VhloAttrs.td
- Thêm lượt chuyển đổi StableHLO → VHLO trong StablehloLegalizeToVhlo.cpp
- Thêm lượt chuyển đổi VHLO → StableHLO trong VhloLegalizeToStablehlo.cpp
3. Thêm / cập nhật bài kiểm thử đơn vị
Người đóng góp thay đổi không tương thích chịu trách nhiệm về cả kiểm thử đơn vị tích cực và âm tính của tính năng, cũng như kiểm thử đơn vị về khả năng tương thích.
Kiểm thử đơn vị về khả năng tương thích bao gồm việc cập nhật stablehlo_legalize_to_vhlo.mlir để đảm bảo rằng StableHLO thực hiện các chuyến đi khứ hồi với phiên bản VHLO mới nhất, cũng như mọi kiểm thử khả năng tương thích ngược hoặc xuôi cần thiết. Ví dụ: nếu thêm một hoạt động mới tại phiên bản X
bằng Y = X - 1
, hãy thêm một tệp kiểm thử như vhlo_to_version_downgrade_invalid.0_Y_0.mlir
cho biết hoạt động đó không được hỗ trợ trước phiên bản X
. Nếu thêm phiên bản mới của một vận hành, hãy thêm một tệp kiểm thử như vhlo_to_version_downgrade.0_Y_0.mlir
để cho biết rằng bạn có thể hạ cấp hoạt động đó thành công.
Nếu toán tử của bạn có các thuộc tính mặc định, hãy đưa vào các chương trình kiểm thử cho thấy các thuộc tính mặc định được chuyển đổi tuần tự và chuyển đổi tuần tự lại một cách chính xác.
4. Thêm kiểm thử chuyển đổi tuần tự theo phiên bản
Sau khi thêm các chương trình kiểm thử vào stablehlo_legalize_to_vhlo.mlir
, hãy sao chép tệp kiểm thử phiên bản có phiên bản lớn nhất vào một tệp mới ở phiên bản mới và thêm các chương trình kiểm thử mới vào tệp đó. Bạn cũng cần tạo một tệp mã byte liên kết bằng stablehlo-translate
:
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