ข้ามไปที่เนื้อหา

การแบ่งโดเมน

เมื่อวิเคราะห์เมชขนาดใหญ่แบบขนานด้วยหลายโปรเซส จำเป็นต้องแบ่งเมชโดเมนเดียวออกเป็นโดเมนย่อย และสร้างข้อมูลล่วงหน้าสำหรับโดเมนที่แต่ละโปรเซสรับผิดชอบรวมถึงการสื่อสารระหว่างโดเมน การประมวลผลล่วงหน้านี้เรียกว่าการแบ่งโดเมน

ในการคำนวณแบบขนานของ 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

แนวคิดของการแบ่งแบบอิงโหนด

รูป 10.1 แนวคิดของการแบ่งแบบอิงโหนด

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

โหนดและเอลิเมนต์ที่แต่ละโดเมนย่อยเก็บในการแบ่งแบบอิงโหนด

รูป 10.2 โหนดและเอลิเมนต์ที่แต่ละโดเมนย่อยเก็บในการแบ่งแบบอิงโหนด

ตารางการสื่อสารสำหรับการแบ่งแบบอิงโหนดมีข้อมูลต่อไปนี้

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

โหนดนำเข้าของการแบ่งแบบอิงโหนด

รูป 10.3 โหนดนำเข้าของการแบ่งแบบอิงโหนด

โหนดส่งออกของการแบ่งแบบอิงโหนด

รูป 10.4 โหนดส่งออกของการแบ่งแบบอิงโหนด

เอลิเมนต์ที่ใช้ร่วมกันของการแบ่งแบบอิงโหนด

รูป 10.5 เอลิเมนต์ที่ใช้ร่วมกันของการแบ่งแบบอิงโหนด

การแบ่งแบบอิงเอลิเมนต์

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

แนวคิดของการแบ่งแบบอิงเอลิเมนต์

รูป 10.6 แนวคิดของการแบ่งแบบอิงเอลิเมนต์

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

โหนดและเอลิเมนต์ที่แต่ละโดเมนย่อยเก็บในการแบ่งแบบอิงเอลิเมนต์

รูป 10.7 โหนดและเอลิเมนต์ที่แต่ละโดเมนย่อยเก็บในการแบ่งแบบอิงเอลิเมนต์

ตารางการสื่อสารสำหรับการแบ่งแบบอิงเอลิเมนต์มีข้อมูลต่อไปนี้

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

เอลิเมนต์นำเข้าของการแบ่งแบบอิงเอลิเมนต์

รูป 10.8 เอลิเมนต์นำเข้าของการแบ่งแบบอิงเอลิเมนต์

เอลิเมนต์ส่งออกของการแบ่งแบบอิงเอลิเมนต์

รูป 10.9 เอลิเมนต์ส่งออกของการแบ่งแบบอิงเอลิเมนต์

โหนดที่ใช้ร่วมกันของการแบ่งแบบอิงเอลิเมนต์

รูป 10.10 โหนดที่ใช้ร่วมกันของการแบ่งแบบอิงเอลิเมนต์

ไม่ว่าชนิดการแบ่งใด 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 เป็นฟังก์ชันเสริมสำหรับตรวจสอบความเหมาะสมของการแบ่งก่อนรันการวิเคราะห์แบบขนาน

หัวข้อที่เกี่ยวข้อง

AI-assisted translation May contain errors Official docs Status