Sự khác biệt chính giữa PETSc và Trilinos là gì?


24

Theo như tôi có thể nói, hai khung phần mềm khoa học tính toán chung của Bộ Năng lượng Hoa Kỳ là PETScTrilinos . Chúng có vẻ giống nhau từ cái nhìn đầu tiên, vượt xa sự khác biệt về ngôn ngữ (C so với C ++). Sự khác biệt chính giữa hai khung là gì và những yếu tố nào sẽ ảnh hưởng đến việc chọn cái này so với cái kia? (Bỏ qua sự thiên vị về thể chế và cơ sở hạ tầng hiện có.)


1
Có một cuộc thảo luận có phần lỗi thời (từ năm 2009) trên bảng CFD một thời gian trước đây; có lẽ câu hỏi tốt hơn để hỏi là: kể từ thời điểm đó, đã có những thay đổi đáng kể trong thiết kế của một trong hai gói chưa?
aeismail

Ahmed, cuộc thảo luận đó tập trung chủ yếu vào các điều kiện tiên quyết. Tôi đã hy vọng cho một quan điểm rộng hơn so với các cuộc thảo luận về người giải quyết lặp lại. Ngoài ra, vì có rất nhiều thảo luận về PETSc trên scicomp.SE, tôi cho rằng Trilinos cũng nên nhận một số bài đăng dành cho nó, và đây có vẻ là một trong những câu hỏi đầu tiên mà người dùng Trilinos tiềm năng nên hỏi. Tôi không biết nhiều về Trilinos hoặc PETSc, vì vậy tôi đã tìm ra câu trả lời cũng sẽ giúp tôi học được điều gì đó.
Geoff Oxberry

Câu trả lời:


19

Có sự khác biệt rất lớn về văn hóa, phong cách mã hóa và khả năng. Có lẽ sự khác biệt cơ bản là Trilinos cố gắng cung cấp một môi trường để giải quyết các vấn đề FEM và PETSc cung cấp một môi trường để giải quyết các vấn đề đại số tuyến tính thưa thớt.

Tại sao điều đó có ý nghĩa?

  • Trilinos sẽ cung cấp một số lượng lớn các gói liên quan với các phần riêng biệt của bộ giải FEM. Đôi khi các gói này hoạt động cùng nhau đôi khi chúng không. Ngay cả các thành phần cơ bản cũng nằm trong gói riêng và các công cụ C ++ tiên tiến
  • PETSC cung cấp một lượng nhỏ các thói quen cốt lõi có thể được xây dựng, nhưng để lại các bộ giải FEM cho các gói của bên thứ ba. Bởi vì điều này, nó được liên kết với một cộng đồng lớn hơn là chỉ FEM. Ví dụ, ngay cả những người giải quyết eigen là bên thứ ba được cho là một phần chính của đại số tuyến tính.
  • Tóm lại, Trilinos tập trung hoạt động tốt trong các gói riêng của mình và PETSc có giao diện gọi ra nhiều gói phần mềm trung gian (tôi thường nghe nó được gọi là "trọng lượng nhẹ hơn" vì điều này nhưng tôi sẽ không đưa ra yêu sách đó)

IMHO, mà bạn nên sử dụng thực sự phụ thuộc vào vấn đề. Hãy chia sẻ chi tiết hơn để chúng tôi trả lời câu hỏi đó.


Tôi không có một vấn đề cụ thể trong tâm trí. Tôi quan tâm đến việc có kinh nghiệm với một trong những gói lớn để giải quyết các PDE và muốn có ý tưởng về những ưu và nhược điểm để tôi có thể đưa ra quyết định sáng suốt hơn về việc nên đầu tư thời gian nào vào đó.
Geoff Oxberry

11

Nếu bạn muốn nghe từ các lãnh đạo kỹ thuật của các gói khác nhau, đặt câu hỏi từ quan điểm của người dùng HPC bình thường, podcast RCE của Brock Palen và Jeff Squyres là một tài nguyên tuyệt vời. Họ có các tập trên PETSc và trên Trilinos rất rõ ràng.

aterrel đúng trong các mô tả của mình - PETSc là một gói nhỏ, tích hợp, được cân nhắc kỹ lưỡng của tuyến tính đa năng và một số bộ giải phi tuyến, mà sau đó người ta có thể sử dụng trong khung giải; Trilinos là một tập hợp các gói, với sự tích hợp đang phát triển, chủ yếu nhằm mục đích là khung giải quyết đó và bao gồm những thứ như bộ giải ODE, gói chia lưới, v.v.


7

Hãy để tôi thêm vào nhận xét tốt của aterrel rằng Trilinos thực sự là một túi lớn (Sandia) và Thú cưng là một thư viện tập trung hơn. Nếu bạn muốn so sánh thì bạn nên so sánh sự hỗ trợ của người giải quyết thưa thớt của PETSc với hệ sinh thái người giải quyết thưa thớt ePetra / ML / etc của Trilinos, điều đó cũng tương tự. Ngoài ra, PETSc hỗ trợ các lưới có cấu trúc và Sandia trước đây rõ ràng là một ngôi nhà không có cấu trúc (FEM) nên Trilinos có rất ít hoặc không hỗ trợ cho các lưới có cấu trúc AFAIK. Và Trilinos có các khả năng mà PETSc không chạm vào như hỗ trợ PDE ngẫu nhiên.


3
Vâng để thêm vào những thứ mà Trillinos có mà PETSc không có: Phân biệt tự động, Cân bằng tải, Phương pháp tiếp tục hồ quang, Gói tối ưu hóa. Nhưng tất cả những thứ này đã được tích hợp vào PETSc bởi các gói của bên thứ 3 (một số trong số đó là từ Trilinos) và có thể được thêm vào bằng cấu hình PETSc --doad-foo.
aterrel

6

Là một người đã dành nhiều năm làm việc với cả hai, quan điểm của tôi là cả hai gói không thực sự khác nhau. Đúng, họ sử dụng các ngôn ngữ khác nhau, nhưng họ sử dụng nó theo những cách rất giống nhau (cả hai đều hướng đối tượng, Trilinos không sử dụng C ++ khác ngoài việc sử dụng các lớp). Cả hai đều hỗ trợ thực tế mọi thứ bạn sẽ muốn làm với đại số tuyến tính (thông qua các gói phụ hoặc những thứ họ tải xuống một cách nhanh chóng, từ góc độ người dùng không có sự khác biệt nào). Cuối cùng, cả hai đều có một số gói phụ tối nghĩa hơn và có thể không được sử dụng rộng rãi (ví dụ: 'lưới' của PETSc, phân biệt tự động trong Trilinos, v.v.).

Đối với tôi, sức hấp dẫn của Trilinos là gấp đôi: - Số lượng các gói phụ tối nghĩa trong Trilinos lớn hơn rất nhiều; nếu tôi cần thứ gì đó theo hướng X, tôi sẽ tìm thấy nó trong Trilinos và nó sẽ hoạt động với phần còn lại của mã của tôi. - Trilinos bảo thủ hơn nhiều trong chiến lược phát triển của họ. PETSc đổi tên mọi thứ mọi lúc và mọi bản phát hành yêu cầu người dùng bắt kịp các chức năng được đổi tên, các thư viện khác nhau, v.v.


Tôi hiểu rằng bạn chỉ sử dụng các giao diện cũ hơn vì nhiều giao diện mới hơn sử dụng rộng rãi các mẫu.
aterrel

Điều đó chủ yếu là đúng. Tôi tưởng tượng bạn đã nhận xét về tuyên bố "ít sử dụng khác của C ++ ngoài các lớp". Ý tôi là nó không sử dụng RTTI, ngoại lệ, nhiều kế thừa, v.v., ở hầu hết các nơi. Nó tương đối dễ hiểu nếu bạn biết C và một chút định hướng đối tượng.
Wolfgang Bangerth

2

PETSc có thể rất dễ dàng được sử dụng với Fortran và các tài liệu / ví dụ khá tốt.

Trilinos đối với tôi trông có vẻ khó hiểu (với tất cả các gói phụ và sơ đồ đặt tên của nó) và sự hỗ trợ của Fortran là không chính đáng (ít nhất là khi tôi nhìn vào nó vài năm trước).

Có hai cách để tương tác với Trilinos từ Fortran: (1) truyền dữ liệu thô vào trình bao bọc C ++ để thực hiện tất cả các lệnh gọi đến các gói Trilinos cho [các trình bao bọc như vậy tồn tại cho một số gói] hoặc (2) sử dụng giao diện ForTrilinos mới rất nhiều thực hiện các tính năng hướng đối tượng của Fortran 2003. Hầu hết các tính năng mà ForTrilinos yêu cầu đều có sẵn trong hầu hết các trình biên dịch. trình biên dịch triển khai các tính năng này có lỗi nhưng được cải thiện nhanh chóng. ForTrilinos hiện đang xây dựng với trình biên dịch IBM và NAG. Tất cả các bản phát hành hiện tại hoặc trong tương lai của các trình biên dịch Cray, Intel và Portland Group đều hỗ trợ trên danh nghĩa các tính năng cần thiết sửa lỗi modulo. Bản phát hành GCC 4.7.0 sắp tới sẽ có tất cả các tính năng cần thiết nhưng một tính năng, vì vậy hỗ trợ trình biên dịch rộng không quá xa trong tương lai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.