Apa perbedaan utama antara PETSc dan Trilinos?

24

Sejauh yang saya tahu, dua kerangka kerja perangkat lunak ilmu komputasi generik besar Departemen Energi AS adalah PETSc dan Trilinos . Sepintas mereka tampak serupa, di luar perbedaan bahasa (C versus C ++). Apa perbedaan utama antara kedua kerangka kerja, dan faktor-faktor apa yang harus memengaruhi memilih satu dari yang lain? (Abaikan bias institusional dan infrastruktur yang ada.)

Geoff Oxberry
sumber
1
Ada diskusi yang agak ketinggalan zaman (dari 2009) di papan CFD beberapa waktu lalu; mungkin pertanyaan yang lebih baik untuk diajukan adalah: sejak saat itu, apakah ada perubahan signifikan dalam desain kedua paket?
aeismail
Ahmed, diskusi itu sebagian besar berfokus pada prekondisi. Saya berharap untuk sudut pandang yang lebih luas daripada diskusi tentang pemecah iteratif. Juga, karena ada banyak pembicaraan tentang PETSc di scicomp.SE, saya pikir Trilinos harus mendapatkan beberapa posting yang dikhususkan untuk itu juga, dan ini sepertinya salah satu pertanyaan pertama yang harus ditanyakan oleh pengguna potensial Trilinos. Saya tidak tahu banyak tentang Trilinos atau PETSc, jadi saya pikir jawabannya akan membantu saya mempelajari sesuatu juga.
Geoff Oxberry

Jawaban:

19

Ada perbedaan besar dalam budaya, gaya pengkodean, dan kemampuan. Mungkin perbedaan mendasarnya adalah Trilinos mencoba menyediakan lingkungan untuk menyelesaikan masalah FEM dan PETSc menyediakan lingkungan untuk menyelesaikan masalah aljabar linier yang jarang.

Mengapa itu penting?

  • Trilinos akan menyediakan sejumlah besar paket terkait dengan bagian terpisah dari pemecah FEM. Terkadang paket-paket ini bekerja bersama kadang-kadang tidak. Bahkan komponen dasar ada dalam paketnya sendiri dan alat C ++ canggih
  • PETSC menyediakan sejumlah kecil rutin inti yang dapat dibangun, tetapi membiarkan pemecah FEM untuk paket pihak ketiga. Karena itu, ini terkait dengan komunitas yang lebih besar dari sekedar FEM. Sebagai contoh, bahkan pemecah eigen adalah pihak ketiga yang bisa dibilang merupakan bagian utama dari aljabar linier.
  • Intinya, Trilinos fokus bekerja dengan baik di dalam paketnya sendiri dan PETSc memiliki antarmuka yang memanggil banyak paket middleware (Saya sering mendengarnya disebut "lebih ringan" karena ini tetapi saya tidak akan mengklaimnya)

IMHO, yang harus Anda gunakan benar-benar tergantung pada masalahnya. Silakan bagikan lebih banyak detail bagi kami untuk menjawab pertanyaan itu.

aterrel
sumber
Saya tidak memiliki masalah khusus dalam pikiran. Saya tertarik untuk mendapatkan pengalaman dengan salah satu paket besar untuk memecahkan PDE, dan ingin mendapatkan gagasan tentang pro dan kontra sehingga saya dapat membuat keputusan yang lebih tepat tentang yang mana untuk menginvestasikan waktu saya.
Geoff Oxberry
11

Jika Anda ingin mendengar dari petunjuk teknis dari berbagai paket, mengambil pertanyaan dari sudut pandang pengguna HPC normal, podcast RCE Brock Palen dan Jeff Squyres adalah sumber yang bagus. Mereka memiliki episode pada PETSc dan Trilinos yang sangat jelas.

aterrel benar dalam uraiannya - PETSc adalah paket (umum) kecil, terintegrasi, dan dipikirkan dengan baik untuk keperluan linier umum dan beberapa pemecah nonlinier, yang kemudian dapat digunakan dalam kerangka pemecah; Trilinos adalah kumpulan paket, dengan integrasi yang berkembang, sebagian besar ditujukan untuk menjadi kerangka kerja pemecah, dan mencakup hal-hal seperti ODE solver, paket meshing, dll.


sumber
7

Izinkan saya menambahkan komentar aterrel yang baik bahwa Trilinos benar-benar sebuah tas besar (Sandia) dan Petsc adalah perpustakaan yang lebih fokus. Jika Anda ingin membandingkan maka Anda harus membandingkan dukungan pemecah jarang PETSc dengan ekosistem pemecah jarang Trilinos 'ePetra / ML / etc, yang melakukan hal serupa. Juga, PETSc mendukung grid terstruktur dan Sandia secara historis secara eksplisit menjadi rumah tidak terstruktur (FEM) sehingga Trilinos memiliki sedikit atau tidak ada dukungan untuk grid terstruktur AFAIK. Dan Trilinos memiliki kemampuan yang tidak disentuh PETSc seperti dukungan PDE stokastik.

Adams
sumber
3
Nah untuk menambah hal-hal yang dimiliki Trillinos yang tidak dimiliki PETSc: Diferensiasi Otomatis, Penyeimbangan Beban, Metode Kelanjutan Busur, Paket Optimasi. Tetapi semua ini telah dibangun ke dalam PETSc oleh paket pihak ke-3 (beberapa di antaranya dari Trilinos) dan dapat ditambahkan dengan PETSc --download-foo configure.
aterrel
6

Sebagai seseorang yang telah menghabiskan beberapa tahun bekerja dengan keduanya, perspektif saya adalah bahwa kedua paket sebenarnya tidak jauh berbeda. Benar, mereka menggunakan bahasa yang berbeda, tetapi mereka menggunakannya dengan cara yang sangat mirip (keduanya berorientasi objek, Trilinos membuat sedikit penggunaan C ++ selain menggunakan kelas). Keduanya mendukung hampir semua yang Anda ingin lakukan dengan aljabar linier (baik melalui sub-paket atau hal-hal yang mereka unduh dengan cepat, yang dari perspektif pengguna tidak ada bedanya). Akhirnya, keduanya memiliki jumlah sub-paket yang lebih jelas dan mungkin tidak terlalu banyak digunakan (mis. 'Saringan' antarmuka PETSc, diferensiasi otomatis di Trilinos, dll.).

Bagi saya, daya tarik Trilinos ada dua: - Jumlah sub paket yang tidak jelas di Trilinos jauh lebih besar; jika saya memerlukan sesuatu di arah X, saya akan menemukannya di Trilinos dan itu akan bekerja dengan sisa kode saya. - Trilinos jauh lebih konservatif dalam strategi pembangunan mereka. PETSc mengubah nama hal setiap saat dan setiap rilis mengharuskan pengguna untuk mengejar ketinggalan dengan fungsi yang diubah namanya, pustaka yang berbeda, dll.

Wolfgang Bangerth
sumber
Saya kira Anda hanya menggunakan antarmuka lama karena banyak yang lebih baru menggunakan template secara ekstensif.
aterrel
Itu sebagian besar benar. Saya membayangkan Anda mengomentari pernyataan "sedikit menggunakan C ++ di luar kelas". Yang saya maksudkan adalah bahwa ia tidak menggunakan RTTI, pengecualian, banyak warisan dll, di sebagian besar tempat. Ini relatif mudah untuk dipahami jika Anda tahu C dan sedikit orientasi objek.
Wolfgang Bangerth
2

PETSc dapat dengan mudah digunakan dengan Fortran dan dokumentasi / contohnya cukup bagus.

Bagi saya Trilinos tampak membingungkan (dengan semua sub-paket dan skema penamaannya) dan dukungan Fortran sangat buruk (setidaknya ketika saya melihatnya beberapa tahun yang lalu).

Ada dua cara untuk berinteraksi dengan Trilinos dari Fortran: (1) meneruskan data mentah ke bungkus C ++ yang membuat semua panggilan ke paket Trilinos untuk [pembungkus seperti itu ada untuk beberapa paket] atau (2) menggunakan antarmuka ForTrilinos baru yang sangat menjalankan fitur berorientasi objek dari Fortran 2003. Sebagian besar fitur yang dibutuhkan ForTrilinos tersedia di sebagian besar kompiler. implementasi kompiler dari fitur-fitur ini bermasalah tetapi cepat meningkat. ForTrilinos saat ini dibuat dengan kompiler IBM dan NAG. Rilis terkini dari kompiler Cray, Intel, dan Portland Group semuanya secara nominal mendukung fitur perbaikan bug modulo yang diperlukan. Rilis GCC 4.7.0 mendatang akan memiliki semua fitur yang diperlukan kecuali satu, sehingga dukungan kompiler yang luas tidak terlalu jauh di masa depan.

stali
sumber