StableHLO 통역기 체크리스트

이 문서에서는 인터프리터의 작업을 구현하고 검토하기 위한 가이드라인을 요약합니다. 인증기 및 유형 추론과 관련된 몇 가지 보조 작업 항목을 의도적으로 포함했으며, 인터프리터 구현에 따라 이 두 가지 측면의 진전을 도모한다는 개념입니다.

작업을 구현하는 동안

  1. 인증 및 유형 추론 메서드와 상응하는 테스트를 검토할 때 참조로 사용할 수 있도록 이 내용과 유사한 명시적으로 작성된 테스트 전략을 PR 설명에 제공합니다. 검토자는 설명이 포괄적인지 다시 확인합니다.
  2. 까다로운 구현 세부정보와 잠재적인 기능 차이를 확인하려면 hlo_evaluator를 참고하세요.
  3. 버그나 누락된 기능이 있다면 해당 소프트웨어 구성요소의 티켓을 제출하세요.

작업을 구현한 후

  1. StablehloOps.td에서:

    1. 작업의 ODS에 있는 summary가 표준 형식을 따라야 합니다. (관련 티켓)
    2. 작업 XyzOp의 경우 xyz_cn 또는 xyz_in 형식으로 사양의 제약 조건 라벨 (예: Cn 또는 In)을 참조하는 주석을 추가하여 ODS의 제약 조건과 사양 간의 대응을 식별합니다. 다음 예는 mlir TraitsTypeConstraints와 함께 제약조건 라벨을 주석으로 추가하는 방법을 보여줍니다. xyz_c4StableHLO_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*/
            ....
         );
      );
      
  2. TypeInference.cppStablehloOps.cpp에서 다음을 실행합니다.

    1. '다음 속성 확인:...'과 같은 내용의 주석을 삭제합니다.
    2. 작업 XyzOp의 경우 xyz_cn 또는 xyz_in 형식의 사양에서 제약조건 라벨 (예: Cn 또는 In)을 참조하는 주석을 추가하여 인증기 및 도형 함수의 어떤 부분이 사양의 어떤 제약조건에 해당하는지 식별합니다.
      1. 제약 조건 라벨이 여러 개인 주석이 있거나 제약조건 라벨이 동일한 주석이 여러 개 있어도 괜찮습니다. 모든 것은 제약 조건이 구현되는 방식에 따라 달라집니다. 연속 제약 조건이 있으면 xyz_cn...xyz_cm, xyz_in...xyz_jn로 압축합니다.
      2. 구현의 제약 조건과 사양의 제약 조건 간에 불일치가 있는 경우 이 불일치를 반영하는 미해결 문제가 있는지 확인하세요.
  3. 인터프리터 테스트에서:

    1. interpret_<op_mnemonic>.mlir라는 파일을 추가합니다.
    2. 테스트 가이드라인에 따라 테스트를 작성합니다.
  4. testdata 디렉터리에서 다음을 실행합니다.

    1. 새로 추가된 작업이 적용되는 사용 중지된 테스트를 모두 실행합니다.
    2. 테스트에 통과하면 RUN-DISABLEDRUN로 변환하여 사용 설정합니다.
    3. 정밀도 불일치 이외의 이유로 테스트가 실패하면 구현/테스트를 수정합니다.
    4. 정밀도 불일치의 경우 테스트에 RUN-DISABLED(#1278) 태그를 지정합니다 (아직 완료하지 않은 경우).
  5. ops_stablehlo.mlir에서:

    1. 인증기 및 유형 추론 메서드의 각 제약조건에 관한 테스트 (양성 또는 음성)가 하나 이상 있어야 합니다. ODS에서 다루는 제약 조건은 테스트되지 않습니다. 이러한 테스트는 제약 조건이 충족되지 않거나 양성인지 테스트하여 추론된 형태가 올바른지 테스트합니다.
    2. 테스트 중인 작업과 관련된 모든 테스트가 함께 배치되었는지 확인합니다.
    3. 테스트 중인 작업과 관련된 모든 테스트 앞에 CHECK-LABEL lit 매크로가 추가되었는지 확인합니다.
    4. 작업 XyzOp의 함수 테스트 제약 조건 Cn, Im 등의 경우 xyz_cn_im_... 형식을 사용하여 테스트의 함수 이름을 선택합니다. 제안된 형식이 적용되지 않는 경우 기존 이름을 유지하세요.
    5. 위 단계가 완료되면 테스트 중인 작업과 관련된 모든 테스트를 함수 이름에 따라 알파벳순으로 정렬합니다.
    6. ccov가 작업의 90% 이상 적용 범위를 표시할 때까지 테스트를 계속 추가합니다.
  6. infer_stablehlo.mlir에서:

    1. 위에서 언급한 동일한 이름 지정 가이드라인에 따라 도형 추론 테스트와 관련된 모든 제약 조건이 이 파일에 있는지 확인합니다.
    2. ops_stablehlo.mlir 파일에서 도형 추론 테스트를 이 파일로 이동합니다.
  7. spec.md에서 다음을 실행합니다.

    1. '예시' 섹션에 interpret_<op_mnemonic>.mlir 링크를 추가합니다(예: 예시 더보기).
    2. 사양에 예시가 1개만 있어야 합니다.
    3. 사양 예가 테스트 가이드라인을 준수하는지 확인하세요.
    4. 사양 예 테스트가 해석 가능해야 합니다.
    5. 사양 예가 ODS에 있는 예와 동일한지 확인합니다.
  8. status.md:

    1. 'Translateer' 열을 yes로 업데이트합니다.