Algoritma SPIKE

Dari testwiki
Loncat ke navigasi Loncat ke pencarian

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 nร—n matriks bandwidth jauh lebih sedikit daripada n, dan F adalah nร—s matriks yang mengandung s sisi kanan. Ini dibagi menjadi tahap preprocessing dan tahap postprocessing.

Tahap preprocessing

Pada tahap preprocessing, sistem linear AX = F dipartisi menjadi bentuk tridiagonal blok

[๐‘จ1๐‘ฉ1๐‘ช2๐‘จ2๐‘ฉ2โ‹ฑโ‹ฑโ‹ฑ๐‘ชpโˆ’1๐‘จpโˆ’1๐‘ฉpโˆ’1๐‘ชp๐‘จp][๐‘ฟ1๐‘ฟ2โ‹ฎ๐‘ฟpโˆ’1๐‘ฟp]=[๐‘ญ1๐‘ญ2โ‹ฎ๐‘ญpโˆ’1๐‘ญp].

Asumsikan, untuk saat ini, bahwa blok diagonal Templat:Math (Templat:Math dengan Templat:Math) adalah nonsingular. Tentukan matriks blok diagonal

Templat:Math,

maka Templat:Math juga nonsingular. Kiri-mengalikan Templat:Math untuk kedua sisi sistem memberi

[๐‘ฐ๐‘ฝ1๐‘พ2๐‘ฐ๐‘ฝ2โ‹ฑโ‹ฑโ‹ฑ๐‘พpโˆ’1๐‘ฐ๐‘ฝpโˆ’1๐‘พp๐‘ฐ][๐‘ฟ1๐‘ฟ2โ‹ฎ๐‘ฟpโˆ’1๐‘ฟp]=[๐‘ฎ1๐‘ฎ2โ‹ฎ๐‘ฎpโˆ’1๐‘ฎp],

yang harus diselesaikan pada tahap postprocessing. Penggandaan-kiri oleh Templat:Math setara dengan pemecahan p sistem formulir

Templat:Math

(menghilangkan Templat:Math dan Templat:Math untuk j=1, dan Templat:Math dan Templat:Math untuk j=p), 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 m kolom (m jauh lebih sedikit dari n) (bantalan spike dengan kolom nol jika perlu). Partisi paku di semua Templat:Math dan Templat:Math ke

[๐‘ฝj(t)๐‘ฝj๐‘ฝj(b)] and [๐‘พj(t)๐‘พj๐‘พj(b)]

dimana Templat:Math, Templat:Math, Templat:Math dan Templat:Math adalah dari dimensi mร—m. Partisi juga semua Templat:Math dan Templat:Math menjadi

[๐‘ฟj(t)๐‘ฟj๐‘ฟj(b)] and [๐‘ฎj(t)๐‘ฎj๐‘ฎj(b)].

Perhatikan bahwa sistem yang dihasilkan oleh tahap preprocessing dapat direduksi menjadi sistem pentadiagonal blok dengan ukuran yang jauh lebih kecil (ingat bahwa m jauh lebih sedikit dari n)

[๐‘ฐm0๐‘ฝ1(t)0๐‘ฐm๐‘ฝ1(b)00๐‘พ2(t)๐‘ฐm0๐‘ฝ2(t)๐‘พ2(b)0๐‘ฐm๐‘ฝ2(b)0โ‹ฑโ‹ฑโ‹ฑโ‹ฑโ‹ฑ0๐‘พpโˆ’1(t)๐‘ฐm0๐‘ฝpโˆ’1(t)๐‘พpโˆ’1(b)0๐‘ฐm๐‘ฝpโˆ’1(b)00๐‘พp(t)๐‘ฐm0๐‘พp(b)0๐‘ฐm][๐‘ฟ1(t)๐‘ฟ1(b)๐‘ฟ2(t)๐‘ฟ2(b)โ‹ฎ๐‘ฟpโˆ’1(t)๐‘ฟpโˆ’1(b)๐‘ฟp(t)๐‘ฟp(b)]=[๐‘ฎ1(t)๐‘ฎ1(b)๐‘ฎ2(t)๐‘ฎ2(b)โ‹ฎ๐‘ฎpโˆ’1(t)๐‘ฎpโˆ’1(b)๐‘ฎp(t)๐‘ฎp(b)],

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

{๐‘ฟ1=๐‘ฎ1โˆ’๐‘ฝ1๐‘ฟ2(t),๐‘ฟj=๐‘ฎjโˆ’๐‘ฝj๐‘ฟj+1(t)โˆ’๐‘พj๐‘ฟjโˆ’1(b),j=2,โ€ฆ,pโˆ’1,๐‘ฟp=๐‘ฎpโˆ’๐‘พp๐‘ฟpโˆ’1(b).

Templat:Reflist

Bacaan lanjutan