อะไรคือความแตกต่างที่สำคัญระหว่าง PETSc และ Trilinos?


24

เท่าที่ผมสามารถบอกได้ทั้งสองขนาดใหญ่ทั่วไปกระทรวงพลังงานวิทยาศาสตร์การคำนวณกรอบซอฟต์แวร์สหรัฐ PETScและTrilinos ดูเหมือนว่าพวกเขาจะคล้ายกันในครั้งแรก, เกินความแตกต่างในภาษา (C กับ C ++) อะไรคือความแตกต่างที่สำคัญระหว่างสองกรอบงานและปัจจัยใดที่ควรมีอิทธิพลต่อการเลือกหนึ่งกรอบ (ไม่สนใจอคติเชิงสถาบันและโครงสร้างพื้นฐานที่มีอยู่)


1
มีการอภิปรายที่ค่อนข้างล้าสมัย (ตั้งแต่ปี 2009) บนกระดาน CFDเมื่อไม่นานมานี้ บางทีคำถามที่ดีกว่าที่จะถามคือ: ตั้งแต่เวลานั้นมีการเปลี่ยนแปลงที่สำคัญในการออกแบบของทั้งสองแพคเกจ?
aeismail

อะห์เหม็ดการสนทนานั้นมุ่งเน้นไปที่ผู้มีประสบการณ์ก่อน ฉันหวังว่าจะมีมุมมองที่กว้างกว่าการอภิปรายของนักแก้ปัญหาซ้ำ ๆ นอกจากนี้เนื่องจากมีการพูดคุยกันมากมายเกี่ยวกับ PETSc บน scicomp.SE ฉันคิดว่า Trilinos ควรได้รับการโพสต์บางส่วนที่เกี่ยวข้องกับเรื่องนี้และดูเหมือนว่านี่เป็นหนึ่งในคำถามแรกที่ผู้ใช้ Trilinos ควรถาม ฉันไม่รู้อะไรมากมายเกี่ยวกับ Trilinos หรือ PETSc ดังนั้นฉันจึงคิดว่าคำตอบจะช่วยให้ฉันเรียนรู้อะไรบางอย่างเช่นกัน
Geoff Oxberry

คำตอบ:


19

มีความแตกต่างอย่างมากในวัฒนธรรมรูปแบบการเข้ารหัสและความสามารถ อาจเป็นความแตกต่างพื้นฐานคือ Trilinos พยายามจัดสภาพแวดล้อมสำหรับการแก้ปัญหา FEM และ PETSc ให้สภาพแวดล้อมสำหรับการแก้ปัญหาพีชคณิตเชิงเส้นที่กระจัดกระจาย

ทำไมจึงมีความสำคัญ

  • Trilinos จะให้แพ็คเกจจำนวนมากที่เกี่ยวข้องกับส่วนที่แยกต่างหากของตัวแก้ปัญหา FEM บางครั้งแพคเกจเหล่านี้ทำงานร่วมกันบางครั้งพวกเขาทำไม่ได้ แม้แต่ส่วนประกอบพื้นฐานยังอยู่ในแพ็คเกจของตัวเองและเครื่องมือ C ++ ขั้นสูง
  • PETSC ให้รูทีนหลักจำนวนเล็กน้อยที่สามารถสร้างขึ้นได้ แต่ปล่อยให้นักแก้ปัญหา FEM ไปยังแพ็คเกจของบุคคลที่สาม ด้วยเหตุนี้จึงมีความเกี่ยวข้องกับชุมชนขนาดใหญ่กว่าเพียง FEM ยกตัวอย่างเช่นแม้แต่ผู้แก้ปัญหาไอเก็นก็เป็นบุคคลที่สามซึ่งเป็นส่วนสำคัญของพีชคณิตเชิงเส้น
  • บรรทัดล่าง Trilinos มุ่งเน้นการทำงานได้ดีภายในแพ็คเกจของตัวเองและ PETSc มีอินเทอร์เฟซที่เรียกใช้กับมิดเดิลแวร์แพ็คเกจจำนวนมาก (ฉันมักได้ยินชื่อมันว่า "น้ำหนักเบา" เพราะสิ่งนี้ แต่ฉันจะไม่เรียกร้อง)

IMHO ซึ่งคุณควรใช้จริง ๆ ขึ้นอยู่กับปัญหา โปรดแบ่งปันรายละเอียดเพิ่มเติมเพื่อให้เราตอบคำถามนั้น


ฉันไม่มีปัญหาเฉพาะในใจ ฉันสนใจที่จะได้รับประสบการณ์กับหนึ่งในแพคเกจใหญ่ ๆ เหล่านี้สำหรับการแก้ปัญหา PDE และต้องการทราบถึงข้อดีและข้อเสียเพื่อที่ฉันจะได้สามารถตัดสินใจได้อย่างชาญฉลาดมากขึ้นว่าจะใช้เวลากับฉันอย่างไร
Geoff Oxberry

11

หากคุณต้องการรับฟังจากผู้นำทางด้านเทคนิคของแพ็คเกจต่าง ๆ การซักถามจากมุมมองของผู้ใช้ HPC ปกติ Brock Palen และพอดคาสต์ RCEของ Jeff Squyres ' เป็นทรัพยากรที่ยอดเยี่ยม พวกเขามีตอนเกี่ยวกับPETScและTrilinosที่ชัดเจนมาก

aterrel นั้นถูกต้องในคำอธิบายของเขา - PETSc เป็นแพคเกจขนาดเล็กแบบบูรณาการและมีความคิดที่ดีในเชิงเส้นตรงและตัวแก้ปัญหาแบบไม่เชิงเส้นซึ่งเราสามารถใช้ในกรอบตัวแก้ปัญหา Trilinos เป็นชุดของแพคเกจที่รวมการพัฒนาซึ่งส่วนใหญ่มุ่งเป้าไปที่กรอบการแก้ปัญหานั้น


7

ให้ฉันเพิ่มความคิดเห็นที่ดีของ aterrel ว่า Trilinos เป็นกระเป๋าใบใหญ่ของ (Sandia) และ Petsc เป็นห้องสมุดที่เน้นความสำคัญมากกว่า หากคุณต้องการเปรียบเทียบคุณควรเปรียบเทียบการสนับสนุนตัวแก้ปัญหาแบบเบาบางของ PETSc กับระบบนิเวศตัวแปลแบบเบาบางของ ePetra / ML / etc ของ Trilinos ซึ่งทำสิ่งที่คล้ายกัน นอกจากนี้ PETSc ยังสนับสนุนกริดที่มีโครงสร้างและ Sandia มีประวัติในอดีตว่าเป็นบ้านที่ไม่มีโครงสร้าง (FEM) ดังนั้น Trilinos จึงมีการสนับสนุนเพียงเล็กน้อยหรือไม่มีเลยสำหรับกริด AFAIK ที่มีโครงสร้าง และ Trilinos มีความสามารถที่ PETSc ไม่ได้สัมผัสเหมือนกับการสนับสนุน PDE แบบสุ่ม


3
เพื่อเพิ่มสิ่งที่ Trillinos มี PETSc ไม่ได้: การสร้างความแตกต่างโดยอัตโนมัติ, การทำโหลดบาลานซ์, วิธีการต่อเนื่องของอาร์ค, แพ็คเกจการเพิ่มประสิทธิภาพ แต่สิ่งเหล่านี้ทั้งหมดได้ถูกสร้างขึ้นใน PETSc โดยแพ็คเกจของบุคคลที่สาม (ซึ่งบางส่วนมาจาก Trilinos) และสามารถเพิ่มด้วย PETSc --download-foo
aterrel

6

ในฐานะที่เป็นคนที่ใช้เวลาหลายปีในการทำงานกับทั้งสองมุมมองของฉันคือทั้งสองแพคเกจไม่ได้แตกต่างกัน จริงพวกเขาใช้ภาษาที่แตกต่างกัน แต่พวกเขาใช้มันในวิธีที่คล้ายกันมาก (ทั้งสองเป็นเชิงวัตถุ Trilinos ใช้ C ++ นอกเหนือจากการใช้คลาส) ทั้งสนับสนุนการใช้งานจริงทุกอย่างที่คุณต้องการจะทำกับพีชคณิตเชิงเส้น (ไม่ว่าจะผ่านแพ็คเกจย่อยหรือสิ่งที่พวกเขาดาวน์โหลดได้ทันทีซึ่งจากมุมมองของผู้ใช้ไม่ได้สร้างความแตกต่าง) ในที่สุดทั้งสองมีจำนวนที่ไม่ชัดเจนมากขึ้นและอาจไม่ได้ใช้กันอย่างแพร่หลายในแพ็คเกจย่อย (เช่น "ตะแกรง" ของส่วนต่อประสานตาข่ายของ PETSc, ความแตกต่างโดยอัตโนมัติใน Trilinos ฯลฯ )

สำหรับผมความน่าสนใจของ Trilinos นั้นมีสองเท่า: - จำนวนแพ็คเกจย่อยที่คลุมเครือใน Trilinos นั้นใหญ่กว่ามาก ถ้าฉันต้องการบางสิ่งในทิศทาง X ฉันจะพบมันใน Trilinos และมันจะทำงานกับส่วนที่เหลือของรหัสของฉัน - Trilinos มีความระมัดระวังในกลยุทธ์การพัฒนามากกว่า PETSc เปลี่ยนชื่อทุกสิ่งและทุกครั้งที่ผู้ใช้ต้องการให้ทันกับฟังก์ชั่นที่เปลี่ยนชื่อไลบรารีที่แตกต่าง ฯลฯ


ฉันคิดว่าคุณใช้อินเทอร์เฟซรุ่นเก่ากว่าเนื่องจากมีเทมเพลตรุ่นใหม่จำนวนมากที่ใช้เทมเพลตอย่างกว้างขวาง
aterrel

ส่วนใหญ่เป็นเรื่องจริง ฉันคิดว่าคุณแสดงความคิดเห็นในคำสั่ง "การใช้งานอื่น ๆ ของ C ++ นอกเหนือจากคลาส" สิ่งที่ฉันหมายถึงคือมันไม่ได้ใช้ RTTI ยกเว้นข้อยกเว้นหลายมรดก ฯลฯ ในสถานที่ส่วนใหญ่ มันค่อนข้างจะตรงไปตรงมาถ้าคุณรู้จัก C และการวางแนววัตถุ
Wolfgang Bangerth

2

PETSc สามารถใช้งานได้ง่ายกับ Fortran และเอกสาร / ตัวอย่างค่อนข้างดี

Trilinos สำหรับฉันดูสับสน (ด้วยแพ็คเกจย่อยและรูปแบบการตั้งชื่อ) และการสนับสนุน Fortran นั้นขาด ๆ หาย ๆ (อย่างน้อยตอนที่ฉันมองย้อนกลับไปไม่กี่ปี)

มีสองวิธีในการโต้ตอบกับ Trilinos จาก Fortran: (1) ส่งผ่านข้อมูลดิบลงใน wrapper C ++ ที่ทำให้การเรียกไปยังแพ็คเกจ Trilinos ทั้งหมดสำหรับคุณ ใช้คุณสมบัติเชิงวัตถุของ Fortran 2003 คุณลักษณะส่วนใหญ่ของ ForTrilinos นั้นมีอยู่ในคอมไพเลอร์ส่วนใหญ่ การใช้งานคอมไพเลอร์ของคุณสมบัติเหล่านี้เป็นรถ แต่การปรับปรุงอย่างรวดเร็ว ปัจจุบัน ForTrilinos สร้างด้วยคอมไพเลอร์ของ IBM และ NAG รุ่นปัจจุบันหรืออนาคตอันใกล้ของคอมไพเลอร์ Cray, Intel และ Portland ทั้งหมดสนับสนุนการระบุคุณสมบัติที่ต้องการคุณสมบัติการแก้ไขข้อผิดพลาด modulo GCC 4.7.0 ที่กำลังจะเปิดตัวจะมีคุณสมบัติที่จำเป็นทั้งหมด แต่อย่างใดอย่างหนึ่งดังนั้นการสนับสนุนคอมไพเลอร์ที่กว้างไกลในอนาคต

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