Danh sách kiểm tra thông số kỹ thuật của StableHLO

Trong tài liệu này, chúng tôi tóm tắt các nguyên tắc xem xét các thay đổi đối với quy cách. Hiện tại, những thay đổi này thường liên quan đến việc kiểm tra nhiều nội dung ở nhiều nguồn. Vì vậy, tài liệu này tóm tắt tất cả để đơn giản hoá việc xem xét:

  1. Kiểm tra để đảm bảo cột "Thông số kỹ thuật" trong status.md hiển thị "yes" (có), hãy thêm một hàng nếu bạn thêm một hoạt động mới.
  2. Kiểm tra xem tên phần có khớp với phần ghi nhớ của hoạt động trong ODS hay không.
  3. Kiểm tra xem phần "Ngữ nghĩa" có khớp với Ngữ nghĩa hoạt động của XLA hay không.
  4. Kiểm tra xem các mục "Inputs" (Đầu vào) và "Outputs" (Đầu ra) hay không:
    1. Liệt kê các mục giống với ODS.
    2. Liệt kê các mục giống như HloInstruction::CreateFromProto.
    3. Được sắp xếp theo thứ tự giống hệt như ODS.
    4. Nếu có thông tin không khớp, hãy kiểm tra để đảm bảo có các phiếu yêu cầu hỗ trợ tương ứng.
  5. Kiểm tra xem phần "Quy tắc ràng buộc":
    1. Khớp với shape_inference.cc của XLA.
    2. Khớp với hlo_verifier.cc của XLA.
    3. Khớp với ODS.
    4. Khớp với StablehloOps.cpp.
    5. Nếu có thông tin không khớp, hãy kiểm tra để đảm bảo có các phiếu yêu cầu hỗ trợ tương ứng. Liên kết tất cả các phiếu yêu cầu hỗ trợ đó trong quy cách, ở những vị trí cụ thể nhất có thể (ví dụ: nếu một phiếu yêu cầu hỗ trợ có một điều kiện ràng buộc chưa được triển khai, hãy liên kết phiếu yêu cầu hỗ trợ ngay trong quy tắc ràng buộc đó).
    6. Nếu các phần tương ứng của ODS và StablehloOps.cpp khớp với thông số kỹ thuật, hãy kiểm tra để đảm bảo các cột "Xác minh" và "Dự đoán kiểu" trong status.md có nội dung là "có".
  6. Kiểm tra xem phần "Ví dụ":
    1. Chỉ có một ví dụ. (Trong tương lai, chúng tôi sẽ liên kết đến nhiều ví dụ hơn từ bộ kiểm thử trình phiên dịch StableHLO).
    2. Sử dụng cú pháp MLIR hợp lệ bằng cách chạy stablehlo-opt trên mã ví dụ.
    3. Sử dụng cú pháp MLIR chung có thể lấy được bằng cách chạy stablehlo-opt -mlir-print-op-generic (chúng tôi sử dụng cú pháp chung trong phần thông số kỹ thuật để tránh phải thay đổi thông số kỹ thuật khi thực hiện các thay đổi của đẹpprinter).
  7. Kiểm tra để đảm bảo rằng description trong ODS của chiến dịch:
    1. Bao gồm câu đầu tiên của quy cách.
    2. Sau đó, liên kết đến phần tương ứng của thông số kỹ thuật.
    3. Sau đó, sử dụng ví dụ tương tự như quy cách nhưng thông qua cú pháp đẹp có thể lấy được bằng cách chạy stablehlo-opt.
  8. Kiểm tra để đảm bảo các tệp liên quan đến việc triển khai các quy tắc ràng buộc đối với quy trình xác minh và suy luận kiểu dữ liệu đều tuân thủ các nguyên tắc nêu dưới đây:
    1. Làm theo nguyên tắc #1 đối với StablehloOps.td.
    2. Làm theo nguyên tắc #2 cho TypeInference.cppStablehloOps.cpp.
    3. Làm theo nguyên tắc #5 đối với ops_stablehlo.mlir.
    4. Làm theo nguyên tắc #6 đối với infer_stablehlo.mlir.
  9. Đánh giá op về các tác động phụ và tính suy đoán.
    1. Nếu tác vụ không có tác dụng phụ và luôn có thể suy đoán, hãy cung cấp cho tác vụ đó trait Pure. Trường hợp này hiếm khi xảy ra vì hầu hết các hoạt động đều cho phép hình dạng động, từ đó có thể dẫn đến việc hình dạng không khớp trong thời gian chạy. Đây là hành vi không xác định. Một số hoạt động cũng có thể có hành vi không xác định trong các tình huống khác. Hầu hết các hoạt động đều không có tác dụng phụ (các hoạt động đó phải có đặc điểm NoMemoryEffect).
    2. Hầu hết hoạt động đều thuộc một trong các đặc điểm HLO_SpeculatableIf*. Nếu hoạt động không phù hợp với bất kỳ hoạt động nào trong số đó, hãy cung cấp tính năng ConditionallySpeculatable và triển khai các phương thức giao diện. Thêm chương trình kiểm thử vào stablehlo/tests/ops_speculatability.mlir để kiểm thử logic suy đoán.