-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
: กำหนดว่าจะเรียกใช้ (หรือข้าม) การนำไปใช้งานระดับความสำคัญระดับปฏิบัติการหรือไม่