ห้องสมุดสำหรับการแก้ปัญหาระบบเชิงเส้นหร็อมแหร็ม


21

มีห้องสมุดที่แตกต่างกันจำนวนมากที่ช่วยแก้ระบบสมการเชิงเส้นหร็อมแหร็ม แต่ฉันพบว่ามันยากที่จะเข้าใจว่าความแตกต่างคืออะไร

เท่าที่ผมสามารถบอกได้ว่ามีสามแพคเกจที่สำคัญ: Trilinos , PETScและIntel MKL พวกเขาสามารถแก้เมทริกซ์แบบเบาบางพวกมันทั้งหมดนั้นเร็ว (เท่าที่ฉันสามารถบอกได้ว่าฉันไม่สามารถหาเกณฑ์มาตรฐานที่แข็งแกร่งสำหรับพวกมัน) และพวกมันทั้งหมดสามารถต่อขนานกันได้ สิ่งที่ฉันไม่สามารถค้นหาได้คือความแตกต่าง

ดังนั้นความแตกต่างระหว่างระบบเชิงเส้นที่กระจัดกระจายแตกต่างกันคืออะไร?

คำตอบ:


29

มีอีกมากมายที่นั่นทุกคนมีเป้าหมายและมุมมองที่แตกต่างกันของปัญหา มันขึ้นอยู่กับสิ่งที่คุณพยายามแก้ไข นี่คือรายการแพ็กเกจที่ไม่สมบูรณ์ออกไป อย่าลังเลที่จะเพิ่มรายละเอียดเพิ่มเติม

แพ็คเกจตัวแก้ซ้ำแบบกระจายขนาดใหญ่

  • PETSc - แพคเกจที่เน้นไปที่วิธีการย่อยของ Krylov และการสลับระหว่างตัวแก้เชิงเส้นอย่างง่ายดาย น้ำหนักเบากว่าคนอื่น ๆ ในหมวดหมู่นี้มาก
  • Trilinos - แพ็คเกจจำนวนมากที่มุ่งไปที่แอปพลิเคชั่น FEM
  • Hypre - คล้ายกับทั้งสองข้อ โดดเด่นเนื่องจากตัวแก้ปัญหาหลายดีมาก (ซึ่งสามารถดาวน์โหลดได้โดย PETSc)

แพคเกจ Solver Direct Solver

แพ็คเกจ Direct Direct Solver

  • SuiteSparse - UMFPACKเป็นตัวแก้ปัญหาที่ดีมาก แต่มีตัวแก้วัตถุประสงค์พิเศษอื่น ๆ อีกมากมายอยู่ที่นี่
  • Intel Math Kernel Library - ห้องสมุดคุณภาพสูงจาก Intel; ยังมีตัวแก้ซ้ำแบบขนาน (แต่ไม่มีอะไรขนานกันอย่างหนาแน่น)
  • Matrix Template Library - บางครั้ง Generics สามารถทำให้โค้ดเร็วขึ้นมาก

สภาพแวดล้อมแบบโต้ตอบ (มากกว่าสำหรับระบบที่เล็กมาก)

รายการอื่น ๆ

  • รายชื่อซอฟต์แวร์ที่ว่างสำหรับJack Algebra ของ Linear พีชคณิต

9

MKL ไม่ได้ทำการแจกแจงแบบขนาน (เช่น MPI) และการสนับสนุนสำหรับนักแก้ปัญหาเบาบางนั้นเป็นพื้นฐาน แต่ไม่แน่นอนที่ระดับของอีกสองคน ปัจจุบันมีเกณฑ์มาตรฐานที่มีความหมายเพียงหนึ่งเดียวเท่านั้น: ประสิทธิภาพที่ปรับขยายได้ของผลิตภัณฑ์ Sparse Matrix-Vector (SpMV) เนื่องจากนี่เป็นแบนด์วิดธ์ของหน่วยความจำที่ จำกัด คุณจึงสามารถทำได้ ทั้ง PETSc และ Trilinos ทำได้ดีในเรื่องนี้

ความแตกต่างที่แท้จริงคือสภาพแวดล้อมการเขียนโปรแกรมที่ทำให้คุณมีประสิทธิผลมากขึ้น


ดังนั้นถ้าคุณต้องการทำงานใน C หรือ C ++ ล่ะ?
Andrew Spott

มันเปิดกว้างกว่านี้นิดหน่อย คุณสามารถโทรหา Trilinos หรือ PETSc ได้จากภาษาคอมพิวเตอร์เชิงตัวเลขส่วนใหญ่ (C, Python, C ++ และ Fortran เป็นตัวเลือกที่ใช้งานได้ทั้งหมดและ MATLAB)
Aron Ahmadia

PETSc จัดการกับอาร์เรย์ F90 อย่างถูกต้อง :) และโมเดลวัตถุทั้งหมดมีอยู่ใน Matlab
Matt Knepley

1
PETSc และ Trilinos มีส่วนร่วมกับชุมชนต่าง ๆ ในระดับหนึ่ง บางทีคุณควรพิจารณาปัญหาประเภทแรกที่คุณต้องการแก้ไขและหากตัวอย่างที่มีอยู่ของปัญหาที่คล้ายคลึงกันนั้นมีอยู่ในชุดเครื่องมือทั้งสองแล้ว
Aron Ahmadia

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