Saya perlu memecahkan sistem linear yang jarang sama (300x300 hingga 1000x1000) dengan banyak sisi kanan (300 hingga 1000). Selain masalah pertama ini, saya juga ingin menyelesaikan sistem yang berbeda, tetapi dengan elemen bukan nol yang sama (hanya nilai yang berbeda), yaitu banyak sistem jarang dengan pola sparsity konstan. Matriks saya tidak terbatas.
Kinerja faktorisasi dan inisialisasi tidak penting, tetapi kinerja tahap penyelesaian adalah. Saat ini saya sedang mempertimbangkan PaStiX atau Umfpack, dan saya mungkin akan bermain-main dengan Petsc (yang mendukung kedua solver) Apakah ada perpustakaan yang mampu mengambil keuntungan dari kebutuhan spesifik saya (vektorisasi, multi-threading) atau haruskah saya mengandalkan solver umum, dan mungkin memodifikasinya sedikit untuk kebutuhan saya?
Bagaimana jika matriks jarang lebih besar, hingga ?
sumber
Anda tidak cukup jelas dalam pernyataan masalah ketika Anda berbicara tentang "elemen bukan nol yang sama (hanya nilai yang berbeda)" Apakah Anda mengatakan bahwa matriks memiliki pola sparsity yang konstan tetapi nilai aktualnya berubah? Atau, apakah Anda mengatakan bahwa matriks itu sebenarnya konstan?
Dengan asumsi bahwa matriks jarang adalah konstan dan hanya sisi kanan yang berubah, maka Anda harus melihat metode yang menggunakan faktorisasi langsung (dari bentuk ) dari matriks, dan kemudian selesaikan untuk setiap sisi kanan dengan maju / substitusi mundur. Setelah faktorisasi selesai, masing-masing solusi akan sangat cepat ( waktu untuk faktor yang sangat padat tetapi untuk faktor jarang ini akan sebanding dengan jumlah nonzero dalam faktor.) O ( n 2 )PA=LU O(n2)
Untuk beberapa sisi kanan dan sistem persamaan ukuran ini, metode berulang biasanya tidak bernilai.
Semua paket yang Anda sebutkan menawarkan metode faktorisasi langsung (meskipun PetSc sebagian besar dikenal karena solvernya yang berulang). Namun, sistem Anda sangat kecil sehingga kecil kemungkinan Anda bisa mendapatkan speedup paralel yang substansial, terutama di lingkungan memori terdistribusi.
Saya akan menyarankan menggunakan Umfpack untuk pekerjaan ini - PaStix dan PetSc adalah berlebihan.
sumber