เช็กลิสต์สำหรับล่ามของ StableHLO

ในเอกสารนี้ เราสรุปหลักเกณฑ์ในการปรับใช้และการตรวจสอบสำหรับล่าม เราได้ตั้งใจรวมรายการการทำงานเสริมบางรายการที่เกี่ยวข้องกับผู้ตรวจสอบและการอนุมานประเภท โดยมีแนวคิดในการสร้างความคืบหน้าในขอบเขตเหล่านั้นควบคู่ไปกับการใช้อินเตอร์พรีเตอร์

ขณะติดตั้งใช้งานการทดสอบ

  1. ระบุกลยุทธ์การทดสอบที่เขียนไว้อย่างชัดแจ้ง (ในคำอธิบาย PR) ที่คล้ายกับข้อมูลนี้เพื่อใช้เป็นข้อมูลอ้างอิงขณะตรวจสอบวิธีการอนุมานประเภทการยืนยันและประเภท รวมถึงการทดสอบที่เกี่ยวข้อง ผู้ตรวจสอบจะตรวจสอบอีกครั้งว่า คำอธิบายดังกล่าวครอบคลุมทั้งหมด
  2. โปรดติดต่อ hlo_evaluator เพื่อระบุรายละเอียดการใช้งานที่ยุ่งยากและช่องโหว่ของฟังก์ชันการทำงานที่อาจเกิดขึ้น
  3. ส่งคำขอแจ้งปัญหาสำหรับคอมโพเนนต์ของซอฟต์แวร์ที่เกี่ยวข้องหากพบข้อบกพร่องหรือฟังก์ชันการทำงานขาดหายไป

หลังจากติดตั้งใช้งานการทดสอบ

  1. ใน StablehloOps.td:

    1. ตรวจสอบว่า summary ใน ODS ของการดำเนินการเป็นไปตามรูปแบบมาตรฐาน (ตั๋วที่เกี่ยวข้อง)
    2. เพิ่มความคิดเห็นที่อ้างอิงถึงป้ายกำกับข้อจำกัด (เช่น Cn หรือ In) จากข้อกำหนดในรูปแบบ xyz_cn หรือ xyz_in สำหรับ op XyzOp เพื่อระบุความสอดคล้องระหว่างข้อจำกัดใน ODS กับข้อกำหนด ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มป้ายกำกับข้อจํากัดเป็นความคิดเห็นควบคู่ไปกับ mlir Traits และ 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*/
            ....
         );
      );
      
  2. ใน TypeInference.cpp และ StablehloOps.cpp ให้ทำดังนี้

    1. ลบความคิดเห็นที่กล่าวถึง "ยืนยันพร็อพเพอร์ตี้ต่อไปนี้..."
    2. เพิ่มความคิดเห็นที่อ้างอิงถึงป้ายกำกับข้อจำกัด (เช่น Cn หรือ In) จากข้อกำหนดในรูปแบบ xyz_cn หรือ xyz_in สำหรับ op XyzOp เพื่อระบุว่าส่วนใดของเครื่องมือยืนยันและฟังก์ชันรูปร่างสอดคล้องกับข้อจำกัดใดในข้อกำหนด
      1. คุณสามารถมีความคิดเห็นที่มีป้ายกำกับข้อจำกัดหลายรายการหรือมีหลายความคิดเห็นที่มีป้ายกำกับข้อจำกัดเดียวกันก็ได้ ทั้งหมดขึ้นอยู่กับวิธีนำข้อจำกัดเหล่านั้นมาใช้ หากมีข้อจำกัดต่อเนื่อง ให้จำกัดเป็น xyz_cn...xyz_cm, xyz_in...xyz_jn
      2. ในกรณีที่มีความคลาดเคลื่อนระหว่างข้อจำกัดในการใช้งานกับข้อจำกัดในข้อกำหนด ต้องแน่ใจว่ามีปัญหาที่ยังไม่ได้รับการแก้ไขซึ่งแสดงถึงความคลาดเคลื่อนดังกล่าว
  3. ในการทดสอบการตีความ:

    1. เพิ่มไฟล์ชื่อ interpret_<op_mnemonic>.mlir
    2. เขียนการทดสอบตามหลักเกณฑ์การทดสอบ
  4. ในไดเรกทอรี testdata:

    1. เรียกใช้การทดสอบที่ปิดใช้ซึ่งอยู่ภายใต้การดำเนินการที่เพิ่มเข้ามาใหม่
    2. หากการทดสอบผ่าน ให้เปิดใช้โดยการแปลง RUN-DISABLED เป็น RUN
    3. หากการทดสอบไม่สำเร็จด้วยเหตุผลบางประการนอกเหนือจากความแม่นยําที่ไม่ตรงกัน ให้แก้ไขการติดตั้งใช้งาน/การทดสอบ
    4. สำหรับความแม่นยำที่ไม่ตรงกัน ให้ติดแท็กการทดสอบด้วย RUN-DISABLED(#1278) (หากยังไม่ได้ทำ)
  5. ใน ops_stablehlo.mlir:

    1. ตรวจสอบว่ามีการทดสอบอย่างน้อย 1 รายการ (เชิงบวกหรือเชิงลบ) สำหรับแต่ละข้อจำกัดในเครื่องมือตรวจสอบและวิธีการอนุมานประเภท โดยจะไม่มีการทดสอบข้อจำกัดที่อยู่ใน ODS การทดสอบเหล่านี้จะเป็นค่าลบเป็นส่วนใหญ่ โดยการทดสอบว่าไม่เป็นไปตามข้อจำกัดหรือไม่เป็นไปตามข้อจำกัด การทดสอบว่ารูปร่างที่สรุปนั้นถูกต้อง
    2. ตรวจสอบว่ามีการรวมการทดสอบทั้งหมดที่เกี่ยวข้องกับตัวเลือก "ปฏิบัติการ" ไว้ด้วยกัน
    3. ตรวจสอบว่ามีการเพิ่มมาโคร lit แบบ CHECK-LABEL ไว้ด้านหน้าการทดสอบทั้งหมดที่เกี่ยวข้องกับตัวเลือก "ทำการทดสอบ"
    4. เลือกชื่อฟังก์ชันของการทดสอบโดยใช้รูปแบบ xyz_cn_im_... สำหรับข้อจำกัดการทดสอบฟังก์ชัน Cn, Im ฯลฯ สำหรับ op XyzOp ในกรณีที่ไม่ได้ใช้รูปแบบที่เสนอ ให้ใช้ชื่อที่มีอยู่
    5. เมื่อทำตามขั้นตอนข้างต้นเสร็จแล้ว ให้จัดเรียงการทดสอบทั้งหมดที่เกี่ยวข้องกับการทดสอบของการทดสอบตามลำดับตัวอักษรตามชื่อฟังก์ชัน
    6. เพิ่มการทดสอบไปเรื่อยๆ จนกว่า ccov จะแสดงการครอบคลุม >= 90% ของ op
  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. อัปเดตคอลัมน์ "ล่าม" เป็น yes