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

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

ขณะใช้งานการดำเนินการ

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

หลังจากใช้การดำเนินการ

  1. ใน StablehloOps.td ให้ทำดังนี้

    1. โปรดตรวจสอบว่า summary ในหน่วยงานไกล่เกลี่ยข้อพิพาทนอกศาลเป็นไปตามรูปแบบมาตรฐาน (ตั๋วที่เกี่ยวข้อง)
    2. เพิ่มความคิดเห็นโดยอ้างอิงป้ายกำกับข้อจำกัด (เช่น Cn หรือ In) จากแท็ก ในรูปแบบ xyz_cn หรือ xyz_in สำหรับการดำเนินการ XyzOp เพื่อระบุ ความสอดคล้องระหว่างข้อจำกัดในหน่วยงานไกล่เกลี่ยข้อพิพาทนอกศาลและตามข้อกำหนด ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มป้ายกำกับข้อจำกัดเป็นความคิดเห็น พร้อมกับ 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 สำหรับการดำเนินการ XyzOp เพื่อระบุ ว่าส่วนใดของตัวยืนยันและฟังก์ชันรูปร่างสอดคล้องกับ ในข้อกำหนด
      1. คุณสามารถมีความคิดเห็นที่มีป้ายกำกับข้อจำกัดหลายป้าย หรือให้มี ความคิดเห็นหลายรายการที่มีป้ายกำกับข้อจำกัดเดียวกัน ทั้งหมดขึ้นอยู่กับ วิธีนำข้อจำกัดมาใช้ หากมีข้อจำกัดติดต่อกัน ย่อเป็น xyz_cn...xyz_cm, xyz_in...xyz_jn
      2. ในกรณีที่มีความคลาดเคลื่อนระหว่างข้อจำกัดใน เทียบกับการใช้งานในข้อกำหนด ปัญหาแบบเปิดที่สะท้อนถึง ความคลาดเคลื่อนดังกล่าว
  3. ในการทดสอบล่าม

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

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

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

    1. ตรวจสอบว่ามีข้อจำกัดทั้งหมดที่เกี่ยวข้องกับการทดสอบการอนุมานรูปร่าง ในไฟล์นี้ โดยใช้หลักเกณฑ์การตั้งชื่อเดียวกันกับที่ระบุไว้ข้างต้น
    2. ย้ายการทดสอบการอนุมานรูปร่างใดก็ได้จาก ops_stablehlo.mlir ลงในไฟล์นี้
  7. ใน spec.md

    1. เพิ่มลิงก์ไปยัง stablehlo/tests/interpret/<op_mnemonic>.mlir "ตัวอย่าง" ส่วน (เช่น ตัวอย่างเพิ่มเติม)
    2. โปรดตรวจสอบว่าข้อมูลจำเพาะมีตัวอย่างเพียง 1 รายการ
    3. ตรวจสอบว่าตัวอย่างข้อมูลจำเพาะเป็นไปตามหลักเกณฑ์การทดสอบ
    4. ตรวจสอบว่าตัวอย่างการทดสอบข้อมูลจำเพาะตีความได้
    5. โปรดตรวจสอบว่าตัวอย่างข้อมูลจำเพาะเหมือนกับที่ระบุในเอกสารการไกล่เกลี่ยข้อพิพาทนอกศาล
  8. ใน status.md ให้ทำดังนี้

    1. อัปเดต "ล่าม" ลงใน yes