การแบ่งโดเมน¶
เมื่อวิเคราะห์เมชขนาดใหญ่แบบขนานด้วยหลายโปรเซส จำเป็นต้องแบ่งเมชโดเมนเดียวออกเป็นโดเมนย่อย และสร้างข้อมูลล่วงหน้าสำหรับโดเมนที่แต่ละโปรเซสรับผิดชอบรวมถึงการสื่อสารระหว่างโดเมน การประมวลผลล่วงหน้านี้เรียกว่าการแบ่งโดเมน
ในการคำนวณแบบขนานของ FrontISTR hecmw_part1 จะแบ่งเมชโดเมนเดียวออกเป็นโดเมนย่อยและสร้างข้อมูลเมชแบบกระจาย จากนั้น fistr1 แบบขนานจะอ่านข้อมูลดังกล่าวและใช้ร่วมกับข้อมูลที่จำเป็นสำหรับการสื่อสารระหว่างโดเมนในตัวแก้สมการแบบขนาน
หน้านี้อธิบายชนิดการแบ่ง วิธีแบ่ง ความลึกของบริเวณทับซ้อน และการจัดการจุดสัมผัสที่เลือกในการแบ่งโดเมน สำหรับขั้นตอนการรัน hecmw_part1 รูปแบบเฉพาะของไฟล์ควบคุม และข้อความแสดงข้อผิดพลาด โปรดดูหัวข้อที่เกี่ยวข้อง
ภาพรวมของฟังก์ชัน¶
การแบ่งโดเมนคือการแบ่งเมชโดเมนเดียวออกเป็นหลายโดเมนย่อย FrontISTR สร้างข้อมูลเมชแบบกระจายโดยผสานชนิดการแบ่ง วิธีแบ่ง จำนวนโดเมน และความลึกของบริเวณทับซ้อน
| เกณฑ์การเลือก | ตัวเลือกหลัก | บทบาท |
|---|---|---|
| ชนิดการแบ่ง | การแบ่งแบบอิงโหนด, การแบ่งแบบอิงเอลิเมนต์ | กำหนดว่าจะใช้โหนดหรือเอลิเมนต์เป็นหน่วยในการกำหนดโดเมนเจ้าของ |
| วิธีแบ่ง | RCB, METIS (pMETIS / kMETIS) | กำหนดวิธีสร้างขอบเขตโดเมน |
| จำนวนโดเมน | จำนวนเต็มบวกใด ๆ (สำหรับ RCB คือ \(2^n\)) | กำหนดจำนวนโดเมนย่อยของข้อมูลเมชแบบกระจาย โดยทั่วไปให้เท่ากับจำนวนโปรเซส MPI |
| ความลึกของบริเวณทับซ้อน | จำนวนเต็มตั้งแต่ 1 ขึ้นไป | กำหนดขอบเขตที่โดเมนข้างเคียงเก็บซ้ำกัน ระบุสำหรับการแบ่งแบบอิงโหนด |
| ตารางการสื่อสาร | ข้อมูลนำเข้า/ส่งออก, ข้อมูลที่ใช้ร่วมกัน | กำหนดการแลกเปลี่ยนข้อมูลที่จำเป็นระหว่างโดเมนย่อยข้างเคียง และสร้างโดยอัตโนมัติขณะแบ่งโดเมน |
เนื่องจากตารางการสื่อสารถูกรวมอยู่ในข้อมูลเมชแบบกระจาย ผู้ใช้จึงไม่จำเป็นต้องแก้ไขโดยตรงในการวิเคราะห์ทั่วไป fistr1 แบบขนานจะอ่านข้อมูลเมชแบบกระจายนี้และแก้สมการเชิงเส้นด้วยวิธีตรงแบบขนาน เช่น MUMPS หรือด้วยวิธีทำซ้ำ
วิธีเลือกการแบ่งโดเมน¶
สำหรับการวิเคราะห์โครงสร้างและการนำความร้อนทั่วไป ให้พิจารณาการแบ่งแบบอิงโหนดก่อน เพราะจัดการการสื่อสารค่าที่โหนดซึ่งจำเป็นต่อการวิเคราะห์ไฟไนต์เอลิเมนต์แบบขนานได้ง่ายและสามารถกำหนดความลึกของบริเวณทับซ้อน ได้ การแบ่งแบบอิงเอลิเมนต์เหมาะเป็นตัวเลือกเมื่อจำเป็นต้องจัดการข้อมูลหลังแบ่งโดยมีเอลิเมนต์เป็นศูนย์กลาง เช่น การวิเคราะห์แบบคัปปลิง
เลือกวิธีแบ่งตามรูปทรงและจำนวนโดเมน สำหรับรูปทรงเรียบง่ายที่สามารถกำหนดจำนวนโดเมนเป็น \(2^n\) ได้ RCB เป็นตัวเลือกที่เรียบง่ายและเสถียร หากรูปทรงซับซ้อนหรือต้องการจำนวนโดเมนใด ๆ ให้พิจารณา METIS ซึ่งอิงการแบ่งกราฟ
| ลักษณะของปัญหา | ตัวเลือกที่แนะนำ |
|---|---|
| การวิเคราะห์โครงสร้างหรือการนำความร้อนแบบขนานทั่วไป | การแบ่งแบบอิงโหนด |
| การใช้งานที่ใช้ข้อมูลแบบกระจายโดยมีเอลิเมนต์เป็นศูนย์กลาง เช่น การวิเคราะห์แบบคัปปลิง | การแบ่งแบบอิงเอลิเมนต์ |
| รูปทรงเรียบง่ายใกล้เคียงทรงสี่เหลี่ยมมุมฉากและจำนวนโดเมนเป็น \(2^n\) | RCB |
| รูปทรงซับซ้อนหรือจำนวนโดเมนใด ๆ | METIS |
| ปัญหาการสัมผัสหรือข้อจำกัด MPC ที่ใช้การปรับสภาพล่วงหน้า SAINV | ใช้การแบ่งแบบอิงโหนดและตั้งความลึกของบริเวณทับซ้อน เป็น 2 ขึ้นไป |
โดยทั่วไปจำนวนโดเมนควรเท่ากับจำนวนโปรเซส MPI สำหรับขั้นตอนการรันแบบขนานและการกำหนดจำนวนโปรเซส โปรดดู การวิเคราะห์ด้วยการประมวลผลแบบขนาน และสำหรับความสัมพันธ์ระหว่างการปรับสภาพล่วงหน้า SAINV กับความลึกของบริเวณทับซ้อน โปรดดู ตัวแก้สมการและการปรับสภาพล่วงหน้า ด้วย
ชนิดการแบ่ง¶
ชนิดการแบ่งกำหนดว่าหน่วยใดในเมชจะได้รับโดเมนย่อยเจ้าของเพียงหนึ่งโดเมน การแบ่งแบบอิงโหนดกำหนดเจ้าของให้โหนด ส่วนการแบ่งแบบอิงเอลิเมนต์กำหนดเจ้าของให้เอลิเมนต์ ในทั้งสองกรณี ข้อมูลที่จำเป็นสำหรับการคำนวณกับโดเมนย่อยข้างเคียงจะถูกเก็บเป็นบริเวณทับซ้อน
การแบ่งแบบอิงโหนด¶
ในการแบ่งแบบอิงโหนด จะกำหนดโดเมนย่อยเจ้าของเพียงหนึ่งโดเมนให้ทุกโหนด และเอลิเมนต์จะถูกเก็บแบบบริเวณทับซ้อนในโดเมนย่อยข้างเคียง ระบุในอินพุตด้วย !PARTITION, TYPE=NODE-BASED

แต่ละโดเมนย่อยจะเก็บโหนดภายใน เอลิเมนต์ที่มีโหนดภายใน และโหนดที่ประกอบเป็นเอลิเมนต์เหล่านั้น

ตารางการสื่อสารสำหรับการแบ่งแบบอิงโหนดมีข้อมูลต่อไปนี้
- โหนดนำเข้า: โหนดที่ใช้ภายในโดเมนย่อยแต่เป็นของโดเมนย่อยอื่น
- โหนดส่งออก: โหนดภายในที่เป็นโหนดนำเข้าของโดเมนย่อยอื่น
- เอลิเมนต์ที่ใช้ร่วมกัน: เอลิเมนต์ที่ใช้ร่วมกับโดเมนย่อยอื่น



การแบ่งแบบอิงเอลิเมนต์¶
ในการแบ่งแบบอิงเอลิเมนต์ จะกำหนดโดเมนย่อยเจ้าของเพียงหนึ่งโดเมนให้ทุกเอลิเมนต์ และโหนดจะถูกเก็บแบบบริเวณทับซ้อนในโดเมนย่อยข้างเคียง ระบุในอินพุตด้วย !PARTITION, TYPE=ELEMENT-BASED

แต่ละโดเมนย่อยจะเก็บเอลิเมนต์ภายใน โหนดที่ประกอบเป็นเอลิเมนต์ภายใน และเอลิเมนต์ที่มีโหนดเหล่านั้น

ตารางการสื่อสารสำหรับการแบ่งแบบอิงเอลิเมนต์มีข้อมูลต่อไปนี้
- เอลิเมนต์นำเข้า: เอลิเมนต์ที่ใช้ภายในโดเมนย่อยแต่เป็นของโดเมนย่อยอื่น
- เอลิเมนต์ส่งออก: เอลิเมนต์ภายในที่เป็นเอลิเมนต์นำเข้าของโดเมนย่อยอื่น
- โหนดที่ใช้ร่วมกัน: โหนดที่ใช้ร่วมกับโดเมนย่อยอื่น



ไม่ว่าชนิดการแบ่งใด hecmw_part1 จะสร้างตารางการสื่อสารโดยอัตโนมัติและเขียนลงในข้อมูลเมชแบบกระจาย ดังนั้นในการวิเคราะห์ทั่วไป ผู้ใช้ไม่จำเป็นต้องสร้างข้อมูลนำเข้า/ส่งออกด้วยตนเอง
วิธีแบ่ง¶
วิธีแบ่งกำหนดว่าจะสร้างขอบเขตของโดเมนย่อยอย่างไร FrontISTR รองรับ RCB ที่อิงค่าพิกัดและ METIS ที่อิงการแบ่งกราฟ
| วิธีแบ่ง | ลักษณะ | ข้อจำกัดและข้อควรระวังหลัก |
|---|---|---|
| RCB | แบ่งเป็นสองส่วนซ้ำ ๆ ตามค่าพิกัด สามารถแบ่งรูปทรงเรียบง่ายได้รวดเร็ว | จำนวนโดเมนจำกัดเป็น \(2^n\) และต้องกำหนดแกนแบ่ง |
| pMETIS | แบ่งตามกราฟโดยคำนึงถึงการเชื่อมต่อระหว่างโดเมน | ใช้ได้ในบิลด์ที่เปิดใช้ METIS |
| kMETIS | อิงการแบ่งกราฟเป็นหลายโดเมน ทำให้สร้างขอบเขตโดเมนสำหรับรูปทรงซับซ้อนได้ง่าย | ใช้ได้ในบิลด์ที่เปิดใช้ METIS |
RCB ย่อมาจาก Recursive Coordinate Bisection และแบ่งเมชออกเป็นสองส่วนซ้ำ ๆ ตามแกนพิกัด เหมาะเมื่อจำนวนโดเมนสามารถเป็น \(2^n\) และใช้งานง่ายกับรูปทรงเรียบง่ายคล้ายทรงสี่เหลี่ยมมุมฉาก
METIS มองความสัมพันธ์การเชื่อมต่อของเมชเป็นกราฟและสร้างโดเมนย่อยด้วยการแบ่งกราฟ เหมาะสำหรับรูปทรงซับซ้อนหรือเมื่อไม่ต้องการจำกัดจำนวนโดเมนเป็น \(2^n\) การใช้ METIS ต้องเปิดใช้ไลบรารี METIS ขณะบิลด์ สำหรับการจัดการไลบรารีที่ต้องพึ่งพา โปรดดู ไลบรารีที่จำเป็นและไลบรารีเสริม
ความลึกของบริเวณทับซ้อน¶
ความลึกของบริเวณทับซ้อน คือจำนวนชั้นของช่วงที่โดเมนย่อยข้างเคียงเก็บซ้ำกัน สำหรับการแบ่งแบบอิงโหนด สามารถระบุจำนวนเต็มตั้งแต่ 1 ขึ้นไปด้วยพารามิเตอร์ DEPTH ของ !PARTITION หากไม่ระบุ ค่าความลึกของบริเวณทับซ้อน คือ 1
สำหรับการวิเคราะห์แบบขนานทั่วไป DEPTH=1 เพียงพอ อย่างไรก็ตาม เมื่อใช้การปรับสภาพล่วงหน้าตระกูล SAI เช่น SAINV กับปัญหาการสัมผัสหรือข้อจำกัด MPC การเพิ่มความลึกของบริเวณทับซ้อน เป็น 2 ขึ้นไปอาจช่วยปรับปรุงคุณภาพของการปรับสภาพล่วงหน้า
นอกจากนี้ เมื่อใช้สูตร selective edge/node smoothing (FORM341=SELECTIVE_ESNS) สำหรับเอลิเมนต์เตตระฮีดรอนเชิงเส้น 341 แบบ MPI ขนาน ต้องตั้งความลึกของบริเวณทับซ้อน เป็น 2 ขึ้นไปด้วย เนื่องจากการ smoothing แบบอิงขอบ/อิงโหนดเฉลี่ยปริมาณของเอลิเมนต์ที่อยู่ติดกับเอลิเมนต์เป้าหมาย การประกอบความแข็งภายในโดเมนย่อยจึงต้องใช้ข้อมูลเอลิเมนต์ที่อยู่ถัดออกไปอีกหนึ่งชั้น และ DEPTH=1 ค่าเริ่มต้นจะให้ข้อมูลไม่เพียงพอสำหรับ smoothing ใกล้ขอบเขตโดเมน สำหรับรายละเอียดสูตรเอลิเมนต์ โปรดดู ไลบรารีเอลิเมนต์
เมื่อเพิ่มความลึกของบริเวณทับซ้อน จำนวนโหนดและเอลิเมนต์ที่โดเมนย่อยข้างเคียงต้องเก็บจะเพิ่มขึ้น จึงเพิ่มทั้งการใช้หน่วยความจำและปริมาณการสื่อสาร ควรกำหนดโดยพิจารณาสมดุลระหว่างการลู่เข้าที่ดีขึ้นกับต้นทุนการคำนวณที่เพิ่มขึ้น สำหรับการเลือกการปรับสภาพล่วงหน้า โปรดดู ตัวแก้สมการและการปรับสภาพล่วงหน้า
การจัดการจุดสัมผัส¶
เมื่อแบ่งเมชที่มีคู่สัมผัส สามารถกำหนดนโยบายการจัดวางจุดสัมผัสในโดเมนด้วยพารามิเตอร์ CONTACT ของ !PARTITION การจัดวางจุดสัมผัสมีผลต่อเสถียรภาพและปริมาณการสื่อสารของการวิเคราะห์แบบขนานที่มีการค้นหาการสัมผัสหรือข้อจำกัดการสัมผัส
| ค่า | ลักษณะ |
|---|---|
DEFAULT | ใช้นโยบายการจัดวางมาตรฐาน |
SIMPLE | ไม่ให้น้ำหนักพิเศษแก่จุดสัมผัส และใช้การจัดวางใกล้เคียงการแบ่งทั่วไป |
AGGREGATE | แบ่งโดยมีแนวโน้มจัดกลุ่มโหนดที่เกี่ยวข้องกับคู่สัมผัสไว้ด้วยกัน |
DISTRIBUTE | แบ่งเพื่อลดการกระจุกตัวของโหนดฝั่ง master ของการสัมผัสในบางโดเมนย่อย |
สำหรับเมชที่ไม่มีการสัมผัส ไม่จำเป็นต้องพิจารณาพารามิเตอร์ CONTACT หากการวิเคราะห์แบบขนานที่มีการสัมผัสมีปัญหาการลู่เข้าหรือสมดุลโหลด ให้ทบทวนนโยบายการจัดวางจุดสัมผัส สำหรับรายละเอียดรูปแบบอินพุต โปรดดู !PARTITION
นอกเหนือจากนี้ สามารถเลือกวิธีการเป็นเจ้าของการสัมผัสแบบขนานด้วยพารามิเตอร์ CONTACT_OWNER โดย CONTACT กำหนดว่า “จะแบ่งอย่างไร” ส่วน CONTACT_OWNER กำหนดว่า “หลังแบ่งแล้ว ฝั่งใดจะรับผิดชอบ”
| ค่า | ลักษณะ |
|---|---|
MASTER | วิธีให้ master เป็นเจ้าของ (ค่าเริ่มต้น) แบ่งผิว master ตามโดเมนเจ้าของเอลิเมนต์ และทำสำเนาโหนด slave ไปยังแต่ละโดเมนเจ้าของ master |
SLAVE | วิธีให้ slave เป็นเจ้าของ โดยมีเพียงโดเมนเจ้าของเท่านั้นที่เก็บโหนด slave และจัดวางผิว master ทั้งหมดไว้ในโดเมนนั้น |
สำหรับ finite sliding (INTERACTION=FSLID ของ !CONTACT) หากโหนด slave ข้ามขอบเขตการแบ่งโดเมนของผิว master ในโหมด MASTER การค้นหาเพื่อนบ้านจะขาดต่อที่ขอบเขต ทำให้สูญเสียสถานะการสัมผัสและประวัติแรงเสียดทาน และคำตอบอาจขึ้นกับจำนวนโดเมน SLAVE หลีกเลี่ยงปัญหานี้ได้ สามารถระบุได้เฉพาะเมื่อ TYPE=NODE-BASED และจะเพิ่มการใช้หน่วยความจำในโดเมนที่เป็นเจ้าของ slave
การส่งออกภาพการแบ่งโดเมน¶
เมื่อระบุพารามิเตอร์ UCD ของ !PARTITION สามารถส่งออกไฟล์ UCD เพื่อตรวจสอบผลการแบ่งได้ ไฟล์ UCD ใช้ตรวจสอบหมายเลขโดเมนและขอบเขตการแบ่งด้วยเครื่องมือแสดงผล เช่น MicroAVS
หลังเปลี่ยนจำนวนโดเมน วิธีแบ่ง หรือความลึกของบริเวณทับซ้อน ควรตรวจสอบว่าโดเมนที่แบ่งแล้วไม่มีความไม่สมดุลหรือการแบ่งย่อยที่ผิดธรรมชาติ การส่งออก UCD เป็นฟังก์ชันเสริมสำหรับตรวจสอบความเหมาะสมของการแบ่งก่อนรันการวิเคราะห์แบบขนาน
หัวข้อที่เกี่ยวข้อง¶
- การวิเคราะห์ด้วยการประมวลผลแบบขนาน — ขั้นตอนรัน
hecmw_part1ไฟล์อินพุต และการตรวจสอบข้อมูลเมชแบบกระจายที่ส่งออก - ตัวแก้สมการและการปรับสภาพล่วงหน้า — ความสัมพันธ์ระหว่างตัวแก้สมการแบบขนาน การปรับสภาพล่วงหน้า SAINV และความลึกของบริเวณทับซ้อน
- รายการข้อความแสดงข้อผิดพลาด — ข้อความแสดงข้อผิดพลาดที่พบบ่อยของ
hecmw_part1และfistr1 - วิธีไฟไนต์เอลิเมนต์แบบขนาน — พื้นฐานทางทฤษฎีของวิธีแบ่งโดเมนและวิธีไฟไนต์เอลิเมนต์แบบขนาน
- !PARTITION — รูปแบบอินพุตข้อมูลควบคุมยูทิลิตีการแบ่งโดเมน