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?

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


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.