ปัญหา n-body ความโน้มถ่วงสามารถแก้ไขในแบบคู่ขนานได้อย่างไร?


25

ปัญหา n-body ความโน้มถ่วงสามารถแก้ไขเป็นตัวเลขแบบขนานได้อย่างไร?

การแลกเปลี่ยนความซับซ้อนที่มีความแม่นยำเป็นไปได้หรือไม่?

ความแม่นยำมีอิทธิพลต่อคุณภาพของรุ่นอย่างไร


บทความนี้อธิบายถึงการใช้งานที่เป็นไปได้ด้วย OpenMP
Geremia

คำตอบ:


27

มีอัลกอริทึมหลากหลาย บาร์นส์ฮัทเป็นที่นิยมวิธีการและวิธี multipole ด่วนเป็นมากความซับซ้อนมากขึ้นทางเลือกO(ยังไม่มีข้อความเข้าสู่ระบบยังไม่มีข้อความ)O(ยังไม่มีข้อความ)

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

คุณสามารถค้นหากระดาษที่ผ่านการอภิปราย FMM บนเครื่อง petascale ที่นี่


2
BH หรือที่เรียกว่ารหัสต้นไม้ดูเหมือนว่าจะใช้งานได้ดีกว่าที่มีความแม่นยำต่ำ นี่คือกระดาษที่รวมวิธีการต่างๆเข้าด้วยกัน แต่ฉันยังไม่เคยเห็นงานนี้เลย
Matt Knepley

13

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


8

ในฐานะที่เป็นแหล่งข้อมูลทางเลือกคุณสามารถดูวิธีการคล้าย Ewald แบบอิงตาข่าย การกำเนิดของ "อนุภาคตาข่าย" (เช่น PPPM และอนุภาคตาข่ายเรียบวาลด์) ตั้งอยู่ในแบบจำลองของกาแล็กซีสำหรับฟิสิกส์ดาราศาสตร์; การเชื่อมต่อกับค่าธรรมเนียมเป็นผลข้างเคียงโดยไม่ได้ตั้งใจ (ซึ่งเพิ่งเกิดขึ้นกับการใช้งานดั้งเดิมในที่สุด)

เมื่อไม่นานมานี้มีวรรณกรรมเกี่ยวกับวิธีการรวมหลายระดับซึ่งคล้ายกับวิธีการหลายอย่างรวดเร็วและบาร์นส์ - ฮัท แต่อาจเสนอข้อได้เปรียบในสถานการณ์ที่แตกต่างกัน (รูปทรงเรขาคณิตทั่วไปที่ยืดหยุ่นและยืดหยุ่น


8

สำหรับปัญหา n-body ความโน้มถ่วงแบบคลาสสิกฉันคิดว่าบทความสองข้อต่อไปนี้ทำงานได้ดีในการพูดคุยเกี่ยวกับความกล้าในการใช้งานแบบขนานสำหรับขั้นตอนการประเมินแรง แม้ว่าเอกสารจะกล่าวถึงการใช้ GPU พวกเขาทำได้ดีในการพูดคุยเรื่องความขนานและให้รายละเอียดของอัลกอริทึม:

บทความนี้โดย Nyland, Harris และ Prins นำเสนออัลกอริธึม n-body โดยตรงใน CUDA สำหรับ GPU

นี้กระดาษอื่น ๆโดยโยโกตะและ Barba มีการสนทนาที่ดีบนของ treecode และอัลกอริทึม multipole รวดเร็วนอกจากนี้ยังมีในบริบทของ GPU-คอมพิวเตอร์

คำถามของคุณเกี่ยวกับความถูกต้องของการจำลองเชิงตัวเลขของ n-bodyนั้นมีส่วนเกี่ยวข้องมากกว่าและมีรายละเอียดที่สำคัญมากมายที่คำตอบสามารถวางไข่หนังสือหลายเล่มได้ ฉันคิดว่าสิ่งที่ดีที่สุดที่ควรทำคือให้หนังสืออ้างอิงถึงคุณ ฉันแนะนำ:

การจำลอง N-body ความโน้มถ่วงโดย Sverre J. Aarseth

แบบจำลองคอมพิวเตอร์โดยใช้อนุภาคโดย Hockney และ Eastwood (ขออภัยไม่มีรุ่น PDF)


4

หากคุณต้องการวิธีการนำไปปฏิบัติที่เรียบง่ายซึ่งไม่เหมาะสมในแง่ของความรู้สึกเชิงซีติคคุณอาจต้องการใช้การสื่อสารที่รวบรวมได้ทั้งหมด เนื่องจากแต่ละ N-bodies ต้องรู้ถึงผลกระทบความโน้มถ่วงของวัตถุอื่นมันจึงเป็นสิ่งสำคัญที่หน่วยประมวลผลทุกคนต้องรู้ชุดข้อมูลทั้งหมด นี่คือสิ่งที่การดำเนินการรวบรวมทั้งหมดทำ มีหนังสือดีๆเล่มหนึ่ง: การเขียนโปรแกรมแบบขนานใน C กับ MPI และ OPENMP โดย Michael J. Quinn (2004) ซึ่งกล่าวถึงหัวข้อนี้ในหน้า 82 อย่างแน่นอนมันอาจคุ้มค่าที่จะเริ่มต้นกับคุณ


3
O(n2)

นั่นเป็นเรื่องจริง แม้ว่าตามที่ระบุไว้ก่อนหน้านี้เป็นการดำเนินการที่ง่ายไม่จำเป็นต้องมีประสิทธิภาพ
เปาโล

+1 คำตอบอื่น ๆ ทั้งหมดคาดว่า OP กำลังมองหาประสิทธิภาพของ tera หรือ petascale FMM และคล้ายกันทำให้รู้สึกตรงข้ามกับวิธีการที่ไร้เดียงสามากขึ้น
Stefano M

1

ดู Google Scholar และค้นหาการอ้างอิงถึง HACC และ GADGET ท่ามกลางรหัสอื่น ๆ


2
คุณสามารถเพิ่มรายละเอียดเพิ่มเติมเล็กน้อยว่าทำไมคุณถึงแนะนำ HACC และ GADGET
พอล

1
พวกเขาเป็นทั้งรหัสจักรวาลวิทยาโปรไฟล์สูงที่มีตัวแก้แรงโน้มถ่วง
เจฟฟ์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.