รายการตรวจสอบข้อกำหนดสำหรับ StableHLO

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

  1. ตรวจสอบว่าคอลัมน์ "ข้อกำหนด" ใน status.md ระบุว่า "ใช่"
  2. ตรวจสอบว่าชื่อส่วนตรงกับข้อมูลช่วยจำของการดำเนินการใน ODS
  3. ตรวจสอบว่าส่วน "Semantics" ตรงกับความหมายของการดำเนินการของ XLA หรือไม่
  4. ตรวจสอบว่าส่วน "อินพุต" และ "เอาต์พุต" มีลักษณะดังต่อไปนี้
    1. แสดงรายการเดียวกันกับ ODS
    2. แสดงรายการเดียวกันกับ HloInstruction::CreateFromProto
    3. มีคำสั่งเหมือนกับ ODS
    4. หากมีคำขอที่ไม่ตรงกัน ให้ตรวจสอบว่ามีตั๋วที่เกี่ยวข้องหรือไม่
  5. ตรวจสอบว่าส่วน "ข้อจำกัด" มีคุณสมบัติต่อไปนี้หรือไม่
    1. ตรงกับ shape_inference.cc ของ XLA
    2. ตรงกับ hlo_verifier.cc ของ XLA
    3. ตรงกับ ODS
    4. ตรงกับ StablehloOps.cpp
    5. หากมีคำขอที่ไม่ตรงกัน ให้ตรวจสอบว่ามีตั๋วที่เกี่ยวข้องหรือไม่ ลิงก์ตั๋วทั้งหมดดังกล่าวในข้อกำหนดเฉพาะในสถานที่ที่เจาะจงที่สุดเท่าที่จะเป็นไปได้ (เช่น หากตั๋วเกี่ยวข้องกับข้อจำกัดที่ยังไม่มี ให้ลิงก์ตั๋วในข้อจำกัดนั้น)
    6. หากส่วนที่เกี่ยวข้องของ ODS และ StablehloOps.cpp ตรงกับข้อกำหนด ให้ตรวจสอบว่าคอลัมน์ "กระบวนการยืนยัน" และ "การอนุมานประเภท" ใน status.md ระบุว่า "ใช่"
  6. ตรวจสอบว่าส่วน "ตัวอย่าง" มีลักษณะดังต่อไปนี้
    1. มีแค่ตัวอย่างเดียว (ในอนาคต เราจะลิงก์ไปยังตัวอย่างเพิ่มเติมจากชุดทดสอบล่ามของ StableHLO)
    2. ใช้ไวยากรณ์ MLIR ที่ถูกต้องโดยการเรียกใช้ stablehlo-opt ในตัวอย่างโค้ด
    3. ใช้ไวยากรณ์ MLIR ทั่วไปซึ่งหาได้ด้วยการเรียกใช้ stablehlo-opt -mlir-print-op-generic (เราใช้ไวยากรณ์ทั่วไปในข้อกำหนดเพื่อไม่ให้ต้องเปลี่ยนข้อมูลจำเพาะของการเปลี่ยนแปลง Preprinter)
  7. ตรวจสอบว่า description ใน ODS ของการดำเนินการมีลักษณะดังนี้
    1. รวมประโยคแรกของข้อกำหนด
    2. จากนั้นจึงลิงก์ไปยังส่วนที่เกี่ยวข้องของข้อกำหนด
    3. จากนั้นใช้ตัวอย่างเดียวกันกับข้อกำหนด แต่ใช้ไวยากรณ์ที่ค่อนข้างดีซึ่งรับได้โดยการเรียกใช้ stablehlo-opt
  8. ตรวจสอบว่าไฟล์ที่เกี่ยวข้องกับการใช้การยืนยันและข้อจํากัดการอนุมานประเภทเป็นไปตามหลักเกณฑ์ที่ระบุไว้ด้านล่าง
    1. ปฏิบัติตามหลักเกณฑ์ #1 สำหรับ StablehloOps.td
    2. ทำตามหลักเกณฑ์ #2 สำหรับ TypeInference.cpp และ StablehloOps.cpp
    3. ทำตามหลักเกณฑ์ #5 สำหรับ ops_stablehlo.mlir
    4. ทำตามหลักเกณฑ์ #6 สำหรับ infer_stablehlo.mlir