Algoritma SPIKE
Algoritma SPIKE adalah solver paralel hibrida untuk sistem linear berpita yang dikembangkan oleh Eric Polizzi dan Ahmed Sameh.Templat:RefTemplat:NoteTemplat:Ref
Ikhtisar
Algoritma SPIKE berkaitan dengan sistem linear AX = F , di mana A adalah sebuah banded matriks bandwidth jauh lebih sedikit daripada , dan F adalah matriks yang mengandung sisi kanan. Ini dibagi menjadi tahap preprocessing dan tahap postprocessing.
Tahap preprocessing
Pada tahap preprocessing, sistem linear AX = F dipartisi menjadi bentuk tridiagonal blok
Asumsikan, untuk saat ini, bahwa blok diagonal Templat:Math (Templat:Math dengan Templat:Math) adalah nonsingular. Tentukan matriks blok diagonal
maka Templat:Math juga nonsingular. Kiri-mengalikan Templat:Math untuk kedua sisi sistem memberi
yang harus diselesaikan pada tahap postprocessing. Penggandaan-kiri oleh Templat:Math setara dengan pemecahan sistem formulir
(menghilangkan Templat:Math dan Templat:Math untuk , dan Templat:Math dan Templat:Math untuk ), yang dapat dilakukan secara paralel.
Karena sifat berpita Templat:Math, hanya beberapa kolom paling kiri dari setiap Templat:Math dan beberapa kolom paling kanan dari masing-masing Templat:Math dapat berupa nol. Kolom ini disebut spike.
Tahap postprocessing
Tanpa kehilangan sifat umum, asumsikan bahwa setiap lonjakan mengandung tepat kolom ( jauh lebih sedikit dari ) (bantalan spike dengan kolom nol jika perlu). Partisi paku di semua Templat:Math dan Templat:Math ke
- and
dimana Templat:Math, Templat:Math, Templat:Math dan Templat:Math adalah dari dimensi . Partisi juga semua Templat:Math dan Templat:Math menjadi
- and
Perhatikan bahwa sistem yang dihasilkan oleh tahap preprocessing dapat direduksi menjadi sistem pentadiagonal blok dengan ukuran yang jauh lebih kecil (ingat bahwa jauh lebih sedikit dari )
yang kami sebut sistem tereduksi dan dilambangkan dengan Templat:Math.
Setelah semua Templat:Math dan Templat:Math ditemukan, semua Templat:Math dapat dipulihkan dengan paralelisme sempurna via