-sdy-aggressive-propagate

เรียกใช้อัลกอริทึมการแพร่กระจายการแยกส่วนอย่างหนัก

เผยแพร่การแยกส่วนด้วยกลยุทธ์การเผยแพร่ปัจจัยที่มุ่งเน้นผลลัพธ์ กลยุทธ์พื้นฐานจะเผยแพร่การแยกข้อมูลโดยไม่เกิดข้อขัดแย้งเท่านั้น ส่วนกลยุทธ์เชิงรุกจะแก้ไขข้อขัดแย้ง การตั้งค่าให้ก้าวร้าวมากขึ้นจะช่วยลดร่องรอยหน่วยความจําได้ แต่อาจทําให้การสื่อสารที่เป็นไปได้ลดลง

ตัวเลือก:

  • -keep-sharding-rules: เก็บกฎการแยกข้อมูลการดำเนินการที่มีอยู่และที่สร้างไว้หรือไม่
  • -module-dump-directory: ตำแหน่งที่จะวางโมดูลที่เขียนใหม่เพื่อแก้ไขข้อบกพร่อง
  • -conservative-propagation: ห้ามไม่ให้ใช้แกนแยกและแกนที่มีการแบ่งที่ไม่แบ่งได้ในระหว่างการนำไปใช้งาน
  • -debug-sharding-origins: บันทึกข้อมูลเกี่ยวกับต้นทางของการจัดกลุ่มในโมดูล MLIR หรือไม่ ข้อมูลเหล่านี้จะเป็นการจัดสรรให้กับอินพุต เอาต์พุต ข้อจำกัดการแยกส่วน และการคำนวณด้วยตนเองของฟังก์ชันก่อนการนำไปใช้งาน
  • -debug-edge-source-sharding: บันทึกข้อมูลเกี่ยวกับแหล่งที่มาของอุปกรณ์ขอบของการจัดสรรในโมดูล MLIR หรือไม่ เหล่านี้คือโอเปอเรนด์/ผลลัพธ์ที่นําการแยกกลุ่มไปใช้กับผลลัพธ์ของโอเปอเรชันบางรายการ
  • -propagation-strategy: กลยุทธ์การนำไปใช้งานปัจจัยที่จะใช้

-sdy-basic-propagate

เรียกใช้อัลกอริทึมการนำไปใช้งานการแยกส่วนข้อมูลพื้นฐาน

อัลกอริทึมการนำไปใช้งานพื้นฐานเป็นกลยุทธ์การนำไปใช้งานในระดับต่ำสุดในลําดับชั้น ซึ่งจะไม่แก้ไขข้อขัดแย้งใดๆ แต่จะนำไปใช้งานแกนที่เข้ากันได้ระหว่างตัวดำเนินการและผลลัพธ์ทั้งหมดแทน

ตัวเลือก:

  • -keep-sharding-rules: เก็บกฎการแยกข้อมูลการดำเนินการที่มีอยู่และที่สร้างไว้หรือไม่
  • -module-dump-directory: ตำแหน่งที่จะวางโมดูลที่เขียนใหม่เพื่อแก้ไขข้อบกพร่อง
  • -conservative-propagation: ห้ามไม่ให้ใช้แกนแยกและแกนที่มีการแบ่งที่ไม่แบ่งได้ในระหว่างการนำไปใช้งาน
  • -debug-sharding-origins: บันทึกข้อมูลเกี่ยวกับต้นทางของการจัดกลุ่มในโมดูล MLIR หรือไม่ ข้อมูลเหล่านี้จะเป็นการจัดสรรให้กับอินพุต เอาต์พุต ข้อจำกัดการแยกส่วน และการคำนวณด้วยตนเองของฟังก์ชันก่อนการนำไปใช้งาน
  • -debug-edge-source-sharding: บันทึกข้อมูลเกี่ยวกับแหล่งที่มาของอุปกรณ์ขอบของการจัดสรรในโมดูล MLIR หรือไม่ เหล่านี้คือโอเปอเรนด์/ผลลัพธ์ที่นําการแยกกลุ่มไปใช้กับผลลัพธ์ของโอเปอเรชันบางรายการ

-sdy-op-priority-propagate

เรียกใช้อัลกอริทึมการนำไปใช้งานลำดับความสำคัญของการดำเนินการ

เผยแพร่การแยกส่วนในรอบตามชุดการคาดคะเนการดำเนินการ แต่ละ heuristics จะกำหนดว่าจะนำไปใช้กับการดำเนินการหนึ่งๆ ในทิศทางไปข้างหน้า ย้อนกลับ หรือทั้ง 2 ทิศทาง

ซึ่งจะเริ่มที่ op-priority 0 และเพิ่มขึ้นจนกว่าระบบจะใช้ Heuristic ทั้งหมดของการดำเนินการแล้ว และโปรแกรมถึงจุดคงที่

สําหรับลําดับความสําคัญ p ระบบจะพิจารณา heuristics ของการดำเนินการทั้งหมดจาก 0 <= i < p ระบบจะเลือกทิศทางที่สื่อความหมายมากที่สุดสำหรับแต่ละการดำเนินการด้วย BOTH > BACKWARD == FORWARD > NONE หากในระหว่างการวนซ้ำนี้ ระบบเห็น FORWARD/BACKWARD ก่อนแล้วเห็น BACKWARD/FORWARD ทิศทางคือ BOTH

กลยุทธ์การนำไปใช้งานนี้จะขยายกลยุทธ์การนำไปใช้งานแบบเชิงรุก ซึ่งหมายความว่าจะมีการนำไปใช้งานแบบเชิงรุกอย่างเต็มรูปแบบในการวนซ้ำตามลําดับความสําคัญของการดำเนินการแต่ละครั้ง (ดู AggressivePropagationPass)

ตัวเลือก:

  • -keep-sharding-rules: เก็บกฎการแยกข้อมูลการดำเนินการที่มีอยู่และที่สร้างไว้หรือไม่
  • -module-dump-directory: ตำแหน่งที่จะวางโมดูลที่เขียนใหม่เพื่อแก้ไขข้อบกพร่อง
  • -conservative-propagation: ห้ามไม่ให้ใช้แกนแยกและแกนที่มีการแบ่งที่ไม่แบ่งได้ในระหว่างการนำไปใช้งาน
  • -debug-sharding-origins: บันทึกข้อมูลเกี่ยวกับต้นทางของการจัดกลุ่มในโมดูล MLIR หรือไม่ ข้อมูลเหล่านี้จะเป็นการจัดสรรให้กับอินพุต เอาต์พุต ข้อจำกัดการแยกส่วน และการคำนวณด้วยตนเองของฟังก์ชันก่อนการนำไปใช้งาน
  • -debug-edge-source-sharding: บันทึกข้อมูลเกี่ยวกับแหล่งที่มาของอุปกรณ์ขอบของการจัดสรรในโมดูล MLIR หรือไม่ เหล่านี้คือโอเปอเรนด์/ผลลัพธ์ที่นําการแยกกลุ่มไปใช้กับผลลัพธ์ของโอเปอเรชันบางรายการ
  • -propagation-strategy: กลยุทธ์การนำไปใช้งานปัจจัยที่จะใช้
  • -run-op-priority-propagation: กำหนดว่าจะเรียกใช้ (หรือข้าม) การนำไปใช้งานระดับความสำคัญระดับปฏิบัติการหรือไม่

-sdy-populate-op-sharding-rules

ป้อนข้อมูลการดำเนินการที่ลงทะเบียนทั้งหมดด้วย OpShardingRuleAttr

สร้างข้อมูลการดำเนินการที่ลงทะเบียนทั้งหมดด้วย OpShardingRuleAttr ซึ่งใช้สําหรับการแก้ไขข้อบกพร่อง/การทดสอบกฎการแยกข้อมูลที่มีการลงทะเบียน การนำไปใช้งานจะทําเช่นนี้อยู่แล้วในทันท่วงที แต่พาสนี้จะทําทั้งหมดพร้อมกัน

ตัวเลือก

-conservative-propagation : whether to disllow rules that can propagate non-divisible sharding axes

-sdy-user-priority-propagate

เรียกใช้อัลกอริทึมการนำไปใช้งานตามลําดับความสําคัญของผู้ใช้

เผยแพร่การแยกส่วนในรอบ โดยเริ่มจากลำดับความสำคัญสูงสุด (ตัวเลขต่ำสุด ซึ่งปกติคือ p0) ไปจนถึงลำดับความสำคัญต่ำสุด (ตัวเลขสูงสุด) กล่าวคือ ในการวนซ้ำที่ i ระบบจะเผยแพร่เฉพาะการแยกกลุ่มมิติข้อมูลที่มีลําดับความสําคัญ <=i

กลยุทธ์การนำไปใช้งานนี้จะขยายกลยุทธ์การนำไปใช้งานตามลําดับความสําคัญของการดำเนินการ ซึ่งหมายความว่าในการวนซ้ำตามลําดับความสําคัญของผู้ใช้แต่ละครั้ง ระบบจะใช้การนำไปใช้งานตามลําดับความสําคัญของการดำเนินการอย่างเต็มรูปแบบ (ดู OpPriorityPropagationPass)

ตัวเลือก:

  • -keep-sharding-rules: เก็บกฎการแยกข้อมูลการดำเนินการที่มีอยู่และที่สร้างไว้หรือไม่
  • -module-dump-directory: ตำแหน่งที่จะวางโมดูลที่เขียนใหม่เพื่อแก้ไขข้อบกพร่อง
  • -conservative-propagation: ห้ามไม่ให้ใช้แกนแยกและแกนที่มีการแบ่งที่ไม่แบ่งได้ในระหว่างการนำไปใช้งาน
  • -debug-sharding-origins: บันทึกข้อมูลเกี่ยวกับต้นทางของการจัดกลุ่มในโมดูล MLIR หรือไม่ ข้อมูลเหล่านี้จะเป็นการจัดสรรให้กับอินพุต เอาต์พุต ข้อจำกัดการแยกส่วน และการคำนวณด้วยตนเองของฟังก์ชันก่อนการนำไปใช้งาน
  • -debug-edge-source-sharding: บันทึกข้อมูลเกี่ยวกับแหล่งที่มาของอุปกรณ์ขอบของการจัดสรรในโมดูล MLIR หรือไม่ เหล่านี้คือโอเปอเรนด์/ผลลัพธ์ที่นําการแยกกลุ่มไปใช้กับผลลัพธ์ของโอเปอเรชันบางรายการ
  • -propagation-strategy: กลยุทธ์การนำไปใช้งานปัจจัยที่จะใช้
  • -run-op-priority-propagation: กำหนดว่าจะเรียกใช้ (หรือข้าม) การนำไปใช้งานระดับความสำคัญระดับปฏิบัติการหรือไม่