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