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.)
24
Jawaban:
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?
IMHO, yang harus Anda gunakan benar-benar tergantung pada masalahnya. Silakan bagikan lebih banyak detail bagi kami untuk menjawab pertanyaan itu.
sumber
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
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.
sumber
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.
sumber
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.
sumber