이 문서에서는 인터프리터의 작업을 구현하고 검토하기 위한 가이드라인을 요약합니다. 인증기 및 유형 추론과 관련된 몇 가지 보조 작업 항목을 의도적으로 포함했으며, 인터프리터 구현에 따라 이 두 가지 측면의 진전을 도모한다는 개념입니다.
작업을 구현하는 동안
- 인증 및 유형 추론 메서드와 상응하는 테스트를 검토할 때 참조로 사용할 수 있도록 이 내용과 유사한 명시적으로 작성된 테스트 전략을 PR 설명에 제공합니다. 검토자는 설명이 포괄적인지 다시 확인합니다.
- 까다로운 구현 세부정보와 잠재적인 기능 차이를 확인하려면 hlo_evaluator를 참고하세요.
- 버그나 누락된 기능이 있다면 해당 소프트웨어 구성요소의 티켓을 제출하세요.
작업을 구현한 후
-
- 작업의 ODS에 있는
summary
가 표준 형식을 따라야 합니다. (관련 티켓) 작업
XyzOp
의 경우xyz_cn
또는xyz_in
형식으로 사양의 제약 조건 라벨 (예:Cn
또는In
)을 참조하는 주석을 추가하여 ODS의 제약 조건과 사양 간의 대응을 식별합니다. 다음 예는 mlirTraits
및TypeConstraints
와 함께 제약조건 라벨을 주석으로 추가하는 방법을 보여줍니다.xyz_c4
는StableHLO_FooOp
클래스에 정의된 제약 조건을 나타냅니다 (예:StableHLO_ShapedInterfaceOp
,StableHLO_UnaryElementwiseOp
,StableHLO_Op
등).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*/ .... ); );
- 작업의 ODS에 있는
TypeInference.cpp 및 StablehloOps.cpp에서 다음을 실행합니다.
- '다음 속성 확인:...'과 같은 내용의 주석을 삭제합니다.
- 작업
XyzOp
의 경우xyz_cn
또는xyz_in
형식의 사양에서 제약조건 라벨 (예:Cn
또는In
)을 참조하는 주석을 추가하여 인증기 및 도형 함수의 어떤 부분이 사양의 어떤 제약조건에 해당하는지 식별합니다.- 제약 조건 라벨이 여러 개인 주석이 있거나 제약조건 라벨이 동일한 주석이 여러 개 있어도 괜찮습니다. 모든 것은 제약 조건이 구현되는 방식에 따라 달라집니다. 연속 제약 조건이 있으면
xyz_cn...xyz_cm, xyz_in...xyz_jn
로 압축합니다. - 구현의 제약 조건과 사양의 제약 조건 간에 불일치가 있는 경우 이 불일치를 반영하는 미해결 문제가 있는지 확인하세요.
- 제약 조건 라벨이 여러 개인 주석이 있거나 제약조건 라벨이 동일한 주석이 여러 개 있어도 괜찮습니다. 모든 것은 제약 조건이 구현되는 방식에 따라 달라집니다. 연속 제약 조건이 있으면
인터프리터 테스트에서:
interpret_<op_mnemonic>.mlir
라는 파일을 추가합니다.- 테스트 가이드라인에 따라 테스트를 작성합니다.
testdata 디렉터리에서 다음을 실행합니다.
- 새로 추가된 작업이 적용되는 사용 중지된 테스트를 모두 실행합니다.
- 테스트에 통과하면
RUN-DISABLED
를RUN
로 변환하여 사용 설정합니다. - 정밀도 불일치 이외의 이유로 테스트가 실패하면 구현/테스트를 수정합니다.
- 정밀도 불일치의 경우 테스트에
RUN-DISABLED(#1278)
태그를 지정합니다 (아직 완료하지 않은 경우).
-
- 인증기 및 유형 추론 메서드의 각 제약조건에 관한 테스트 (양성 또는 음성)가 하나 이상 있어야 합니다. ODS에서 다루는 제약 조건은 테스트되지 않습니다. 이러한 테스트는 제약 조건이 충족되지 않거나 양성인지 테스트하여 추론된 형태가 올바른지 테스트합니다.
- 테스트 중인 작업과 관련된 모든 테스트가 함께 배치되었는지 확인합니다.
- 테스트 중인 작업과 관련된 모든 테스트 앞에
CHECK-LABEL
lit 매크로가 추가되었는지 확인합니다. - 작업
XyzOp
의 함수 테스트 제약 조건Cn
,Im
등의 경우xyz_cn_im_...
형식을 사용하여 테스트의 함수 이름을 선택합니다. 제안된 형식이 적용되지 않는 경우 기존 이름을 유지하세요. - 위 단계가 완료되면 테스트 중인 작업과 관련된 모든 테스트를 함수 이름에 따라 알파벳순으로 정렬합니다.
- ccov가 작업의 90% 이상 적용 범위를 표시할 때까지 테스트를 계속 추가합니다.
-
- 위에서 언급한 동일한 이름 지정 가이드라인에 따라 도형 추론 테스트와 관련된 모든 제약 조건이 이 파일에 있는지 확인합니다.
- ops_stablehlo.mlir 파일에서 도형 추론 테스트를 이 파일로 이동합니다.
spec.md에서 다음을 실행합니다.
-
- 'Translateer' 열을
yes
로 업데이트합니다.
- 'Translateer' 열을