=Paper= {{Paper |id=Vol-1482/509 |storemode=property |title=Универсальный метод Ланцоша-Паде решения линейных систем над большими конечными полями (Universal block Lanczos-Pade method for linear systems over large finite fields) |pdfUrl=https://ceur-ws.org/Vol-1482/509.pdf |volume=Vol-1482 }} ==Универсальный метод Ланцоша-Паде решения линейных систем над большими конечными полями (Universal block Lanczos-Pade method for linear systems over large finite fields)== https://ceur-ws.org/Vol-1482/509.pdf
      Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


        Óíèâåðñàëüíûé ìåòîä Ëàíöîøà-Ïàäå ðåøåíèÿ
                                                                                                      ∗
ëèíåéíûõ ñèñòåì íàä áîëüøèìè êîíå÷íûìè ïîëÿìè

                                                    2                   1
                              Í.Ë. Çàìàðàøêèí , Ì.À. ×åðåïíåâ

                                              1                     2
                                        Ì   Ó , ÈÂÌ ÀÍ



           Ïðåäëîæåí óíèâåðñàëüíûé ìåòîä, ïðåäíàçíà÷åííûé äëÿ ðåøåíèÿ áîëüøèõ ðàç-

           ðåæåííûõ ñèñòåì ëèíåéíûõ óðàâíåíèé íàä êîíå÷íûìè ïîëÿìè ñ áîëüøèì ÷èñëîì

           ýëåìåíòîâ, êîòîðûå âîçíèêàþò ïðè ðåøåíèè çàäà÷è äèñêðåòíîãî ëîãàðèìèðî-

           âàíèÿ ïî ìîäóëþ ïðîñòîãî ÷èñëà. Ïðåäëîæåíû ýåêòèâíûå ñïîñîáû ïðåäñòàâ-

           ëåíèÿ è ðàñïðåäåëåíèÿ äàííûõ, à òàêæå ïðîãðàììíûå ðåàëèçàöèè ïàðàëëåëüíûõ

           àëãîðèòìîâ.




1. Ââåäåíèå

    Îäíèì èç ìåòîäîâ, êîòîðûå èñïîëüçóþòñÿ äëÿ ðåøåíèÿ áîëüøèõ ðàçðåæåííûõ ñèñòåì
íàä êîíå÷íûìè ïîëÿìè, ÿâëÿåòñÿ ìåòîä Ëàíöîøà (ñì., íàïðèìåð [29,11,12℄). Ïðîñòîòà àëãî-
ðèòìà è âîçìîæíîñòü ïîñòîÿííîãî êîíòðîëÿ êîððåêòíîñòè åãî ðàáîòû îòíîñÿòñÿ ê ãëàâíûì
äîñòîèíñòâàì ìåòîäà. Îäíàêî ïî ñâîåé ïðèðîäå ìåòîä Ëàíöîøà ÿâëÿåòñÿ ïîñëåäîâàòåëü-
íûìè àëãîðèòìîì, íà êàæäîé èòåðàöèè êîòîðîãî íåèçáåæíî ïðîèñõîäèò áîëüøîé îáìåí
äàííûìè ìåæäó ðàçëè÷íûìè âû÷èñëèòåëüíûìè óçëàìè.
    Èñïîëüçîâàíèå áëî÷íûõ âåðñèé íåñêîëüêî óëó÷øàåò ìàñøòàáèðóåìîñòü ïàðàëëåëüíûõ
ïðîãðàìì (ñì. íàïðèìåð, [12℄), íî òàê èëè èíà÷å íå ïîçâîëÿåò ýåêòèâíî èñïîëüçîâàòü
âû÷èñëèòåëüíûå ñèñòåìû ñ ïðîèçâîäèòåëüíîñòüþ áîëåå 100 TFlops. Íåñîâåðøåíñòâî ìåòîäà
ñòàíîâèòñÿ òåì çàìåòíåå, ÷åì íèæå ñêîðîñòü îáìåíà äàííûìè â êîììóíèêàöèîííîé ñåòè
âû÷èñëèòåëüíîé ñèñòåìû.
     ðàáîòå îïèñàí óíèâåðñàëüíûé áëî÷íûé ìåòîä Ëàíöîøà-Ïàäå, ïðåäíàçíà÷åííûé äëÿ
ðåøåíèÿ áîëüøèõ ðàçðåæåííûõ ñèñòåì ëèíåéíûõ óðàâíåíèé íàä êîíå÷íûìè ïîëÿìè ñ áîëü-
øèì ÷èñëîì ýëåìåíòîâ (¾óíèâåðñàëüíûé¿ îçíà÷àåò ¾ýåêòèâíûé íà ïàðàëëåëüíûõ âû-
÷èñëèòåëüíûõ ñèñòåìàõ ñ ðàçëè÷íîé àðõèòåêòóðîé è õàðàêòåðèñòèêàìè¿), à òàêæå ïðåäëà-
ãàþòñÿ ýåêòèâíûå ñïîñîáû ïðåäñòàâëåíèÿ äàííûõ, ðàñïðåäåëåíèÿ äàííûõ ïî âû÷èñëè-
òåëüíûì óçëàì è ïàðàëëåëüíûå àëãîðèòìû.
    Óíèâåðñàëüíûé ìåòîä Ëàíöîøà-Ïàäå, ñîõðàíÿÿ îñíîâíûå äîñòîèíñòâà ìåòîäà Ëàíöî-
øà, îáëàäàåò ñóùåñòâåííî ëó÷øèìè ïàðàëëåëüíûìè ñâîéñòâàìè. Áîëåå òîãî â óíèâåðñàëü-
íîì ìåòîäå Ëàíöîøà-Ïàäå èìååòñÿ âîçìîæíîñòü ãèáêî óïðàâëÿòü ñëîæíîñòüþ âû÷èñëåíèé
è ðàçìåðîì îáìåíèâàåìûõ äàííûõ.

2. Îïèñàíèå óíèâåðñàëüíîãî ìåòîäà Ëàíöîøà-Ïàäå

2.1. A-îðòîãîíàëüíûé áàçèñ ïðîñòðàíñòâà Êðûëîâà è ìàòðè÷íûå ïðèáëè-
       æåíèÿ Ïàäå

   Íàì ïîòðåáóåòñÿ ðÿä êîíñòðóêöèé, ÷òîáû óñòàíîâèòü ñâÿçü ìåæäó ìàòðè÷íûìè ïðèáëè-
æåíèÿìè Ïàäå íåêîòîðîãî ñïåöèàëüíîãî ðÿäà è A-îðòîãîíàëüíûìè áàçèñàìè ïðîñòðàíñòâà
Êðûëîâà K(A, B).
   Èòàê, ïóñòü α(x)  îðìàëüíûé ìàòðè÷íûé ðÿä
                                                   ∞
                                                   X
                                          α(x) =         αi x−i ,                                    (1)
                                                   i=0

      àáîòà âûïîëíåíà ïðè èíàíñîâîé ïîääåðæêå Ìèíîáðíàóêè îññèè, ñîãëàøåíèå îò 17 èþíÿ 2014 ã.
  ∗

N 14.604 .21.0034 (èäåíòèèêàòîð ñîãëàøåíèÿ RFMEFI60414X0034).



                                                  509
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


êîýèöèåíòàìè êîòîðîãî ÿâëÿþòñÿ ìàòðèöû αi ∈ FK×K . Áóäåì ãîâîðèòü, ÷òî ïàðà ìàò-
ðè÷íûõ ïîëèíîìîâ Q(s) (x) è P (s) (x) ñòåïåíè s
                                                 (s)     (s)
                              Q(s) (x) = Q0 + Q1 x + · · · + Q(s) s
                                                              s x ,
                                                 (s)     (s)
                              P (s) (x) = P0 + P1 x + · · · + Ps(s) xs ,
                      (s)      (s)
ñ êîýèöèåíòàìè Qi         , Pj     ∈ FK×K , çàäàåò ìàòðè÷íîå ïðèáëèæåíèå Ïàäå ñòåïåíè s äëÿ
ðÿäà (1), åñëè âûïîëíÿåòñÿ ñîîòíîøåíèå:
                                                                   ∞
                                                                            (s)
                                                                   X
                                   α(x)Q(s) (x) − P (s) (x) =              ρi x−i .               (2)
                                                                   i=s+1

ÿä â ïðàâîé ÷àñòè (2) áóäåì íàçûâàòü îñòàòî÷íûì ðÿäîì ïðèáëèæåíèÿ Ïàäå P (s) (x),
Q(s) (x) ñòåïåíè s è îáîçíà÷àòü åãî ÷åðåç R(s) (x).
    Äàëåå, äëÿ ðÿäà (1) è ïàðû ïðîèçâîëüíûõ ìàòðè÷íûõ ïîëèíîìîâ îïðåäåëèì áèëèíåéíîå
îòîáðàæåíèå. À èìåííî, ïóñòü Q1 (x) è Q2 (x) äâà ìàòðè÷íûõ ïîëèíîìà. àññìîòðèì ðÿä,
ïîëó÷åííûé îðìàëüíûì ïðîèçâåäåíèåì QT
                                     1 (x), α(x) è Q2 (x),
                                                               ∞
                                                               X
                                       QT1 (x)α(x)Q2 (x) =            γi x−i .                    (3)
                                                               i=−t

Òîãäà çíà÷åíèå áèëèíåéíîãî îòîáðàæåíèÿ < Q1 , Q2 > äëÿ ïàðû ïîëèíîìîâ Q1 è Q2 îïðå-
äåëÿåòñÿ êàê çíà÷åíèå êîýèöèåíòà γ1 îðìàëüíîãî ðÿäà (3):

                                         < Q1 , Q2 >= γ1 ∈ FK×K .                                 (4)

   Íàêîíåö, óñòàíîâèì ñïîñîá ïîñòðîåíèÿ áëîêà Q ðàçìåðà n×K ïî çàäàííîìó ìàòðè÷íîìó
Q ïîëèíîìó Q(x), êâàäðàòíîé n × n ìàòðèöå A è n × K áëîêó B . Äëÿ ýòîãî ðàññìîòðèì
ïîëèíîì Q(x) ñòåïåíè s ñ ìàòðè÷íûìè êîýèöèåíòàìè Q0 , Q1 , · · · , Qs :

                                      Q(x) = Q0 + Q1 x + · · · + Qs xs .
Îïðåäåëèì áëîê Q = Q(A, B) ∈ Fn×K ïî ñëåäóþùåìó ïðàâèëó (ñì. íàïðèìåð, [9℄):

                            Q = Q(A, B) = BQ0 + ABQ1 + · · · + As BQs .                           (5)

    Â äàëüíåéøåì íàñ áóäóò èíòåðåñîâàòü òîëüêî òå ðÿäû α(x) âèäà (1), êîýèöèåíòû αi
êîòîðûõ çàäàþòñÿ íåêîòîðûì ñïåöèàëüíûì îáðàçîì, à èìåííî

                                            αi = αiT = B T Ai B,
ñ ñèììåòðè÷íîé ìàòðèöåé A, è íåêîòîðûì áëîêîì B .
Ëåììà 1. [9℄Ñïðàâåäëèâî ñëåäóþùåå ðàâåíñòâî:

                                           < Q1 , Q2 >= QT1 AQ2                                   (6)



Óòâåðæäåíèå 1. Ïóñòü A ∈ F
                                        n×n ñèììåòðè÷íàÿ ìàòðèöà, B ∈ Fn×K áëîê èç K ëèíåé-

íî íåçàâèñèìûõ âåêòîðîâ, à αi ∈ FK×K êâàäðàòíûå ìàòðèöû âèäà αi = αiT                  = B T Ai B.
àññìîòðèì ïðèáëèæåíèÿ Ïàäå P (s) (x), Q(s) (x) ðÿäà (1) ñòåïåíåé 0, · · · , l,
                                                                     ∞
                                                                        (0)
                                                                     X
                              α(x)Q(0) (x) − P (0) (x)         =       ρi x−i ,
                                                                     i=1
                                                                     ∞
                                                                        (1)
                                                                     X
                              α(x)Q(1) (x) − P (1) (x)         =       ρi x−i ,
                                                                     i=2
                                                ··· ··· ··· ,
                                                         ∞
                                                               (l)
                                                         X
                                    (l)     (l)
                               α(x)Q (x) − P (x) =            ρi x−i ,
                                                                     i=l+1


                                                       510
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


ïðåäïîëàãàÿ, ÷òî ìàòðèöû   Q(s) (A, B)T AQ(s) (A, B) ÿâëÿþòñÿ íåâûðîæäåííûìè.
   Òîãäà, äëÿ ëþáîãî s, 0 ≤ s ≤ l áëîêè Q0 = Q
                                                   (0) (A, B), · · · , Q = Q(l) (A, B), ïîñòðîåí-
                                                                        l
íûå ïî Q-ïîëèíîìàì ïðèáëèæåíèé Ïàäå, çàäàþò A-îðòîãîíàëüíûé áàçèñ ïðîñòðàíñòâà

Êðûëîâà Kl (A, B)
                                                                 
                          Kl (A, B) = Span B, AB, · · · , Al B .
                                                       (s)T (s)
Êðîìå òîãî,   Q(s) (A, B)T AQ(s) (A, B) = Qs               ρs+1 , è ñòàðøèå êîýèöèåíòû ìàòðè÷íûõ
Q-ïîëèíîìîâ è ñòàðøèå êîýèöèåíòû ñîîòâåòñòâóþùèõ îñòàòî÷íûõ ðÿäîâ, ñòîÿùèå
â ïîñëåäíåì ðàâåíñòâå ñïðàâà, ÿâëÿþòñÿ íåâûðîæäåííûìè ìàòðèöàìè. ✷

    Óòâåðæäåíèå 1 ïðåäîñòàâëÿåò ñïîñîá îïèñàíèÿ A-îðòîãîíàëüíîãî áàçèñà ïðîñòðàíñòâà
Êðûëîâà K(A, B) ñ ïîìîùüþ Q-ïîëèíîìîâ.

2.2. åêóððåíòíûå îðìóëû äëÿ ïðèáëèæåíèé Ïàäå


    Ïðåäïîëîæèì, ÷òî óæå èçâåñòíû ïðèáëèæåíèÿ Ïàäå P (s−1) , Q(s−1) è P (s) , Q(s) ïîðÿäêîâ
s − 1 è s (çäåñü è âåçäå äàëåå âåðõíèé èíäåêñ â êðóãëûõ ñêîáêàõ ãîâîðèò î òîì, ê êàêîìó
ïîðÿäêó ïðèáëèæåíèÿ Ïàäå îòíîñèòñÿ äàííàÿ âåëè÷èíà), ñîîòâåòñòâåííî, ñ îñòàòî÷íûìè
ðÿäàìè R(s−1) (x) è R(s) (x)
                                                                                   ∞
                                                                                      (s−1) −i
                                                                                   X
                  R(s−1) (x) = α(x)Q(s−1) (x) − P (s−1) (x) =                        ρi    x ,
                                                                                   i=s
                                                                            ∞
                                                                                     (s)
                                                                            X
                    R(s) (x) = α(x)Q(s) (x) − P (s) (x) =                          ρi x−i .
                                                                           i=s+1

Íîâîå ïðèáëèæåíèå Ïàäå Q(s+1) (x), P (s+1) (x) ñòåïåíè s + 1 áóäåì èñêàòü â âèäå

                      Q(s+1) (x) = xQ(s) (x) + Q(s) (x)ν0 + Q(s−1) (x)ν1 ,                            (7)
                          (s+1)                 (s)             (s)               (s−1)
                      P           (x) = xP            (x) + P         (x)ν0 + P           (x)ν1 ,     (8)
                          (s+1)                 (s)             (s)               (s−1)
                      R           (x) = xR            (x) + R         (x)ν0 + R            (x)ν1 ,    (9)

ãäå ν0 è ν1  K × K ìàòðèöû, òðåáóþùèå îïðåäåëåíèÿ. Èç óñëîâèÿ ðàâåíñòâà íóëþ êî-
               (s+1)    (s+1)
ýèöèåíòîâ ρs       è ρs+1 îñòàòêà ðÿäà Ïàäå R(s+1) (x), ñëåäóåò, ÷òî ìàòðèöû ν0 è ν1
óäîâëåòâîðÿþò ñèñòåìå ëèíåéíûõ óðàâíåíèé
                                          (s)
                                         ρs+1 + ρs(s−1) ν1 = ρ(s+1)
                                                              s     = 0,                             (10)
                                  (s)   (s)            (s−1)               (s+1)
                             ρs+2 + ρs+1 ν0 + ρs+1 ν1 = ρs+1 = 0.                                    (11)

                                        (s+1)
   Îñòàâøèåñÿ êîýèöèåíòû ρs+k+1 îñòàòêà R(s+1) (x) k > 0 ïîëó÷àþòñÿ ïî ñëåäóþùåé
îðìóëå:
                       (s+1)    (s)      (s)         (s−1)
                      ρs+k+1 = ρs+k+2 + ρs+k+1 ν0 + ρs+k+1 ν1 .
Ñëåäóÿ (7), çàïèøåì äëÿ ïîëèíîìà Q(s+1) (x)

                           Q(s+1) (x) = Q(s) (x) (Ix + ν0 ) + Q(s−1) (x)ν1 .                         (12)

Ïðèìåíÿÿ äàííîå ïðåîáðàçîâàíèå t ðàç, ïîëó÷èì ïðåäñòàâëåíèå äëÿ ïîëèíîìà Q(s+t) (x) â
âèäå:
                                          (t)                 (t)
                    Q(s+t) (x) = Q(s) (x)H1s (x) + Q(s−1) (x)H0s (x),            (13)
      (t)
ãäå H1s (x)  ìàòðè÷íûé ïîëèíîì ñòåïåíè t, ñòàðøèé êîýèöèåíò êîòîðîãî åäèíè÷íàÿ
                    (t)
K × K ìàòðèöà, à H0s (x)  íåêîòîðûé ìàòðè÷íûé ïîëèíîì ñòåïåíè íå âûøå t − 1.


                                                        511
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


    Ïîäõîä ê âû÷èñëåíèþ A-îðòîãîíàëüíîãî áàçèñà, îñíîâàííûé íà ïðèáëèæåíèÿõ Ïàäå,
èìååò âèäèìûå ïðåèìóùåñòâà ñ òî÷êè çðåíèÿ ïàðàëëåëüíûõ âû÷èñëåíèé.  êëàññè÷åñêîì
ìåòîäå Ëàíöîøà èòåðàöèÿ àëãîðèòìà ñîñòîèò èç óìíîæåíèÿ ìàòðèöû A íà áëîê Qi è ïî-
ñëåäóþùåé ïðîöåäóðû A-îðòîãîíàëèçàöèè íîâîãî áëîêà ê ïðåäûäóùèì. Êàæäàÿ òàêàÿ èòå-
ðàöèÿ òðåáóåò çíà÷èòåëüíîãî îáìåíà äàííûìè, ÷òî ïðèâîäèò ê ïëîõîé ìàñøòàáèðóåìîñòè
àëãîðèòìà íà ìîùíûõ âû÷èñëèòåëÿõ. Äëÿ ìåòîäà Ëàíöîøà-Ïàäå òðåáóåòñÿ òîëüêî óìíî-
æàòü áëîê íà ìàòðèöó. Êàæäûé âåêòîð â áëîêå óìíîæàåòñÿ íåçàâèñèìî, à ÷èñëî îáìåíîâ
ìèíèìàëüíî. Ýòî è åñòü ãëàâíîå ïðåèìóùåñòâî ìåòîäà Ëàíöîøà-Ïàäå ïåðåä ìåòîäîì Ëàí-
öîøà.

2.3. Ìàòðè÷íûå îáîçíà÷åíèÿ


    Íå ñëîæíî ïðîâåðèòü, ÷òî ïîëèíîìû Q(0) (x) è Q(1) (x), âçÿòûå â âèäå Q(0) (x) = I è
Q(1) (x) = Ix − α1−1 α2 , ñ α1 = B T AB è α2 = B T A2 B , ÿâëÿþòñÿ Q-ïîëèíîìàìè Ïàäå íóëåâîé
è ïåðâîé ñòåïåíè ñîîòâåòñòâåííî. Èñïîëüçóÿ ÷àñòíûé ñëó÷àé ñîîòíîøåíèÿ (13), ïðåäñòàâèì
Q-ïîëèíîì Ïàäå ñòåïåíè s + 1 â âèäå
                                                  (s+1)                  (s+1)
                      Q(s+1) (x) = Q(1) (x)H1             (x) + Q(0) (x)H0       (x),         (14)
                            (s+1)
ñ ìàòðè÷íûì ïîëèíîìîì H1       (x) ñòåïåíè s è ñòàðøèì êîýèöèåíòîì, ðàâíûì åäèíè÷íîé
                                                 (s+1)
ìàòðèöå, è íåêîòîðûì ìàòðè÷íûì ïîëèíîì H0              (x) ñòåïåíè íå âûøå s − 1. Èç (12) è
                   (s+1)        (s+1)
(14) ñëåäóåò, ÷òî H1     (x) è H0     (x) óäîâëåòâîðÿþò îäíîìó è òîìó æå ðåêóððåíòíîìó
ñîîòíîøåíèþ
                          (s+1)             (s)                      (s−1)
                       H1         (x) = H1 (x) (Ix + ν0 ) + H1       (x)ν1                    (15)
                        (s+1)              (s)                 (s−1)
                       H0     (x)     =   H0 (x) (Ix + ν0 ) + H0     (x)ν1 ,                  (16)

îòëè÷àÿñü òîëüêî âûáîðîì íà÷àëüíûõ óñëîâèé. À èìåííî, íà÷àëüíûå ïîëèíîìû âûáèðàþòñÿ
                    (0)        (1)          (0)           (1)
â ñëåäóþùåì âèäå: H1 (x) = 0, H1 (x) = I , H0 (x) = I , H0 (x) = 0.
    Äëÿ óäîáñòâà äàëüíåéøåé çàïèñè àëãîðèòìîâ îïðåäåëèì ñïåöèàëüíûå ìàòðè÷íûå îáî-
                                                    (s)        (s)     (s)   (s)
çíà÷åíèÿ. Ñîñòàâèì èç êîýèöèåíòîâ ïîëèíîìîâ H1 (x) è H0 (x) áëîêè H1 è H0 ðàç-
ìåðà n×K , ðàñïîëîæèâ êîýèöèåíòû ìåíüøèõ ñòåïåíåé â ñòðîêàõ ñ áîëüøèìè íîìåðàìè:
                                                               
                                  0                     0      
                                                               
                                                               
                              ···                   ··· 
                                                               
                                                               
                             
                                  0   
                                       
                                                     
                                                          0      
                                                                  
                                                               
                              (s)                              
                         (s)
                              H
                              1(s−1) 
                                       
                                                (s)
                                                          0      
                        H1 =           , H0 =                  .             (17)
                                                                 
                              (s)                    (s)
                              H1(s−2)               H0(s−2) 
                                                                 
                                                               
                                                               
                              ···                   ··· 
                                                               
                                                               
                                  (s)
                              H11 
                                                         (s)
                                                      H01 
                                                                  
                                                               
                                                               
                                   (s)                     (s)
                                 H10                     H00

 òàêîì ñëó÷àå ðåêóððåíòíûå ñîîòíîøåíèÿ (15) è (16) ýêâèâàëåíòíû ñëåäóþùèì ìàòðè÷-




                                                   512
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


íûì ðàâåíñòâàì:
                                                                         
                                                                  I 
                                                              
                                                                    
                      (s+1)
                    Hi        =         (s)      (s)     (s−1)
                                                                 ν0  , i = 0, 1,            (18)
                                                                    
                                      ZHi      Hi       Hi          
                                                                    
                                                                  ν1

ãäå Z ∈ Fn×n  ìàòðèöà áëî÷íîãî ñäâèãà âèäà
                                                                         
                                0     Ik   0                ···        0 
                                                                          
                                0      0   Ik                          0 
                                                                          
                                                             ···
                                                                          
                                                                          
                           Z=  ··· ··· ···                 ···           .
                                                                       ··· 
                                                                          
                                                                          
                                0      0   0                ···       Ik 
                                                                          
                                                                          
                                   0    0   0                ···        0

                     (s)      (s)
Íàðÿäó ñ áëîêàìè H0 è H1 îïðåäåëèì áëîê R(s) ðàçìåðà 2n × K , êîòîðûé ñîîòâåòñòâóåò
îñòàòî÷íîìó ðÿäó Ïàäå ñòåïåíè s (çàìåòèì, ÷òî ðàçìåð áëîêîâ R âäâîå ïðåâîñõîäèò ðàçìåð
áëîêîâ H ). ßâíûé âèä áëîêà R(s) çàäàäèì ñëåäóþùèì îáðàçîì:
                                                  
                                               ⋆  
                                                  
                                          
                                                ⋆
                                                   
                                                  
                                                  
                                                  
                                           ρ (s)  
                                           2 n −s 
                                           K      
                                                  
                                           ··· 
                                   R(s) =         ,                              (19)
                                                  
                                           (s) 
                                           ρs+1 
                                                  
                                                  
                                          
                                               0  
                                                   
                                                  
                                                  
                                           ··· 
                                                  
                                                  
                                                0

ãäå ñèìâîëîì ⋆ îáîçíà÷àþòñÿ òå ýëåìåíòû, êîòîðûå íå ÿâëÿþòñÿ ñóùåñòâåííûìè (äðóãèìè
ñëîâàìè çíà÷åíèÿ ýòèõ ýëåìåíòîâ íå áóäóò âëèÿòü íà âû÷èñëåíèÿ â àëãîðèòìå). ×èñëî
íóëåâûõ ìàòðèö â R(s) â òî÷íîñòè ðàâíî s + 1, è îòðàæàåò òîò àêò, ÷òî R(s) ñîîòâåòñòâóåò
îñòàòî÷íîìó ðÿäó Ïàäå ñòåïåíè s. Ïî àíàëîãèè ñ îðìóëàìè (18) çàïèøåì
                                                             
                                                                      I 
                                                                  
                                                                         
                           R(s+1) =         Z T R(s) R(s)    R(s−1)                          (20)
                                                                         
                                                                     ν 0 
                                                                          
                                                                         
                                                                      ν1

Çàìåòèì, ÷òî â ñîîòâåòñòâèè ñ îïðåäåëåíèåì ÷èñëî ¾íåñóùåñòâåííûõ¿ ýëåìåíòîâ â R(s+1)
óâåëè÷èâàåòñÿ íà 1 ïî ñðàâíåíèþ ñ ÷èñëîì ¾íåñóùåñòâåííûõ¿ ýëåìåíòîâ â R(s) . Òàêèì
îáðàçîì, îðìóëà (20) ìîæåò ðàññìàòðèâàòüñÿ êàê ðàâåíñòâî òîëüêî äëÿ ¾ñóùåñòâåííûõ¿
êîìïîíåíò R(s+1) .

                                                       513
      Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


    Äàëåå, îáîçíà÷èì ÷åðåç Q1 è Q0 áëîêè Q1 (A, B) è Q0 (A, B), ñîîòâåòñòâåííî. Ïî îïðå-
äåëåíèþ Q0 = B , à Q1 = AB − Bα1−1 α2 . Ñîñòàâèì ìàòðèöû K0 , K1 ∈ Fn×n èç áëîêîâ âèäà
Aj Q0 è Aj Q1 ñ j îò 0 äî K
                          n
                            − 1 çàïèñàííûõ â îáðàòíîì ïîðÿäêå,
                                                                 
                                                                                    (21)
                                   n         n
                      K0 =       A K −1 Q0 A K −2 Q0 · · · AQ0 Q0
                                                                 
                                   n         n
                      K1 =           −1        −2
                                 A K Q1 A K Q1 · · · AQ1 Q1

Èç (13) ñëåäóåò, ÷òî äëÿ áëîêà Qs+1 = Q(s+1) (A, B) ñïðàâåäëèâî ñëåäóþùåå ïðåäñòàâëåíèå:
                                            s                             s−1
                                                         (s+1)                                  (s+1)
                                            X                             X
                                                     i
                                Qs+1 =             A Q1 H1i    +                  Ai Q0 H0i             ,   (22)
                                             i=0                          i=0

êîòîðîå óäîáíî çàïèñàòü â âèäå
                                                                (s+1)              (s+1)
                                        Qs+1 = K0 H0                    + K1 H1             .               (23)

Ïî ïîñòðîåíèþ (ñì. óòâåðæäåíèå 1) áëîêè Qs îáðàçóþò A-îðòîãîíàëüíûé áàçèñ âñåãî ïðî-
ñòðàíñòâà, à, ñëåäîâàòåëüíî, ðåøåíèå ñèñòåìû X Kn çàïèñûâàåòñÿ â âèäå ëèíåéíîé êîìáèíà-
öèè áëîêîâ Qi
                                     n
                                     K
                                       −1
                                     X               −1 T
                              X Kn =      Qi QTi AQi    Qi B.
                                                    i=0
Ââîäÿ îáîçíà÷åíèå Zi äëÿ ìàòðèö
                                                                       −1
                                                 Zi = QTi AQi                QTi B,

ïðèäåì ê êðàòêîé çàïèñè äëÿ X Kn
                                                                 n
                                                                 K
                                                                   −1
                                                                 X
                                                    X Kn =              Qi Zi .                             (24)
                                                                 i=0

Íàêîíåö, ïîäñòàâëÿÿ â (24) âûðàæåíèå äëÿ Qi èç (23), íàéäåì, ÷òî
                                           n                n
                                           K
                                             −1             K
                                                              −1
                                           X                X    (i)     (i)
                                                                              
                         X Kn    =                Qi Zi =     K0 H0 + K1 H1 Zi
                                           i=0                  i=0
                                      n                 n            
                                        K
                                          −1                K
                                                              −1
                                              (i)                  (i)
                                        X                   X
                                 = K0       H0 Zi  + K1       H 1 Zi  .
                                                   i=0                                i=0

×òîáû åùå íåìíîãî óïðîñòèòü çàïèñü è ïîëó÷èòü ìàòðè÷íîå ñîîòíîøåíèå äëÿ X Kn , îïðåäå-
                          (s)        (s)
ëèì ñèñòåìó áëîêîâ G0 è G1 ðàçìåðà n × K ñëåäóþùåãî âèäà
                                                  s
                                  (s)                     (i)             (s−1)         (s)
                                                  X
                                G0          =            H 0 Zi = G0               + H 0 Zs ;               (25)
                                                  i=0
                                                   s
                                  (s)                     (i)             (s−1)         (s)
                                                  X
                                G1          =            H 1 Zi = G1               + H 1 Zs ,               (26)
                                                   i=0

ãäå s ìåíÿåòñÿ â ïðåäåëàõ îò 1 äî K
                                  n
                                    − 1. Èñïîëüçóÿ (25) è (26), îêîí÷àòåëüíî çàïèøåì X Kn
êàê
                                                           ( n −1)                ( n −1)
                                        X Kn = K0 G0K                   + K1 G1K            .               (27)

                                                                514
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


Ïðåèìóùåñòâà ïîëó÷åííîé çàïèñè äëÿ X n ñîñòîèò â òîì, ÷òî â íåé íåò ÿâíîé çàâèñèìîñòè
                                                   K
îò áëîêîâ Qi , à èìååòñÿ çàâèñèìîñòü ëèøü îò ñèñòåì K0 è K1 áëî÷íî êðûëîâñêîãî òèïà.
Âû÷èñëåíèå K0 è K1 ëåãêî ïðîèçâîäèòü íà ïàðàëëåëüíûõ âû÷èñëèòåëüíûõ ñèñòåìàõ. Äëÿ
ýòîãî êàæäûé èç 2K âåêòîðîâ, âõîäÿùèõ â áëîê Q0 èëè Q1 ìîæíî óìíîæàòü íà ìàòðèöó
A íåçàâèñèìî, òåì ñàìûì äîñòèãàÿ ìàêñèìàëüíî âîçìîæíîãî ýåêòà. ×òîáû çàâåðøèòü
                                                                  (n)    (n)
îïèñàíèå ìåòîäà, íåîáõîäèìî ïðåäúÿâèòü ñïîñîáû âû÷èñëåíèÿ áëîêîâ G0 K è G1K , êîòîðûå
íå èñïîëüçîâàëè áû ÿâíûé âèä áëîêîâ Qi .

2.4. Âû÷èñëåíèå QT
                 i B

   Èñïîëüçóÿ ðåêóððåíòíûå ñîîòíîøåíèÿ (12)

                           Q(i) (x) = Q(i−1) (x) (Ix + ν0 ) + Q(i−2) (x)ν1 ,

çàïèøåì äëÿ áëîêîâ Qi , Qi−1 è Qi−2

                                  Qi = AQi−1 + Qi−1 ν0 + Q̃i−2 ν1 .

Òîãäà
                            QTi B = QTi−1 AB + ν0T QTi−1 B + ν1T QTi−2 B.                        (28)

 ñèëó ñâîéñòâà A-îðòîãîíàëüíîñòè äëÿ i > 2 ïåðâîå ñëàãàåìîå â (28) âñåãäà ðàâíî íóëþ.
Îêîí÷àòåëüíî
                                  1
                                  X
                        QTi B =         νjT QTi−j−1 B = ν0 QTi−1 B + ν1 QTi−2 B.
                                                     
                                                                                                 (29)
                                  j=0


2.5. Âû÷èñëåíèå QT
                 i AQi

   ×òîáû âû÷èñëèòü QT
                    i AQi âîñïîëüçóåìñÿ óòâåðæäåíèåì 1:

                                                   (i) T (i)
                                                     
                                        QTi AQi = Qi    ρi+1

2.6. Àëãîðèòì Ëàíöîøà-Ïàäå

   Âûïèøåì àëãîðèòì Ëàíöîøà-Ïàäå.

     Øàã 0 (èíèöèàëèçàöèÿ àëãîðèòìà):

        (a) âû÷èñëèòü α0 = B T B , α1 = B T AB , α2 = B T A2 B ;

        (b) îïðåäåëèòü n × K áëîê Q0 è Q1 ïî îðìóëàì

                                                   Q0 = B;                                       (30)

                                                   Q1 = AB − Bα1−1 α2 ;                          (31)

                                             (0)       (1)    (0)      (1)
        ( ) îïðåäåëèòü n × K áëîêè H0 , H0                   H1     è H1 ;

        (d) âû÷èñëèòü êâàäðàòíûå K × K ìàòðèöû ψ0 è ψ1 ïî îðìóëàì

                                          ψ0 = QT0 B = B T B,          ψ1 = QT1 B;

        (e) âû÷èñëèòü êâàäðàòíûå ìàòðèöû Z0 è Z1 êàê

                           Z0 = α0−1 ψ0 = (QT0 AQ0 )−1 ψ0 ,             Z1 = (QT1 AQ1 )−1 ψ1 ;



                                                       515
Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


                                      (1)             (1)
   (f) âû÷èñëèòü áëîêè G0                       è G1        ïî îðìóëàì:

                                                                     (1)         (0)
                                                                G0 = H 0 Z0 ;                                                                   (32)
                                                                 (1)   (1)
                                                                G1 = H 1 Z1 ;                                                                   (33)


 Øàã 1 (âû÷èñëåíèå áëî÷íî-ñòåïåííîãî áàçèñà ïðîñòðàíñòâà Êðûëîâà è ïî-
 ñòðîåíèå ðÿäà Ïàäå ëèíåéíîé ñèñòåìû):
                                                                                                                                       
                                                                                                                              2n
   (a) âû÷èñëèòü ðàñøèðåííóþ ìàòðèöó K0 âèäà K0 =                                                   Q0 AQ0 · · ·          A   K    Q0       ;

  (b) âû÷èñëèòü êâàäðàòíûå K × K ìàòðèöû αi ïî îðìóëàì αi = QT  i
                                                              0 A Q0 , äëÿ âñåõ
                   n
       i îò 2 äî 2 K ;

   ( ) ïðèñâîèòü çíà÷åíèÿ ýëåìåíòàì áëîêîâ R(0) è R(1) ;

                                                                n
 Øàã 2 (ïîñòðîåíèå A-îðòîãîíàëüíîãî áàçèñà): äëÿ âñåõ s îò 2 äî K −1 ïîâòîðÿòü
 (a), (b), ( ), (d) è (e)

   (a) íàéòè K × K ìàòðèöû ν0 , ν1 , ðåøàÿ ñèñòåìó óðàâíåíèé,
                                                                                                         
                                                             (s−1)                                (s)
                                                  0         ρs       ν0                      ρs+1 
                                                                                      = −                   .                                (34)
                                          
                                                                         
                                                 (s)         (s−1)                                    (s)
                                                ρs+1        ρs+1               ν1                    ρs+2

                         (s)              (s)
  (b) âû÷èñëèòü H0             è H1             ïî ðåêóððåíòíîé îðìóëå

                                (s)                   (s−1)           (s−1)                (s−2)
                               Hi         = ZHi               + Hi             ν 0 + Hi            ν1 ,     (i = 0, 1);                         (35)


   ( ) âû÷èñëèòü îñòàòîê ðÿäà Ïàäå R(s) äëÿ ïðèáëèæåíèÿ Ïàäå ñòåïåíè s ïî îðìóëå

                                                R(s) = Z T R(s) + R(s) ν0 + R(s−1) ν1 ;                                                         (36)


  (d) âû÷èñëèòü êâàäðàòíóþ K×K ìàòðèöó Zs , îïðåäåëÿåìóþ êàê Zs = (QT      −1 T
                                                                    s AQs ) Qs B ,
       èñïîëüçóÿ ñëåäóþùèé àëãîðèòì:

       (a) âû÷èñëèòü êâàäðàòíóþ K × K ìàòðèöó ψs = QT
                                                    s B , èñïîëüçóÿ ðåêóððåíòíîå
           ñîîòíîøåíèå,
                                                              ψs = ν0T ψs−1 + ν1T ψs−2                                                          (37)
                                                                               (s)
       (b) ïîëîæèòü ìàòðèöó QT
                             s AQs ðàâíîé ρs+1
                         (s)          (s)
   (e) âû÷èñëèòü G0            è G1             ïî ðåêóððåíòíûì îðìóëàì:

                                    (s)          (s−1)              (s)              (s)       (s−1)                (s)
                               G0 = G0                      + H 0 Zs ,           G1 = G1                   + H 1 Zs .                           (38)


 Øàã 3 (ïîñòðîåíèå ðåøåíèÿ): Âû÷èñëèòü ðåøåíèå X n ïî îðìóëå:
                                                                                                      K

                                                        n                        n
                                                       (K −1)                   (K −1)                    ( n −1)
                               X Kn = K0 G0                     + AK0 G1                    − K0 Ĝ1K               ,                           (39)


 ãäå K × K êîìïîíåíòû áëîêà Ĝ1 åñòü íè ÷òî èíîå êàê K × K êîìïîíåíòû áëîêà G1 ,
                                                        −1
 óìíîæåííûå ñëåâà íà ìàòðèöó α1                              α2 .




                                                                    516
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


2.7. Àëãîðèòì ïîñòðîåíèÿ áëî÷íî-ñòåïåííîãî áàçèñà ïðîñòðàíñòâà Êðûëî-
     âà è ðÿäà Ïàäå ëèíåéíîé ñèñòåìû

    Ïîñêîëüêó Øàã 0 (èíèöèàëèçàöèÿ àëãîðèòìà) èìååò ìàëóþ àëãîðèòìè÷åñêóþ ñëîæ-
íîñòü, òî ïðè ïîñòðîåíèè ïàðàëëåëüíîãî àëãîðèòìà ìû ñðàçó ïåðåõîäèì ê àíàëèçó Øàãà
1 (âû÷èñëåíèå áëî÷íî-ñòåïåííîãî áàçèñà ïðîñòðàíñòâ Êðûëîâà è ðÿäà Ïàäå ëè-
íåéíîé ñèñòåìû). Áóäåì âåçäå äàëåå ñ÷èòàòü, ÷òî ÷èñëî äîñòóïíûõ â àëãîðèòìå ñóïåð-
óçëîâ ðàâíî K . Íà Øàãå 1 âñå K ñóïåð-óçëîâ áóäóò ðàáîòàòü íåçàâèñèìî è âûïîëíÿòü
îäèíàêîâóþ ðàáîòó.
     Ñ ñóïåð-óçëîì íîìåðîì i íà Øàãå 1 ñâÿæåì ñëåäóþùèå âû÷èñëåíèÿ: ðàññìîòðèì áëîê
Q0 ∈ Fn×K ; ïóñòü Q0i ∈ Fn  i-ûé âåêòîð â áëîêå Q0 . Íà Øàãå 1 ñóïåð-óçåë ñ íîìåðîì i
(a) ñòðîèò ïîñëåäîâàòåëüíîñòü âåêòîðîâ Aj Q0i ñ ïàðàìåòðîì j , èçìåíÿþùèìñÿ îò 0 äî 2 K n
                                                                                          ,
è (á) âû÷èñëÿåò i-ûå ñòîëáöû αj = Q0 A Q0i êâàäðàòíûõ ìàòðèö αj = Q0 A Q0 .
                               i    T  j                              T   j

     Î÷åâèäíî, äëÿ òîãî, ÷òîáû èìåòü âîçìîæíîñòü âûïîëíèòü óêàçàííûå âû÷èñëåíèÿ â
îòñóòñòâèå îáìåíà äàííûìè ñ äðóãèìè ñóïåð-óçëàìè, ïåðåä íà÷àëîì âû÷èñëåíèé íà ñóïåð-
óçëå ñ íîìåðîì i íåîáõîäèìî ðàçìåñòèòü ìàòðèöó A, à òàêæå áëîê Q0 = B .
     Îïèøåì ðàñïðåäåëåííèå äàííûõ ïî âû÷èñëèòåëüíûì óçëàì, îòíîñÿùèìñÿ ê i-îìó ñóïåð-
óçëó. Äëÿ ïðîñòîòû áóäåì ïðåäïîëàãàòü, ÷òî êàæäûé ñóïåð-óçåë ñîñòîèò èç îäèíàêîâîãî
÷èñëà s âû÷èñëèòåëüíûõ óçëîâ. Èçáåãàÿ íåñóùåñòâåííûõ äåòàëåé, áóäåì ñ÷èòàòü, ÷òî ìàò-
ðèöà A ïðåäñòàâëÿåòñÿ â âèäå îáúåäèíåííèÿ s áëîêîâ-ñòîëáöîâ A1 , A2 , · · · , As ñ ðàâíûì
÷èñëîì ñòîëáöîâ ns è ðàâíûì ÷èñëîì íåíóëåâûõ ýëåìåíòîâ â êàæäîì áëîêå, à áëîê Q0 èìååò
ñîîòâåòñòâóþùåå áëî÷íîå ñòðî÷íîå ðàçáèåíèå
                                                 
                                            Q 1
                                           0 
                                                 
                                           2 
                                           Q0 
                                     Q0 = 
                                                 ,
                                                 ,                                   (40)
                                           ··· 
                                                 
                                                 
                                            Qs0

ãäå äëÿ ëþáîãî j áëîêè Qj0 è èìåþò ðàçìåðû ns × K , è ÷òî ïåðåä íà÷àëîì âû÷èñëåíèé â
îïåðàòèâíîé ïàìÿòè óçëà ñ íîìåðîì j , çàïèñàíû áëîê-ñòîëáåö Aj ìàòðèöû A è ÷àñòü Qj0
áëîêà Q0 .
    Ïðåäëîæåííàÿ ñõåìà õðàíåíèÿ åñòåñòâåííûì îáðàçîì îïðåäåëÿåò àëãîðèòìû ïîñòðî-
åíèÿ ñòåïåííîãî áàçèñà ïðîñòðàíñòâà Êðûëîâà è àëãîðèòìà âû÷èñëåíèÿ êîýèöèåíòîâ
ðÿäà Ïàäå.

2.8. Àëãîðèòì ïîñòðîåíèÿ A îðòîãîíàëüíîãî áàçèñà ïðîñòðàíñòâà Êðûëîâà

    Íà÷íåì ñ ýëåìåíòàðíîãî àíàëèçà ñëîæíîñòè âû÷èñëåíèé íà Øàãå 2 (ïîñòðîåíèå A-
îðòîãîíàëüíîãî áàçèñà). åøåíèå îäíîé ñèñòåìû ëèíåéíûõ óðàâíåíèé âèäà (34) èìååò
ñëîæíîñòü O(K 3 ), ñëåäîâàòåëüíî, ó÷èòûâàÿ, ÷òî ðåøàòü ñèñòåìó íåîáõîäèìî 2n/K ðàç,
ïîëíàÿ ðåøåíèÿ 2K × 2K ëèíåéíûõ ñèñòåì O(nK 2 ).
                                            (t)
    àññìîòðèì âû÷èñëåíèÿ êîýèöèåòîâ Hi ïîëèíîìèàëüíîãî ïðåäñòàâëåíèÿ,       çàäàâàå-
ìîãî îðìóëîé (35). Ñëîæíîñòü ýòîãî âû÷èñëåíèÿ îöåíèâàåòñÿ êàê O n K . Àíàëîãè÷íàÿ
                                                                      2
                                                                        

îöåíêà ñïðàâåäëèâà è äëÿ ðåêóððåíòíûõ ñîîòíîøåíèé (36) è (38). Íàêîíåö, ýëåìåíòàð-
íàÿ ïðîâåðêà ïîêàçûâàåò, ÷òî âñå îñòàëüíûå âû÷èñëåíèÿ íà Øàãå 2 (ïîñòðîåíèå A-
îðòîãîíàëüíîãî áàçèñà) èìåþò ñëîæíîñòü íå âûøå O(nK 2 ).
    Ó÷èòûâàÿ, ÷òî n ≫ K è, ñëåäîâàòåëüíî, n2 K ≫ nK 2 , îñíîâíîå âíèìàíèå áóäåì óäåëÿòü
ïàðàëëåëüíîé ðåàëèçàöèè ðåêóððåíòíûõ ñîîòíîøåíèé (35), (36), (38). Êëþ÷åâîå íàáëþäå-
íèå, êîòîðîå ïîçâîëÿåò ðåàëèçîâàòü ýåêòèâíóþ ïàðàëëåëüíóþ ïðîöåäóðó ïåðåñ÷åòà ðå-


                                               517
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


êóððåíòíûõ ñîîòíîøåíèé, çàêëþ÷àåòñÿ â âîçìîæíîñòè õðàíèòü ñòðîêè, áëîêîâ H , R è G, â
âèäå, äîïóñêàþùåì ñáàëàëàíñèðîâàííûå âû÷èñëåíèÿ íà âñåõ s óçëàõ ëþáîãî ñóïåð-óçëà.
      Èòàê, áóäåì ñ÷èòàòü, ÷òî íà óçëå ñ íîìåðîì 1 ñóïåð-óçëà ñ íîìåðîì i ðàñïîëàãàþòñÿ
                    (0)          (0)          (0)                 (0)
âåêòîðû-ñòðîêè Ri = α0i , Rsi = αsi , R(2s)i = α(2s)i , · · · , R(2n/K)i = α(2n/K)i (íàïîìíèì,
÷òî s  ýòî ïàðàìåòð, îïðåäåëÿþùèé ÷èñëî óçëîâ, îòíîñÿùèõñÿ ê äàííîìó ñóïåð-óçëó).
Àíàëîãè÷íî, íà óçëå ñ íîìåðîì 2 òîãî æå ñóïåð-óçëà ñ íîìåðîì i áóäóò ñîõðàíÿòüñÿ âåêòîðû
  (0)         (0)                (0)
R1i = α1i , R(s+1)i = α(s+1)i , R(2s+1)i = α(2s+1)i è ò.ä. Òàêèì îáðàçîì, íà êàæäîì èç s óçëîâ
êàæäîãî ñóïåð-óçëà áóäåò õðàíèòüñÿ ïðèìåðíî ïîðîâíó, à èìåííî ïî Ks
                                                                 2n
                                                                    âåêòîðîâ äëèíû
K , ïðåäñòàâëÿþùèõ áëîê R . Àíàëîãè÷íûì îáðàçîì ðåàëèçóåòñÿ ñõåìà õðàíåíèÿ áëîêîâ
                            (0)
        (s)  (s)          (s)   (s)
R(s) , H0 , H1 , à òàêæå G0 è G1 .
     àññìîòðèì ïðåèìóùåñòâà, êîòîðûå äàåò îïèñàííàÿ íàìè ñõåìà õðàíåíèÿ. Âûïèøåì
àëãîðèòì, ñîîòâåòñòâóþùèé âû÷èñëåíèþ s + 1 îñòàòêà ðÿäà Ïàäå ïî îðìóëå

                             R(s+1) = Z T R(s) + R(s) ν0 + R(s−1) ν1 ,                        (41)

ñ÷èòàÿ ÷òî ìàòðèöû ν0 è ν1 ÿâëÿþòñÿ èçâåñòíûìè.
                       (s)
    Îáîçíà÷èì ÷åðåç R̃il áëîê ðàçìåðà Ks
                                       2n
                                          , ïðåäñòàâëÿþùèé íàáîð âåêòîðîâ R(s) íà l-îì
óçëå i-îãî ñóïåðóçëà. Íå ñëîæíî ïðîâåðèòü, ÷òî (41) ïåðåõîäèò â ñëåäóþùåå ñîîòíîøåíèå:
                             (s+1)           (s)         (s)       (s−1)
                           R̃il      = Z̃ T R̃i(l+1) + R̃il ν0 + R̃il      ν1 ,               (42)

ãäå Z̃  æîðäàíîâà êëåòêà ðàçìåðà Ks
                                   2n
                                      ñ íóëåâûì çíà÷åíèåì íà äèàãîíàëè. Ïåðâîå ñëàãàåìîå
â ïðàâîé ÷àñòè (42) èìååò íèæíèé èíäåêñ l+1, à çíà÷èò ýòà ÷àñòü áëîêà R(s) ðàñïîëàãàåòñÿ â
ïàìÿòè óçëà ñ íîìåðîì l+1. Â òîæå âðåìÿ îñòàëüíûå ñëàãàåìûå è ïðåäïîëàãàåìûé ðåçóëüòàò
íàõîäÿòñÿ íà óçëå ñ íîìåðîì l. Òàêèì îáðàçîì, âû÷èñëåíèÿ ïî îðìóëå (42) ïîäðàçóìåâàþò
îáìåí äàííûìè ìåæäó óçëàìè ñóïåð-óçëà ñ íîìåðîì i. Çàïèøåì àëãîðèòì.
Àëãîðèòì äëÿ (41):

  1. íà êàæäîì èç s óçëîâ âû÷èñëèòü ïðîèçâåäåíèå âñåõ Ks
                                                      2n
                                                         ñòðîê îò áëîêà R(s) íà ìàòðèöó
     ν0 ;

  2. íà êàæäîì èç s óçëîâ âû÷èñëèòü ïðîèçâåäåíèå âñåõ Ks
                                                      2n
                                                         ñòðîê îò áëîêà R(s−1) íà
     ìàòðèöó ν1 ;

  3. ñëîæèòü ñîîòâåòñòâóþùèå ñòðîêè;

  4. ïåðåñëàòü ñòðîêè ñ óçëà ñ íîìåðîì i íà óçåë ñ íîìåðîì (i mods) + 1) è ñëîæèòü ñ
     ïðåäûäóùèì ðåçóëüòàòîì.

   Äëÿ òîãî, ÷òîáû çàêîí÷èòü îïèñàíèå ïàðàëëåëüíîé ðåàëèçàöèè Øàãà 2 (ïîñòðîå-
íèå A-îðòîãîíàëüíîãî áàçèñà), íàì íåîáõîäèìî îïèñàòü ïðîöåññ ãëîáàëüíûõ ïåðåñûëîê
ìåæäó ðàçëè÷íûìè ñóïåð-óçëàìè è ñâÿçàííûå ñ íèìè âû÷èñëåíèÿìè. Äåéñòâèòåëüíî, åùå
íè÷åãî íå áûëî ñêàçàíî î òîì, êàê ïîëó÷àòü ìàòðèöû ν0 è ν1 . Ïîñêîëüêó äàííûå ìàòðè-
öû ÿâëÿþòñÿ ðåçóëüòàòîì ðåøåíèÿ ñèñòåì (34), òî íåîáõîäèìî ó÷åñòü âðåìÿ, íåîáõîäèìîå
íà ñáîðêó è ðåøåíèå òàêèõ ñèñòåì. Íà÷íåì ñî ñáîðêè. Ó÷èòûâàÿ âûáðàííóþ íàìè ñõåìó
õðàíåíèÿ äàííûõ, ñáîðêà (34) ÿâëÿåòñÿ ðåçóëüòàòîì ýëåìåíòàðíîãî îáìåíà äàííûìè ìåæäó
ñóïåð-óçëàìè.

2.9. Îðãàíèçàöèÿ ïàðàëëåëüíûõ âû÷èñëåíèé íà Øàãå 3 (ïîñòðîåíèå ðåøå-
     íèÿ)

    Ïîäõîä ê ïîñòðîåíèþ äàííîãî àëãîðèòìà îïèñàí â ðàçäåëå 4.3 êíèãè [12℄. Èäåÿ ïîäõîäà
âåñüìà ïðîñòà. àññìîòðèì ñíà÷àëà íåñêîëüêî óïðîùåííóþ ñèòóàöèþ. Ñ÷èòàÿ çàäàííûìè


                                                   518
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


áëîê B ∈ Fn×K , ìàòðèöó A ∈ Fn×n è âåêòîð G, áóäåì èñêàòü âåêòîð X â âèäå
                                                         n
                                                         K
                                                           −1
                                                         X
                                   X = K0 G =                   Ai BGi ,                       (43)
                                                         i=0

ãäå Gi  ïîäâåêòîðû âåêòîðà G ðàçìåðà K .
    Ïóñòü èìåþòñÿ K óçëîâ, è íà êàæäîì èç K óçëîâ íàõîäèòñÿ ïîñëåäîâàòåëüíîñòü Êðû-
ëîâà âèäà Bi , ABi , A2 Bi , · · · , An/K−1 Bi è âåñü âåêòîð G. Íàøà áëèæàéøàÿ öåëü ïðåäëîæèòü
àëãîðèòì ïîëó÷åíèÿ X , ìèíèìèçèðóþùèé ÷èñëî îáìåíîâ.
    Çàïèøåì (43) áîëåå ïîäðîáíî, ðàññêðûâàÿ íåÿâíîå ñóììèðîâàíèå â ñîîòíîøåíèè ABGi ,
                                        n
                                        K
                                          −1
                                        X
                                  X=           Ai BGi                                          (44)
                                        i=0
                                        n                               
                                        K
                                          −1       K
                                        X          X
                                                          Ai B j Gij                          (45)
                                                                 
                                    =          
                                        i=0        j=1
                                              n              
                                        K       K
                                                  −1
                                        X       X
                                                     Ai B Gij                                 (46)
                                                         
                                    =         
                                                                     j
                                        j=1     i=0
                                              n               
                                        K       K
                                                  −1
                                        X       X
                                    =               Ai Bj Gij  .                             (47)
                                        j=1     i=0

Íå òðóäíî çàìåòèòü, ÷òî â (47) âûðàæåíèå â ñêîáêàõ ìîæåò âû÷èñëÿòüñÿ íà âñåõ óçëàõ
íåçàâèñèìî. Òàêèì îáðàçîì, åñëè áû òðåáîâàëîñü ïîëó÷èòü X íà óçëå ñ íîìåðîì 1, òî
êîëè÷åñòâî íåîáõîäèìûõ îáìåíîâ äëÿ ïîëó÷åíèÿ X íå ïðåâîñõîäèëî áû O (n).
    Ïðèìåíèì äàííûé ïîäõîä ê ïîñòðîåíèþ îïòèìàëüíîãî ïî ñëîæíîñòè àëãîðèòìà ïîëó-
÷åíèÿ ðåøåíèÿ ëèíåéíîé ñèñòåìû â âèäå ëèíåéíîé êîìáèíàöèè áëîêîâ áëî÷íî-ñòåïåííîãî
áàçèñà ïðîñòðàíñòâà Êðûëîâà. Íà÷íåì ñ îáñóæäåíèÿ òîãî, ÷åì ðåàëüíûé àëãîðèòì îòëè÷à-
åòñÿ îò òîëüêî ÷òî ðàññìîòðåííîé óïðîùåííîé ñèòóàöèè. Âî-ïåðâûõ, â ðåàëüíîé ñèòóàöèè
èìååòñÿ K ñóïåð-óçëîâ, êàæäûé èç êîòîðûõ ñîñòîèò èç s óçëîâ. Âî-âòîðûõ, âåêòîðû âèäà
Aj Bi õðàíÿòñÿ íà îòäåëüíûõ óçëàõ ñóïåð-óçëîâ â âèäå ïîäâåêòîðîâ ðàçìåðà ns , ÷òî îïðåäå-
ëÿåòñÿ âûáðàííîé íàìè ñõåìîé õðàíåíèÿ (ñì. ïóíêò 2.7). Êàê áóäåò âèäíî èç äàëüíåéøåãî,
ýòè îòëè÷èÿ íå ïîâëèÿþò ñóùåñòâåííî íà ïîñòðîåíèå ïàðàëëåëüíîé ïðîöåäóðû.
    Îòìåòèì åùå, ÷òî â ðàññìàòðèâàåìîì íàìè àëãîðèòìå G ýòî íå âåêòîð, à n × K áëîê
âåêòîðîâ. Ñõåìà õðàíåíèÿ áëîêà G áûëà îïèñàíà íàìè ðàíåå. Íå òðóäíî ïðîâåðèòü, ÷òî
ïîñëå âñåõ âû÷èñëåíèé íà Øàãå 2 (ïîñòðîåíèå A-îðòîãîíàëüíîãî áàçèñà) ñòðîêè áëî-
      n         n
          −1         −1
êîâ G0K , G1K   è ñîîòâåòñòâóþùèå ñòîëáöàì Aj Bi êðûëîâñêèõ ñèñòåì, ðàñïîëàãàþòñÿ â
ïàìÿòè óçëîâ îäíîãî è òîãî æå ñóïåð-óçëà ñ íîìåðîì i (ñì. ïóíêò 2.8). Ýòîò àêò ïîçâî-
ëÿåò íàì ðàññìîòðåòü àëãîðèòì âû÷èñëåíèÿ ðåøåíèÿ X , êîòîðûé â ìèíèìàëüíîé ñòåïåíè
èñïîëüçóåò îáìåí ìåæäó îòäåëüíûìè ñóïåð-óçëàìè, à, ñëåäîâàòåëüíî, íå çàâèñèò îò òèïà
ïàðàëëåëüíîé àðõèòåêòóðû.
Àëãîðèòì âû÷èñëåíèÿ X :
                                                                                             ( n −1)
  1. ñîáðàòü íà êàæäîì óçëå êàæäîãî ñóïåð-óçëà K
                                               n
                                                 × K ïîäáëîêè G̃0 è G̃1 áëîêîâ G0K
           ( n −1)
     è G1 K   (íàïîìíèì, ÷òî äî íà÷àëà ðàáîòû àëãîðèòìà íà óçëàõ ðàñïîëàãàþòñÿ ëèøü
      n
     Ks ×  K ïîäáëîêè áëîêîâ G̃0 è G̃1 );
  2. ïðîâåñòè íåçàâèñèìî íà êàæäîì óçëå âû÷èñëåíèÿ âèäà
                                        n                
                                          K
                                            −1
                                          X
                                 X̃ti =       Aj Bit G̃j  ,                                  (48)
                                                     j=0


                                                   519
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org


     çäåñü t îáîçíà÷àåò íîìåð óçëà â ñóïåð-óçëå ñ íîìåðîì i, à X̃ti  áëîê ðàçìåðà ns × K ,
     ðàñïîëîæåííûé â ïàìÿòè t-îãî óçëà ñóïåð-óçëà ñ íîìåðîì i;

  3. ïåðåñëàòü áëîêè X̃ti íà t-ûé óçåë ñóïåð-óçëà ñ íîìåðîì 1 (âûäåëåííîãî ñóïåð-óçëà);

  4. íà óçëå ñ íîìåðîì t ñóïåð-óçëà 1 âû÷èñëèòü
                                                     K
                                                     X
                                             X̃t =         X̃ti .                             (49)
                                                     i=1


  5. ñîáðàòü ðåøåíèå íà óçëå 1 ñóïåð-óçëà 1.

Ëèòåðàòóðà
 1. Lan zos C. An iteration method for the solution of the eigenvalue problem of linear
    dierential and integral operators // J. Res. Nat. Bur. Standards. 1950. Vol. 45, P. 255282.

 2. Coppersmith D. Solving linear equations over GF (2): Blo k Lan zos algorithm. // Linear
    Algebra Appl. 1993. Vol. 193. P. 3360.

 3. Gutkne ht M.H. A ompleted theory of the unsymmetri Lan zos pro ess and related
    algorithms. Part I. // SIAM J. Matrix Anal. Appl. 1992. Vol. 13. N. 2. P. 594639.

 4. Gutkne ht M.H. A ompleted theory of the unsymmetri Lan zos pro ess and related
    algorithms. Part II. // SIAM J. Matrix Anal. Appl. 1992. Vol. 15. P. 1558.

 5. Montgomery P. A blo k Lan zos algorithm for nding dependen ies over GF(2) //
    Springer-Verlag, 1995. Vol. 921.

 6. Peterson M., Moni o C. F2 Lan zos revisited. // Linear Algebra Appl. 2008. Vol. 428.
    P. 11351150.

 7. Äîðîååâ À.ß. Âû÷èñëåíèå ëîãàðèìîâ â êîíå÷íîì ïðîñòîì ïîëå ìåòîäîì ëèíåéíîãî
    ðåøåòà. // Òðóäû ïî äèñêðåòíîé ìàòåìàòèêå. 2002. Ò. 5. P. 2950.

 8. Äîðîååâ À.ß. åøåíèå ñèñòåì ëèíåéíûõ óðàâíåíèé ïðè âû÷èñëåíèè ëîãàðèìîâ â
    êîíå÷íîì ïðîñòîì ïîëå. // Ìàòåìàòè÷åñêèå âîïðîñû êðèïòîãðàèè. 2012. Vol. 3. N. 1.
    P. 551.

 9. ×åðåïíåâ Ì.À. Áëî÷íûé àëãîðèòì òèïà Ëàíöîøà ðåøåíèé ðàçðåæåííûõ ñèñòåì
    ëèíåéíûõ óðàâíåíèé. // Äèñêðåòíàÿ ìàòåìàòèêà. 2008. Vol. 20. N. 1.

10. Ì.À. ×åðåïíåâ. Version of blo k Lan zos-type algorithm for solving sparse linear systems.
    Bull.Math.So .S i.Math.Roumanie, V.53(101), N.3, 2010, p.225-230,

    http://rms.unibu .ro/bulletin.

11. È.À. Ïîïîâÿí Þ.Â. Íåñòåðåíêî, Å.À. ðå÷íèêîâ. Âû÷èñëèòåëüíî ñëîæíûå çàäà÷è
    òåîðèè ÷èñåë. Ó÷åáíîå ïîñîáèå. Èçäàòåëüñòâî Ìîñêîâñêîãî Óíèâåðñèòåòà, 2012.

12. Í.Ë. Çàìàðàøêèí. Àëãîðèòìû äëÿ ðàçðåæåííûõ ñèñòåì ëèíåéíûõ óðàâíåíèé â GF(2).
    Ó÷åáíîå ïîñîáèå. Èçäàòåëüñòâî Ìîñêîâñêîãî Óíèâåðñèòåòà, 2013.




                                               520
   Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org



Universal block Lanczos-Pade method for linear systems over
large finite fields
Nikolay Zamarashkin and Mihail Cherepnev
In this paper we propose a universal algorithm designed for solving large sparse linear
systems over finite fields with large prime number of elements. Such systems arise in the
solution of the discrete logarithm problem modulo a prime number. Parallel algorithms and
effective data distributions are proposed.