Bagaimana cara merakit dan memecahkan sistem matriks secara paralel dari nilai-nilai yang dihasilkan oleh prosesor yang berbeda?

10

Saya memecahkan masalah multiskala menggunakan Metode Multiskala Heterogen (HMM) . Pada dasarnya, prosedur khusus saya menggunakan proses berulang berikut:

  1. Memecahkan banyak sistem matriks lokal.
  2. Hitung nilai yang menarik dari solusi sistem lokal.
  3. Merakit sistem matriks global dari "nilai-nilai kepentingan" lokal
  4. Memecahkan sistem matriks global
  5. Gunakan solusi sistem matriks global untuk membentuk sistem matriks lokal baru.

Ulangi sampai beberapa kriteria konvergensi terpenuhi.

Karena ada banyak sistem persamaan linear (independen) lokal dan banyak sistem dapat masuk ke dalam memori RAM lokal, saya pikir yang terbaik adalah memuat beberapa sistem "lokal" ke setiap prosesor dan menyelesaikan setiap sistem secara berurutan ( lihat pertanyaan yang diposting ini ).

Pertanyaan saya mengenai strategi terbaik untuk merakit dan memecahkan sistem matriks global. Dalam kasus khusus saya, sistem matriks global cukup kecil sehingga bisa muat sepenuhnya pada memori RAM prosesor apa pun. Selain itu, matriks lokal & global tidak mengubah ukuran antara iterasi. Jadi, saya melihat satu dari tiga strategi yang mungkin:

  1. Kumpulkan "nilai-nilai menarik" ke dalam satu prosesor, dan rakit / pecahkan sistem matriks global secara berurutan pada satu prosesor.
  2. Salin nilai-nilai yang menarik ke setiap prosesor, dan rakit / pecahkan sistem matriks global yang sama secara berurutan pada setiap prosesor.
  3. Dengan asumsi bahwa setiap prosesor memiliki "nilai-nilai menarik" yang diperlukan untuk menghasilkan blok yang berdekatan dari matriks global, maka kita dapat mengumpulkan partisi dari matriks global secara lokal, kemudian menyelesaikannya bersama secara paralel.

Saya bisa melihat beberapa kelebihan / kekurangan untuk setiap metode. Dalam Metode 1, tidak ada komunikasi yang diperlukan dalam fase penyelesaian, tetapi komunikasi ke dan dari pemroses root dapat menjadi hambatan (terutama pada skala). Metode 2 mungkin memerlukan lebih banyak komunikasi antarprosesor untuk merakit matriks global daripada metode pertama, tetapi tidak diperlukan komunikasi dalam fase penyelesaian atau dalam tahap perakitan matriks lokal yang mengikuti. Metode 3 tidak memerlukan komunikasi antarprosesor untuk perakitan matriks lokal atau global, tetapi mengharuskannya dalam tahap penyelesaian.

103103103103103103

Paul
sumber
Pertanyaan yang sangat menarik. Saya harap seseorang memiliki jawaban yang bagus.
Pemeriksaan
nkn×knkn
106
kn
k<100O(n)

Jawaban:

4

Saya tidak berpikir ada kasus di mana Anda ingin menyelesaikan pada peringkat 0. Memecahkan berlebihan hampir selalu lebih baik karena, untuk hal-hal kecil, allreduce seefisien mengurangi, dan perhitungan berlebihan hanya memiliki satu bukan dua.

Namun, apakah akan menghitung secara berlebihan pada semua node, atau pada subset, atau subset yang berlebihan tergantung pada perangkat keras dan ukuran sistem. Dengan demikian, Anda harus memiliki sistem yang dapat melakukan salah satunya. PCREDUNDANT dalam PETSc dapat menyelesaikan secara berlebihan pada semua proses, beberapa proses, atau himpunan bagian dari proses secara paralel.

106

Matt Knepley
sumber
N=4096