การใช้อัลกอริทึมเมทริกซ์ tridiagonal ที่มีประสิทธิภาพ


12

ฉันกำลังแก้ปัญหาทางกายภาพโดยใช้ชุดตัวเลขโดยปริยาย สิ่งนี้ทำให้ฉันแก้สมการเชิงเส้นด้วยเมทริกซ์สามเหลี่ยม ฉันเขียนรหัสอัลกอริทึมนี้จาก Wikipedia ฉันสงสัยว่ามีห้องสมุดที่มีประสิทธิภาพที่ช่วยให้แก้สมการประเภทนี้ด้วยวิธีที่เหมาะสมหรือไม่ สิ่งสำคัญคือเมทริกซ์นั้นจะเปลี่ยนแปลงตัวเองเฉพาะเมื่อพารามิเตอร์ของระบบมีการเปลี่ยนแปลงดังนั้นฉันจึงมีโอกาสในการคำนวณขั้นตอนวิธีอัลกอริทึมใหม่สำหรับโบนัสรอบการแสดงที่ดี ฉันใช้ C ++


มันใหญ่แค่ไหนระบบมันต้องขนานกันไหม?
aterrel

1
ขนาดขึ้นอยู่กับความถูกต้องที่ต้องการ (จากค่าร้อยถึงหมื่นค่า) ตอนนี้ฉันกำลังเขียนโค้ดบนคอมพิวเตอร์แบบแกนเดียว แต่ก็เป็นไปได้ที่จะเข้าถึงซูเปอร์คอมพิวเตอร์ของมหาวิทยาลัยที่มีซีพียูจำนวนมากที่มีอยู่ดังนั้นการสนับสนุนขนานจะดี
gmk

คำตอบ:


15

คุณอาจจะเริ่มต้นด้วยการดำเนินงาน LAPACK ที่? gtsv เช่นdgtsv หากคุณต้องการรุ่นหน่วยความจำแบบกระจายคุณอาจต้องการเริ่มต้นด้วย p? gtsv ของ ScaLAPACK

แก้ไข: เนื่องจากเมทริกซ์ของคุณไม่เปลี่ยนแปลงบ่อยนักคุณสามารถหลีกเลี่ยงการซ้ำซ้อนเมทริกซ์ tridiagonal ซ้ำซ้อนโดยการแบ่งรูทีน LAPACK? gtsv เป็นขั้นตอนการแยกตัวประกอบ,? gttrf และขั้นตอนแก้ปัญหา? gttrs รูทีนที่มีชื่อคล้ายกันมีอยู่ใน ScaLAPACK ที่ให้บริการเพื่อจุดประสงค์เดียวกัน


ขอบคุณดูเหมือนว่าฉันต้องการ ตอนนี้ฉันจะลองเรียกใช้รูทีนนี้จากรหัสของฉัน
gmk

1
เนื่องจากคุณกำลังเรียกมันจาก C ++ ตรวจสอบให้แน่ใจว่าได้ประกาศต้นแบบภายในบล็อก "C" {} ภายนอก ขึ้นอยู่กับระบบของคุณคุณอาจจำเป็นต้องใส่เครื่องหมายขีดล่างกับชื่อรูทีน
Jack Poulson

2

สำหรับระบบกระจายขนาน : ฉันไม่ได้พยายาม ScaLAPACK ซึ่งมีแก้ tridiagonal ขนานซึ่งมีตัวอย่างที่พร้อมใช้งานออนไลน์ ฉันได้ลองใช้วิธีที่ David Moulton นำเสนอในสิ่งพิมพ์ LANLสำเร็จแล้ว การเขียนโค้ดนี้อาจมากกว่าที่คุณต้องการ แต่โดยการใช้ LAPACK มันจะแคบไปข้างหน้า


1

ฉันพบอัลกอริทึมแบบเรียกซ้ำที่น่าสนใจที่นี่ที่หน้า 975 มันดูมีแนวโน้มฉันสงสัยว่าคนที่มีประสบการณ์มากขึ้นพูดถึงมันอย่างไร


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