Perpustakaan untuk memecahkan sistem linear yang jarang

21

Ada sejumlah perpustakaan yang berbeda di luar sana yang memecahkan sistem persamaan linear yang jarang, namun saya merasa sulit untuk mencari tahu apa perbedaannya.

Sejauh yang saya tahu ada tiga paket utama: Trilinos , PETSc , dan Intel MKL . Mereka semua dapat melakukan penyelesaian matriks yang jarang, mereka semua cepat (sejauh yang saya tahu, saya belum dapat menemukan tolok ukur yang solid pada salah satu dari mereka), dan mereka semua dapat diparalelkan. Yang tidak bisa saya temukan adalah perbedaannya.

Jadi, apa perbedaan antara pemecah sistem linier yang berbeda di luar sana?

Andrew Spott
sumber

Jawaban:

29

Ada banyak lagi di luar sana, semua dengan tujuan dan pandangan yang berbeda dari masalah. Itu benar-benar tergantung pada apa yang Anda coba selesaikan. Berikut adalah daftar paket yang tidak lengkap di luar sana. Jangan ragu untuk menambahkan detail lebih lanjut.

Paket Solver Iteratif Terdistribusi Besar

  • PETSc - paket yang difokuskan di sekitar metode ruang bagian Krylov dan kemudahan beralih antara pemecah linier. Berat jauh lebih ringan daripada yang lain dalam kategori ini.
  • Trilinos - paket besar yang ditujukan untuk aplikasi FEM
  • Hypre - mirip dengan dua di atas. Terkemuka karena pemecah multigrid yang sangat bagus (yang dapat diunduh oleh PETSc).

Paket Solver Langsung Paralel

Paket Pemecah Serial Langsung

Lingkungan Interaktif (lebih untuk sistem yang sangat kecil)

Daftar Lainnya

aterrel
sumber
9

MKL tidak melakukan paralelisme terdistribusi (misalnya MPI), dan dukungan untuk pemecah jarang bersifat rudimenter, jelas tidak pada tingkat dua lainnya. Saat ini, hanya ada satu tolok ukur yang berarti: kinerja scalable produk Sparse Matrix-Vector (SpMV). Karena ini adalah bandwidth memori terbatas, Anda hanya dapat mengacaukannya. Baik PETSc dan Trilinos baik-baik saja dalam hal ini.

Perbedaan sebenarnya adalah lingkungan pemrograman mana yang membuat Anda lebih produktif.

Matt Knepley
sumber
Jadi cukup banyak intinya jika Anda ingin melakukan pekerjaan di C atau C ++?
Andrew Spott
Ini sedikit lebih terbuka dari itu. Anda tentu bisa memanggil Trilinos atau PETSc dari sebagian besar bahasa komputasi numerik (C, Python, C ++, dan Fortran adalah semua opsi yang layak, dan sampai batas tertentu, MATLAB).
Aron Ahmadia
PETSc melakukan penanganan array F90 dengan benar :), dan seluruh model objek tersedia di Matlab.
Matt Knepley
1
PETSc dan Trilinos juga melibatkan komunitas yang berbeda, sampai batas tertentu. Mungkin Anda harus mempertimbangkan terlebih dahulu jenis masalah yang ingin Anda selesaikan, dan jika ada contoh masalah serupa yang sudah tersedia di kedua perangkat ini?
Aron Ahmadia
1
Saya akan merekomendasikan untuk melihat contoh-contoh proyek yang berbeda kemudian memutuskan. Jika Anda memiliki contoh spesifik sistem mana yang lebih baik untuk suatu masalah, itu akan menjadi pertanyaan yang lebih bisa dijawab. Kalau tidak, kita hanya akan memulai perang agama yang dilakukan melalui karir pascasarjana saya.
aterrel