Danh sách kiểm tra cho trình diễn giải StableHLO

Trong tài liệu này, chúng tôi tóm tắt các nguyên tắc để triển khai và xem xét cho người phiên dịch. Chúng tôi đã chủ động đưa vào một số hành động phụ trợ mục liên quan đến trình xác minh và dự đoán loại, với ý tưởng tiến trình trên những khía cạnh đó cùng với việc triển khai phiên dịch.

Trong khi triển khai hoạt động

  1. Cung cấp chiến lược thử nghiệm bằng văn bản rõ ràng (trong phần mô tả PR) tương tự với này để sử dụng làm tài liệu tham khảo khi xem xét quá trình xác minh và suy luận loại phương thức và các kiểm thử tương ứng. Người đánh giá sẽ kiểm tra kỹ để đảm bảo mô tả là đầy đủ.
  2. Tham khảo ý kiến hlo_evaluator để xác định các chi tiết triển khai phức tạp và các lỗ hổng chức năng tiềm ẩn.
  3. Gửi phiếu yêu cầu hỗ trợ cho các thành phần phần mềm tương ứng nếu bạn phát hiện lỗi hoặc thiếu chức năng.

Sau khi triển khai hoạt động

  1. Trong StablehloOps.td:

    1. Đảm bảo rằng summary trong ODS của hoạt động tuân theo định dạng chuẩn. ( liên quan)
    2. Thêm nhận xét tham chiếu đến nhãn quy tắc ràng buộc (ví dụ: Cn hoặc In) từ ở định dạng xyz_cn hoặc xyz_in, cho op XyzOp, để xác định sự tương ứng giữa các quy tắc ràng buộc trong ODS và quy cách. Chiến lược phát hành đĩa đơn ví dụ sau cho biết cách thêm nhãn ràng buộc dưới dạng nhận xét cùng với mlir TraitsTypeConstraints. Lưu ý xyz_c4 đề cập đến quy tắc ràng buộc được xác định trong lớp StableHLO_FooOp (ví dụ: StableHLO_ShapedInterfaceOp, StableHLO_UnaryElementwiseOp StableHLO_Op, v.v.).

       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. Trong TypeInference.cppStablehloOps.cpp:

    1. Xoá nhận xét có nội dung như "Xác minh các thuộc tính sau: ...".
    2. Thêm nhận xét tham chiếu đến nhãn quy tắc ràng buộc (ví dụ: Cn hoặc In) từ thông số ở định dạng xyz_cn hoặc xyz_in, cho op XyzOp, để xác định phần nào của trình xác minh và hàm hình dạng tương ứng với phần nào của trình xác minh các hạn chế trong thông số kỹ thuật.
      1. Bạn có thể có một nhận xét có nhiều nhãn ràng buộc hoặc nhiều nhận xét có cùng nhãn ràng buộc. Tất cả phụ thuộc vào cách triển khai các quy tắc ràng buộc. Nếu có các điều kiện ràng buộc liên tiếp, kết hợp chúng dưới dạng xyz_cn...xyz_cm, xyz_in...xyz_jn.
      2. Trong trường hợp có sự không khớp giữa các điều kiện ràng buộc trong triển khai so với triển khai và các lệnh trong quy cách, hãy đảm bảo có một vấn đề chưa giải quyết xong phản ánh sự không nhất quán đó.
  3. Trong thử nghiệm phiên dịch:

    1. Thêm một tệp có tên là <op_mnemonic>.mlir.
    2. Viết mã kiểm thử theo nguyên tắc kiểm thử.
  4. Trong thư mục dữ liệu kiểm thử:

    1. Chạy mọi kiểm thử đã tắt có trong thao tác mới được thêm vào.
    2. Nếu kiểm thử đạt, hãy bật các chương trình kiểm thử đó bằng cách chuyển đổi RUN-DISABLED thành RUN.
    3. Nếu kiểm thử không thành công vì một số lý do khác với lý do không khớp về độ chính xác, hãy khắc phục triển khai/kiểm thử.
    4. Để xử lý các trường hợp độ chính xác không khớp, hãy gắn thẻ kiểm thử bằng RUN-DISABLED(#1278) (nếu nhưng việc đó chưa được thực hiện).
  5. Trong ops_stablehlo.mlir:

    1. Đảm bảo có ít nhất một kết quả xét nghiệm (dương tính hoặc âm tính) cho mỗi kết quả quy tắc ràng buộc trong trình xác minh và phương thức suy luận kiểu; quy tắc ràng buộc thuộc phạm vi điều chỉnh của cơ quan giải quyết tranh chấp không thuộc toà án sẽ không được kiểm tra. Những thử nghiệm này hầu hết sẽ có kết quả âm, kiểm thử các ràng buộc không được đáp ứng hoặc kiểm thử tích cực, kiểm tra xem hình dạng suy luận là chính xác.
    2. Đảm bảo rằng bạn đã đặt tất cả các thử nghiệm liên quan đến hoạt động đang được thử nghiệm khi kết hợp cùng nhau.
    3. Đảm bảo rằng tất cả các thử nghiệm liên quan đến hoạt động đang được kiểm thử đều thêm vào trước bằng macro lit CHECK-LABEL.
    4. Chọn tên hàm của các bài kiểm thử theo định dạng xyz_cn_im_... cho một hàm kiểm thử các điều kiện ràng buộc Cn, Im, v.v. cho cơ hội XyzOp. Trong trường hợp định dạng được đề xuất không áp dụng, giữ tên hiện tại.
    5. Sau khi hoàn tất bước trên, hãy sắp xếp tất cả các bài kiểm thử liên quan đến hoạt động trong kiểm thử theo thứ tự bảng chữ cái dựa trên tên hàm.
    6. Tiếp tục thêm các bài kiểm thử cho đến khi ccov hiển thị mức độ phù hợp >= 90% cho hoạt động.
  6. Trong infer_stablehlo.mlir:

    1. Đảm bảo tất cả các điều kiện ràng buộc liên quan đến kiểm thử suy luận hình dạng đều được xuất hiện trong tệp này, tuân theo cùng nguyên tắc đặt tên đã nêu ở trên.
    2. Di chuyển mọi kiểm thử suy luận hình dạng từ ops_stablehlo.mlir vào tệp này.
  7. Trong spec.md:

    1. Thêm đường liên kết đến stablehlo/tests/interpret/<op_mnemonic>.mlir vào phần "Ví dụ" mục (ví dụ: Ví dụ khác).
    2. Hãy đảm bảo thông số kỹ thuật chỉ có 1 ví dụ.
    3. Đảm bảo ví dụ về quy cách tuân thủ nguyên tắc kiểm thử.
    4. Đảm bảo quy trình kiểm thử mẫu quy cách có thể diễn giải được.
    5. Đảm bảo ví dụ về thông số kỹ thuật giống với ví dụ trong ODS.
  8. Trong status.md:

    1. Cập nhật tính năng "Phiên dịch" vào yes.