VHLO 체크리스트

VHLO에 대한 자세한 내용은 vhlo.md를 참조하세요.

호환되지 않는 변경사항 기여

호환성에 영향을 미치는 모든 변경사항은 RFC 프로세스를 거쳐야 합니다. 여기에는 기능 추가, 지원 중단, 이름 변경이 포함됩니다. RFC가 승인되면 다음 단계를 완료해야 합니다.

1. Version.h에서 버전 번호를 올리고 버전 로그를 업데이트합니다.

VHLO 연산, 속성, 유형 또는 변환을 업데이트하기 전에 Version.h에서 부 버전 번호를 늘리고 VhloDialect.td에서 버전 로그를 업데이트합니다.

추가된 모든 새 VHLO 기능은 이 범프된 버전을 사용합니다. 예를 들어 0.10.0 --> 0.11.0를 범프한 후에는 VhloOps.td의 새 작업에서 다음을 사용합니다.

VHLO_Op<"abs_v2", "0.11.0", "current">

2. 필수 VHLO 구현 및 변환 추가

새 기능을 통합하는 데 필요한 정확한 코드는 다르지만 대부분 다음을 변경해야 합니다.

3. 단위 테스트 추가/업데이트

호환되지 않는 변경사항의 기여자는 기능의 긍정적 및 부정적 단위 테스트와 호환성 단위 테스트를 모두 담당합니다.

호환성 단위 테스트에는 stablehlo_legalize_to_vhlo.mlir을 업데이트하여 StableHLO가 최신 버전의 VHLO와 왕복하고 필요한 추가 전방 또는 후방 호환성 테스트를 실행하는 것이 포함됩니다. 예를 들어 Y = X - 1를 사용하여 버전 X에 새 연산을 추가하는 경우 버전 X 이전에는 연산이 지원되지 않음을 보여주는 vhlo_to_version_downgrade_invalid.0_Y_0.mlir와 같은 테스트 파일을 추가합니다. 새 버전의 연산을 추가하는 경우 연산을 성공적으로 다운그레이드할 수 있음을 보여주는 vhlo_to_version_downgrade.0_Y_0.mlir와 같은 테스트 파일을 추가합니다.

연산자에 기본 속성이 있는 경우 기본값이 올바르게 직렬화되고 역직렬화된다는 것을 보여주는 테스트를 포함합니다.

4. 버전이 지정된 직렬화 테스트 추가

stablehlo_legalize_to_vhlo.mlir에 테스트를 추가한 후 가장 큰 버전의 버전이 지정된 테스트 파일을 새 버전의 새 파일에 복사하고 새 테스트도 해당 파일에 추가합니다. 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