=Paper= {{Paper |id=Vol-1576/181 |storemode=property |title=Numerical Hydrodynamics Simulation of Astrophysical Flows at Intel Xeon Phi supercomputers |pdfUrl=https://ceur-ws.org/Vol-1576/181.pdf |volume=Vol-1576 |authors=Igor Kulikov,Igor Chernykh,Eduard Vorobyov,Aleksey Snytnikov,Dmitriy Weins,Aleksandr Moskovsky,Aleksey Shmelev,Viktor Protasov,Aleksandr Serenko,Vladislav Nenashev,Vitaliy Vshivkov,Aleksey Rodionov,Boris Glinsky,Aleksandr Tutukov }} ==Numerical Hydrodynamics Simulation of Astrophysical Flows at Intel Xeon Phi supercomputers== https://ceur-ws.org/Vol-1576/181.pdf
Параллельные вычислительные технологии (ПаВТ’2016) || Parallel computational technologies (PCT’2016)

                                                agora.guru.ru/pavt




       ×èñëåííîå ãèäðîäèíàìè÷åñêîå ìîäåëèðîâàíèå

àñòðîôèçè÷åñêèõ òå÷åíèé íà ãèáðèäíûõ ñóïåðÝÂÌ,
                                                                                              ∗
          îñíàùåííûõ óñêîðèòåëÿìè Intel Xeon Phi

                 1,2                  1,2                        3,4                    1,2          1
È.Ì. Êóëèêîâ          , È.Ã. ×åðíûõ     , Ý.È. Âîðîáüåâ              , À.Â. Ñíûòíèêîâ     , Ä.Â. Âèíñ ,
                       5                    5                        7              7                7
 À.À. Ìîñêîâñêèé , À.Á. Øìåëåâ , Â.À. Ïðîòàñîâ , À.À. Ñåðåíêî , Â.Å. Íåíàøåâ ,
                       1               1
           Â.À. Âøèâêîâ , À.Ñ. Ðîäèîíîâ , Á.Ì. Ãëèíñêèé
                                                       1,2, À.Â. Òóòóêîâ6

 Èíñòèòóò âû÷èñëèòåëüíîé ìàòåìàòèêè è ìàòåìàòè÷åñêîé ãåîôèçèêè Ñèáèðñêîãî
                       1                                                            2
  îòäåëåíèÿ ÐÀÍ            , Íîâîñèáèðñêèé ãîñóäàðñòâåííûé óíèâåðñèòåò , Department of
                                          3
        Astrophysics, University of Vienna , ÍÈÈ Ôèçèêè, Þæíûé Ôåäåðàëüíûé
                  4                             5
   Óíèâåðñèòåò , ÐÑÊ Òåõíîëîãèè , Èíñòèòóò àñòðîíîìèè ÐÀÍ , Íîâîñèáèðñêèé
                                                                                6
                                                                                7
                            ãîñóäàðñòâåííûé òåõíè÷åñêèé óíèâåðñèòåò



           ðàáîòå ïðåäñòàâëåíû èññëåäîâàíèÿ êîäà AstroPhi äëÿ ÷èñëåííîãî ìîäåëèðî-
          âàíèÿ àñòðîôèçè÷åñêèõ òå÷åíèé íà ãèáðèäíûõ ñóïåðÝÂÌ, îñíàùåííûõ óñêîðè-
          òåëÿìè Intel Xeon Phi. Îïèñàí ñî-äèçàéí âû÷èñëèòåëüíîé ìîäåëè äëÿ îïèñàíèÿ
          àñòðîôèçè÷åñêèõ îáúåêòîâ. Äåòàëüíî îïèñàíû îñîáåííîñòè ïàðàëëåëüíîé ðåà-
          ëèçàöèè è èññëåäîâàíèÿ ïðîèçâîäèòåëüíîñòè êîäà AstroPhi. Ïðåäñòàâëåíû ðå-
          çóëüòàòû ìîäåëèðîâàíèÿ âçàèìîäåéñòâèÿ ìåæãàëàêòè÷åñêîãî âåòðà è äèñêîâîé
          ãàëàêòèêè. Äëÿ êîäà AstroPhi áûëî äîñòèãíóòî 134-êðàòíîå óñêîðåíèå â ðàìêàõ
          îäíîãî óñêîðèòåëÿ Intel Xeon Phi, 75-ïðîöåíòíàÿ ìàñøòàáèðóåìîñòü ïðè èñïîëü-
          çîâàíèè 224 óñêîðèòåëåé Intel Xeon Phi. Íà ðàñ÷åòíîé ñåòêå 7168 × 1024 × 1024
          áûëî äîñòèãíóòî 47 ïðîöåíòîâ îò ïèêîâîé ñêàëÿðíîé ïðîèçâîäèòåëüíîñòè óñêî-
          ðèòåëÿ Intel Xeon Phi ïðè èñïîëüçîâàíèè 53760 íèòåé.
          Êëþ÷åâûå ñëîâà: Âûñîêîïðîèçâîäèòåëüíûå âû÷èñëåíèÿ, âû÷èñëèòåëüíàÿ àñòðî-
          ôèçèêà, óñêîðèòåëè Intel Xeon Phi.

1. Ââåäåíèå

      Ìàòåìàòè÷åñêîå ìîäåëèðîâàíèå èãðàåò êëþ÷åâóþ ðîëü â ñîâðåìåííîé àñòðîôèçèêå.
Îíî ÿâëÿåòñÿ óíèâåðñàëüíûì èíñòðóìåíòîì äëÿ èññëåäîâàíèÿ íåëèíåéíûõ ýâîëþöèîííûõ
ïðîöåññîâ âî Âñåëåííîé. Îäíèìè èç âàæíåéøèõ çàäà÷, ðåøàåìûõ âû÷èñëèòåëüíîé àñòðî-
ôèçèêîé, ÿâëÿþòñÿ çàäà÷è ñòîëêíîâåíèÿ [1] è ýâîëþöèè ãàëàêòèê [2], ïðîöåññû êîëëàïñà
çâåçä [3], õèìîêèíåòè÷åñêèå ïðîöåññû â ãàëàêòèêàõ [4]. Ïðè êîíñòðóèðîâàíèè ìàòåìàòè-
÷åñêîé ìîäåëè ñëåäóåò ó÷èòûâàòü äîñòèæåíèÿ ñîâðåìåííîé àñòðîíîìèè. Òàê àêòóàëüíûì
ÿâëÿåòñÿ ó÷åò ìàãíèòíîãî ïîëÿ â ãàëàêòèêàõ, òàê êàê åãî íàëè÷èå îáíàðóæåíî â ðóêàâàõ
ãàëàêòèêè M51 [5] è âëèÿåò íà ïðîöåññ çâåçäîîáðàçîâàíèÿ. Òàêèì îáðàçîì, èçó÷åíèå àñò-
ðîôèçè÷åñêèõ ïðîöåññîâ óñëîæíÿåòñÿ íåîáõîäèìîñòüþ ó÷åòà áîëüøîãî ÷èñëà ïîäñåòî÷íûõ
ôèçè÷åñêèõ ïðîöåññîâ. Êðîìå òîãî, ñîñòàâ àñòðîôèçè÷åñêèõ îáúåêòîâ ñîñòîèò èç íåñêîëü-
êèõ èíãðèäèåíòîâ, äëÿ îïèñàíèÿ êîòîðûõ èñïîëüçóþòñÿ ðàçëè÷íûå ìàòåìàòè÷åñêèå ìîäå-
ëè. Äàííîå îáñòîÿòåëüñòâî óñëîæíÿåò ðàçðàáîòêó ýôôåêòèâíûõ êîäîâ äëÿ èññëåäîâàíèÿ
àñòðîôèçè÷åñêèõ ïðîáëåì íà ñóïåðêîìïüþòåðàõ.
      Äëÿ ìîäåëèðîâàíèÿ ñëîæíûõ àñòðîôèçè÷åñêèõ ïðîöåññîâ â âûñîêîì ðàçðåøåíèè íåîá-
õîäèìî èñïîëüçîâàòü íàèáîëåå ìîùíûå ñóïåðêîìïüþòåðû. Äâà èç Top-3 (÷åòûðå èç Top-10)
ñóïåðêîìïüþòåðà â íîÿáðüñêîé âåðñèè 2015 ãîäà ñïèñêà Top-500 îñíàùåíû ãðàôè÷åñêèìè
óñêîðèòåëÿìè è óñêîðèòåëÿìè Intel Xeon Phi. Îæèäàåòñÿ, ÷òî ïåðâûé ñóïåðêîìïüþòåð ýê-

  ∗
    Ðàáîòà ïîääåðæàíà ãðàíòîì Ðîññèéñêîãî ôîíäà ôóíäàìåíòàëüíûõ èññëåäîâàíèé 15-31-20150 ìîë-à-âåä,
15-01-00508 è 16-07-00434, ãðàíòîì Ïðåçèäåíòà ÐÔ MK  6648.2015.9. Ðàáîòà âûïîëíåíà ïðè ÷àñòè÷íîé
ïîääåðæêå ïðîåêòíîé ÷àñòè ãîñçàäàíèÿ  3.961.2014/Ê Ìèíèñòåðñòâà Îáðàçîâàíèÿ è Íàóêè Ðîññèéñêîé
Ôåäåðàöèè (Ý.È. Âîðîáüåâ).



                                                      205
Параллельные вычислительные технологии (ПаВТ’2016) || Parallel computational technologies (PCT’2016)

                                         agora.guru.ru/pavt



çàôëîïñíîé ïðîèçâîäèòåëüíîñòè áóäåò ïîñòðîåí íà îñíîâå ãèáðèäíîãî ïîäõîäà. Ðàçðàáîòêà
êîäîâ äëÿ ãèáðèäíûõ ñóïåðêîìïüþòåðîâ íå ñóãóáî òåõíè÷åñêàÿ çàäà÷à, à îòäåëüíàÿ ñëîæ-
íàÿ íàó÷íàÿ çàäà÷à, òðåáóþùàÿ ñî-äèçàéíà àëãîðèòìîâ íà âñåõ ñòàäèÿõ ðåøåíèÿ çàäà÷è 
îò ôèçè÷åñêîé ïîñòàíîâêè äî èíñòðóìåíòîâ ðàçðàáîòêè.
   Íåñìîòðÿ íà áîëüøîå ÷èñëî ðàçðàáîòàííûõ êîäîâ äëÿ ðåøåíèÿ àñòðîôèçè÷åñêèõ çà-
äà÷ [6] îñòàåòñÿ áîëüøîå ÷èñëî íåðåøåííûõ ïðîáëåì â îáëàñòè ìàòåìàòè÷åñêèõ ìîäåëåé,
÷èñëåííûõ ìåòîäîâ è ïðîãðàììíûõ ðåàëèçàöèé äëÿ èçó÷åíèÿ àñòðîôèçè÷åñêèõ òå÷åíèé. Àâ-
òîðñêèì êîëëåêòèâîì óæå íà ïðîòÿæåíèè íåñêîëüêèõ ëåò ðàçâèâàåòñÿ ãèáðèäíûé ýéëåðîâî-
ëàãðàíæåâûé ïîäõîä äëÿ ðåøåíèÿ àñòðîôèçè÷åñêèõ çàäà÷.  íàñòîÿùåé ñòàòüå áóäåò ïðè-
âåäåíî êðàòêîå îïèñàíèå è ïîäðîáíîå èññëåäîâàíèå îðèãèíàëüíîãî êîäà AstroPhi [7] äëÿ
ìîäåëèðîâàíèÿ äèíàìèêè àñòðîôèçè÷åñêèõ îáúåêòîâ.


2. Êîíöåïöèÿ ñî-äèçàéíà âû÷èñëèòåëüíîé ñõåìû

   Ãëàâíûé ôîêóñ íàøèõ èññëåäîâàíèé íàïðàâëåí íà ìîäåëèðîâàíèå äèíàìèêè ãàëàêòèê.
Ïîýòîìó ÷èñëåííàÿ ìîäåëü àñòðîôèçè÷åñêèõ òå÷åíèé îðèåíòèðîâàíà â îñíîâíîì íà îïèñà-
íèå êîìïîíåíò ãàëàêòèê è ïîäñåòî÷íûõ ïðîöåññîâ.  ðàáîòå [8] áûëè èññëåäîâàíû âîïðîñû
ñî-äèçàéíà ÷èñëåííûõ ìîäåëåé àñòðîôèçèêè è ôèçèêè ïëàçìû. Ðàñññìîòðèì îñíîâíûå ýòà-
ïû ñî-äèçàéíà ÷èñëåííûõ ìîäåëåé äëÿ ðåøåíèÿ àñòðîôèçè÷åñêèõ ïðîáëåì.


  1. Ýòàï ôîðìóëèðîâêè ôèçè÷åñêîé çàäà÷è. Ãëàâíûìè èíãðèäèåíòàìè ãàëàêòèê ÿâëÿåòñÿ
     ãàçîâàÿ êîìïîíåíòà, êîòîðàÿ îïèñûâàåò ìåæçâåçäíûé ãàç è ðàâíîìåðíî ðàñïðåäåëåí-
     íóþ ïûëü, è áåññòîëêíîâèòåëüíàÿ êîìïîíåíòû, êîòîðàÿ èñïîëüçóåòñÿ äëÿ îïèñàíèÿ
     çâåçäíîé êîìïîíåíòû è òåìíîé ìàòåðèè. Îñíîâíûìè ïîäñåòî÷íûìè ôèçè÷åñêèìè ïðî-
     öåññàìè ÿâëÿþòñÿ ïðîöåññû çâåçäîîáðàçîâàíèÿ, ýôôåêò îò âçðûâà ñâåðõíîâûõ, ôóíê-
     öèè îõëàæäåíèÿ è íàãðåâàíèÿ, à òàêæå õèìè÷åñêèå ðåàêöèè [9].


  2. Ýòàï ìàòåìàòè÷åñêîé ôîðìàëèçàöèè. Äëÿ îïèñàíèÿ ãàçîâîé êîìïîíåíòû èñïîëüçó-
     þòñÿ óðàâíåíèÿ ãðàâèòàöèîííîé ãàçîâîé äèíàìèêè, êîòîðûå ðàñøèðÿþòñÿ íà óðàâíå-
     íèÿ îäíîñêîðîñòíîé ìíîãîêìîïíåíòíîé ãðàâèòàöèîííîé ãàçîâîé äèíàìèêè ñ ýôôåê-
     òèâíûì ïîêàçàòåëåì àäèàáàòû â ñëó÷àå ó÷åòà õèìè÷åñêèõ ðåàêöèé. Äëÿ îïèñàíèÿ
     áåññòîëêíîâèòåëüíîé êîìïîíåíòû èñïîëüçóþòñÿ óðàâíåíèÿ äëÿ ïåðâûõ ìîìåíòîâ áåñ-
     ñòîëêíîâèòåëüíîãî óðàâíåíèÿ Áîëüöìàíà. Òàêîé ïîäõîä áûë èññëåäîâàí è óñïåøíî
     èñïîëüçîâàí äëÿ ðåøåíèÿ çàäà÷ ýâîëþöèè [2, 9] è ñòîëêíîâåíèÿ ãàëàêòèê [6, 10]. Òà-
     êîé ñïîñîá îïèñàíèÿ áåññòîëêíîâèòåëüíîé êîìïîíåíòû ïîçâîëÿåò ïîçâîëÿåò ñôîðìó-
     ëèðîâàòü òåðìîäèíàìè÷åñêè ñîãëàñîâàííóþ ìîäåëü çâåçäîîáðàçîâàíèÿ è ýôôåêòà îò
     âçðûâà ñâåðõíîâûõ.


  3. Ýòàï ïîñòðîåíèÿ ÷èñëåííîãî ìåòîäà ðåøåíèÿ. Îñîáåííîñòüþ ìàòåìàòè÷åñêîé ôîð-
     ìàëèçàöèè ÿâëÿåòñÿ îïèñàíèå ãàçîâîé è áåññòîëêíîâèòåëüíîé êîìïîíåíò ãàëàêòèê ñ
     ïîìîùüþ ñèñòåìû ãèïåðáîëè÷åñêèõ óðàâíåíèé. Òàêèì îáðàçîì, ìû ìîæåì ñôîðìóëè-
     ðîâàòü åäèíûé ÷èñëåííûé ìåòîä ðåøåíèÿ ãèïåðáîëè÷åñêèõ óðàâíåíèé.  ñëåäóþùåì
     ðàçäåëå ÷èñëåííûé ìåòîä áóäåò îïèñàí áîëåå ïîäðîáíî. Èñïîëüçîâàíèå åäèíîãî ÷èñ-
     ëåííîãî ìåòîäà ïîçâîëÿåò çàïèñàòü åäèíûé ïàðàëëåëüíûé àëãîðèòì. Â îñíîâå òàêîãî
     àëãîðèòìà ëåæèò ëîêàëüíîñòü âû÷èñëåíèé, ÷òî äîñòàòî÷íî ýôôåêòèâíî ïðîåöèðóåòñÿ
     íà ñîâðåìåííûå àðõèòåêòóðû ñóïåðêîìïüþòåðîâ.


  4. Ýòàï âûáîðà ñòðóêòóð äàííûõ. Èñïîëüçóåìûå ñòðóêòóðû äàííûõ â ñëó÷àå ðåøåíèÿ ãè-
     ïåðáîëè÷åñêèõ óðàâíåíèé ïîëíîñòüþ ñîãëàñóþòñÿ ñ âûáîðîì ðàñ÷åòíûõ ñåòîê.  îðè-
     ãèíàëüíîì ïîäõîäå èñïîëüçóþòñÿ ðåãóëÿðíûå ñåòêè, ÷òî ïîçâîëÿåò ñôîðìóëèðîâàòü
     ïðîñòîé ïîäõîä ê îðãàíèçàöèè ïàðàëëåëüíûõ âû÷èñëåíèé [11]. Îñíîâíûì èç òðåíäîâ
     ñîâðåìåííîãî ÷èñëåííîãî ðåøåíèÿ ãèïåðáîëè÷åñêèõ óðàâíåíèé ÿâëÿåòñÿ òåõíîëîãèÿ
     ïîäâèæíûõ ñåòîê.  ñëó÷àå èñïîëüçîâàíèÿ ðåãóëÿðíûõ ñòðóêòóð äàííûõ ìîæåò áûòü



                                               206
Параллельные вычислительные технологии (ПаВТ’2016) || Parallel computational technologies (PCT’2016)

                                         agora.guru.ru/pavt



     îïèñàíà òåõíîëîãèÿ êîìôîðíûõ ïîäâèæíûõ ñåòîê, êîòîðàÿ ïîçâîëÿåò ýôôåêòèâíî ìî-
     äåëèðîâàòü áîëüøîå ÷èñëî çàäà÷ ìåõàíèêè ñïëîøíîé ñðåäû. Ïðè ýòîì ñîõðàíÿþòñÿ
     ïàðàëëåëüíûå àëãîðèòìû, èñïîëüçóåìûå äëÿ âû÷èñëåíèé íà ðåãóëÿðíûõ ñåòêàõ.  íà-
     ñòîÿùåå âðåìÿ, òàêàÿ òåõíîëîãèÿ ïîäâèæíûõ ñåòîê íå ðåàëèçîâàíà â êîäå AstroPhi,
     íî â ïåðñïåêòèâå òàêàÿ ðåàëèçàöèÿ ïëàíèðóåòñÿ.


  5. Ýòàï ó÷åòà àðõèòåêòóðû ñóïåðêîìïüþòåðà.  íàøèõ èññëåäîâàíèÿõ èñïîëüçóþòñÿ ãè-
     áðèäíûå ñóïåðêîìïüþòåðû ñ óñêîðèòåëÿìè Intel Xeon Phi. Ëîãè÷åñêàÿ àðõèòåêòóðû
     òàêîãî ñóïåðêîìïüþòåðà ïðåäñòàâëÿåòñÿ â âèäå ëèíåéêè óñêîðèòåëåé, âçàèìîäåéñòâó-
     þùèõ íàïðÿìóþ (â ñëó÷àå èñïîëüçîâàíèÿ native ðåæèìà) èëè ÷åðåç CPU (â ñëó÷àå
     èñïîëüçîâàíèÿ ooad ðåæèìà).  ðàìêàõ îäíîãî óñêîðèòåëÿ âû÷èñëåíèÿ ðàçáèâàþò-
     ñÿ íà áîëüøîå (íåñêîëüêî ñîòåí) íèòåé. Îðãàíèçàöèÿ âû÷èñëåíèé â îðèãèíàëüíîì
     ìåòîäå ïîçâîëÿåò èñêëþ÷èòü âçàèìîäåéñòâèå ìåæäó íèòÿìè â ðàìêàõ îäíîãî óñêîðè-
     òåëÿ íà îñíîâíûõ ýòàïàõ ìåòîäà, ëèáî ñâîäèòü òàêèå âû÷èñëåíèÿ ê ìèíèìóìó. Òàêîå
     âçàèìîäåéñòâèå âîçíèêàåò â ñëó÷àå âû÷èñëåíèÿ øàãà ïî âðåìåíè èç óñëîâèÿ Êóðàíòà.


  6. Ýòàï èñïîëüçîâàíèÿ ñðåäñòâ ðàçðàáîòêè. Îðãàíèçàöèÿ âû÷èñëåíèé îðèãèíàëüíîãî ÷èñ-
     ëåííîãî ìåòîäà è àðõèòåêòóðû èñïîëüçóåìûõ ñóïåðêîìïüþòåðîâ ïîçâîëÿþò íàì îãðà-
     íè÷èòüñÿ áèáëèîòåêîé MPI äëÿ îðãàíèçàöèè ìåæïðîöåññíûõ âçàèìîäåéñòâèé è òåõ-
     íîëîãèåé OpenMP äëÿ îðãàíèçàöèè ìíîãîïîòî÷íûõ âû÷èñëåíèé.


 ñëåäóþùåì ðàçäåëå áóäåò ïîäðîáíåå îïèñàíà ðåàëèçàöèÿ êàæäîãî ýòàïà.


3. Êîä AstroPhi

   Äëÿ îïèñàíèÿ ãàçîâîé êîìïîíåíòû áóäåì èñïîëüçîâàòü ñèñòåìó óðàâíåíèé îäíîñêîðîñò-
íîé ìíîãîêîìïîíåíòíîé ãðàâèòàöèîííîé ãàçîâîé äèíàìèêè, çàïèñàííóþ â ýéëåðîâûõ êîîð-
äèíàòàõ:
                                    ∂ρ
                                        + ∇ · (ρ⃗u) = S − D,
                                    ∂t
                              ∂ρi                         ρi  ρi
                                  + ∇ · (ρi ⃗u) = −sij + S − D ,
                              ∂t                          ρ   ρ
                          ∂ρ⃗u
                               + ∇ · (ρ⃗u⃗u) = −∇p − ρ∇(Φ) + ⃗v S − ⃗uD,
                           ∂t
               ∂ρE                                                     S   D
                   + ∇ · (ρE⃗u) = −∇ · (p⃗v ) − (ρ∇(Φ), ⃗u) − Λ + Γ + ε − ε ,
                ∂t                                                     ρ   ρ
                    ∂ρε                                            S   D
                        + ∇ · (ρϵ⃗u) = −(γ − 1)ρϵ∇ · ⃗u − Λ + Γ + ε − ε ,
                     ∂t                                            ρ   ρ
                                               1
                                         ρE = ρ⃗u2 + ρε,
                                               2
                                          p = (γ − 1)ρε,
Äëÿ îïèñàíèÿ áåññòîëêíîâèòåëüíîé êîìïîíåíòû áóäåì èñïîëüçîâàòü ñèñòåìó óðàâíåíèé äëÿ
ïåðâûõ ìîìåíòîâ áåññòîëêíîâèòåëüíîãî óðàâíåíèÿ Áîëüöìàíà, çàïèñàííóþ òàêæå â ýéëå-
ðîâûõ êîîðäèíàòàõ:
                                     ∂n
                                        + ∇ · (n⃗v ) = D − S,
                                     ∂t
                       ∂n⃗v
                            + ∇ · (n⃗v⃗v ) = −∇Π − n∇(Φ) + ⃗uD − ⃗v S,
                        ∂t
                   ∂ρW                                               D   S
                       + ∇ · (ρW⃗v ) = −∇ · (Π⃗v ) − (n∇(Φ), ⃗v ) + ε − ε ,
                    ∂t                                               ρ   ρ


                                               207
Параллельные вычислительные технологии (ПаВТ’2016) || Parallel computational technologies (PCT’2016)

                                         agora.guru.ru/pavt



                          ∂Πξξ                                D    S
                               + ∇ · (Πξξ ⃗v ) = −2Π∇ · ⃗u + ε − ε ,
                           ∂t                                 3ρ   3ρ
                                      1          Πxx + Πyy + Πzz
                               ρW = ρ⃗v 2 +                      ,
                                      2                 2
Óðàâíåíèå Ïóàññîíà äëÿ îáåèõ êîìïîíåíò çàïèñûâàåòñÿ â âèäå:

                                        ∆Φ = 4πG(ρ + n),
ãäå p  äàâëåíèå ãàçà, ρi  ïëîòíîñòü i êîìïîíåíòû ñìåñè ãàçà, sij  ñêîðîñòü ïðîõîæ-
                                    ∑
äåíèÿ õèìè÷åñêèõ ðåàêöèé, ρ =         i ρi  ïëîòíîñòü ñìåñè ãàçà, n  ïëîòíîñòü áåññòîëê-
íîâèòåëüíîé êîìïîíåíòû, ⃗    u  ñêîðîñòü ãàçîâîé êîìïîíåíòû, ⃗v  ñêîðîñòü áåññòîëêíîâè-
òåëüíîé êîìïîíåíòû, ρE  ïëîòíîñòü ïîëíîé ìåõàíè÷åñêîé ýíåðãèè ãàçà, ρW  ïëîòíîñòü
ïîëíîé ìåõàíè÷åñêîé ýíåðãèè áåññòîëêíîâèòåëüíîé êîìïîíåíòû, Φ  ãðàâèòàöèîííûé ïî-
òåíöèàë, ε  ïëîòíîñòü âíóòðåííåé ýíåðãèè ãàçà, γ  ýôôåêòèâíûé ïîêàçàòåëü àäèàáàòû,
Πξξ = (Πxx , Πyy , Πzz )  äèàãîíàëüíûé òåíçîð äèñïåðñèè ñêîðîñòåé áåññòîëêíîâèòåëüíîé
êîìïîíåíòû, S  ñêîðîñòü îáðàçîâàíèÿ ñâåðõíîâûõ çâåçä, D  ñêîðîñòü çâåçäîîáðàçîâàíèÿ,
Λ  ôóíêöèÿ îõëàæäåíèÿ, Γ  ôóíêöèÿ íàãðåâàíèÿ îò âçðûâà ñâåðõíîâûõ çâåçä. Ìû íå
áóäåì ââîäèòü ïîäðîáíîñòè îïèñàíèÿ êàæäîãî òåðìà äëÿ îïèñàíèÿ ïîäñåòî÷íîé ôèçèêè,
òàê ïîäðîáíîñòè èõ ïðèìåíåíèÿ ìîãóò áûòü íàéäåíû â ðàáîòàõ [4, 9, 12].


3.1. Îïèñàíèå ÷èñëåííîãî ìåòîäà


      Äëÿ ÷èñëåííîãî ðåøåíèÿ óðàâíåíèé ãðàâèòàöèîííîé ãàçîâîé äèíàìèêè áûë èñïîëüçî-
âàí îðèãèíàëüíûé ÷èñëåííûé ìåòîä, îñíîâàííûé íà êîìáèíàöèè ìåòîäà Ãîäóíîâà, ìåòîäà
ðàçäåëåíèÿ îïåðàòîðîâ è êóñî÷íî-ïàðàáîëè÷åñêîãî ìåòîäà íà ëîêàëüíîì øàáëîíå äëÿ îáåñ-
ïå÷åíèÿ âûñîêîãî ïîðÿäêà òî÷íîñòè [13, 14]. Ñèñòåìà óðàâíåíèé ðåøàåòñÿ â äâà ýòàïà: ýé-
ëåðîâ, íà êîòîðîì ðåøàþòñÿ óðàâíåíèÿ áåç àäâåêòèâíûõ ÷ëåíîâ, è ëàãðàíæåâ, íà êîòîðîì
ïðîèñõîäèò àäâåêòèâíûé ïåðåíîñ ãèäðîäèíàìè÷åñêèõ âåëè÷èí. Íà ýéëåðîâîì ýòàïå ãèäðî-
äèíàìè÷åñêèå óðàâíåíèÿ äëÿ îáåèõ êîìïîíåíò çàïèñûâàþòñÿ â íåêîíñåðâèòèâíîé ôîðìå è
èñêëþ÷àþòñÿ àäâåêòèâíûå ÷ëåíû.  ðåçóëüòàòå òàêàÿ ñèñòåìà íà èíòåðôåéñå äâóõ ÿ÷ååê
èìååò àíàëèòè÷åñêîå ðåøåíèå, êîòîðîå èñïîëüçóåòñÿ äëÿ çàïèñè ïîòîêîâ ÷åðåç èíòåðôåéñ
äâóõ ÿ÷ååê [15]. Äëÿ ïîâûøåíèÿ ïîðÿäêà òî÷íîñòè èñïîëüçóåòñÿ êóñî÷íî-ïàðàáîëè÷åñêèé
ìåòîä íà ëîêàëüíîì øàáëîíå (PPML), êîòîðûé ñîñòîèò â ïîñòðîåíèè ëîêàëüíûõ ïàðàáîë
âíóòðè ÿ÷ååê äëÿ êàæäîé ãèäðîäèíàìè÷åñêîé âåëè÷èíû. Ãëàâíîå îòëè÷èå PPML îò êëàñ-
ñè÷åñêîãî PPM ìåòîäà ñîñòîèò â èñïîëüçîâàíèè ëîêàëüíîãî øàáëîíà äëÿ âû÷èñëåíèé. Ýòî
ïîçâîëÿåò íà ýòàïå ïàðàëëåëüíîé ðåàëèçàöèè, â îñíîâå êîòîðîé ãåîìåòðè÷åñêàÿ äåêîìïîçè-
öèÿ ðàñ÷åòíîé îáëàñòè, èñïîëüçîâàòü òîëüêî îäèí ñëîé ïåðåêðûòèÿ ïîäîáëàñòåé, ÷òî óïðî-
ùàåò ðåàëèçàöèþ ãðàíè÷íûõ óñëîâèé è óìåíüøàåò êîëè÷åñòâî ïåðåñûëîê, ñëåäîâàòåëüíî
ñïîñîáñòâóåò ðîñòó ýôôåêòèâíîñòè ïàðàëëåëüíîé ðåàëèçàöèè. Íà ëàãðàíæåâîì ýòàïå èñ-
ïîëüçóåòñÿ àíàëîãè÷íûé ÷èñëåííûé ïîäõîä. Íà äàííûé ìîìåíò ðåøåíèå óðàâíåíèÿ Ïóàñ-
ñîíà îñíîâàíî íà Fast Fourier Transform ìåòîäå. Ýòî ñâÿçàíî ñ òåì, ÷òî ðåøåíèå óðàâíåíèÿ
Ïóàññîíà çàíèìàåò íåñêîëüêî ïðîöåíòîâ îò âðåìåíè ñ÷åòà, íî â äàëüíåéøåì ìû ïëàíè-
ðóåì ïåðåéòè ê èòåðàöèîííûì ìåòîäàì ðåøåíèÿ òàêèì êàê SOR è CGM. Ïîñëå ðåøåíèÿ
óðàâíåíèÿ Ïóàññîíà è ãèäðîäèíàìè÷åñêèõ óðàâíåíèé ïðîèñõîäèò êîððåêòèðîâêà ðåøåíèÿ
overdenition ñèñòåìû óðàâíåíèé, äëÿ ýòîãî èñïîëüçóåòñÿ îðèãèíàëüíàÿ ïðîöåäóðà äëÿ ñî-
õðàíåíèÿ ïîëíîé ýíåðãèè ñèñòåìû è ãàðàíòèè íåóáûâàíèÿ ýíòðîïèè [16, 17]. Â ðåçóëüòà-
òå ðàçðàáîòàííûé ÷èñëåííûé ìåòîä ðåøåíèÿ îáëàäàåò ñëåäóþùèìè ñâîéñòâàìè: âûñîêèé
ïîðÿäîê òî÷íîñòè íà ãëàäêèõ ðåøåíèÿõ è ìàëàÿ äèññèïàöèÿ â ñëó÷àå ðàçðûâíûõ ðåøå-
íèé; îòñóòñòâèå íåîáõîäèìîñòè ââåäåíèÿ ÷ëåíà èñêóññòâåííîé âÿçêîñòè èëè îãðàíè÷èòå-
ëåé; èíâàðèàíòíîñòü ïîëó÷àåìîãî ÷èñëåííîãî ðåøåíèÿ îòíîñèòåëüíî ïîâîðîòà è îòñóòñòâèå
êàðáóíêóë-ýôôåêòîâ; ãàðàíòèðîâàííîå íåóáûâàíèå ýíòðîïèè; âîçìîæíîñòü ðàñøèðåíèÿ íà
áîëåå ñëîæíûå ãèäðîäèíàìè÷åñêèå ìîäåëè; ïðîñòîòà ïðîãðàììíîé ðåàëèçàöèè; ïîòåíöèàëü-
íî áåñêîíå÷íàÿ ìàñøòàáèðóåìîñòü. Ïîñëåäíèé ïóíêò íàì íàèáîëåå âàæåí è îñíîâàí íà òîì



                                               208
Параллельные вычислительные технологии (ПаВТ’2016) || Parallel computational technologies (PCT’2016)

                                         agora.guru.ru/pavt



ôàêòå, ÷òî âñå âû÷èñëåíèÿ â ÿ÷åéêàõ ïðîèñõîäÿò íåçàâèñèìî, ðåãóëÿðíî è íà ëîêàëüíîì
øàáëîíå. ×èñëåííûé ìåòîä áûë ïðîòåñòèðîâàí íà ñëåäóþùèõ çàäà÷àõ:

  1. îäíîìåðíûå òåñòû Ãîäóíîâà î ðàñïàäå ðàçðûâà,

  2. îäíîìåðíûé òåñò Àêñåíîâà ñ íåïðåðûâíûì ïåðèîäè÷åñêèì ðåøåíèåì,

  3. çàäà÷à Ñåäîâà î òî÷å÷íîì âçðûâå,

  4. äâóìåðíàÿ íåóñòîé÷èâîñòü Ðåëåÿ-Òåéëîðà,

  5. äâóìåðíàÿ íåóñòîé÷èâîñòü Êåëüâèíà-Ãåëüìãîëüöà,

  6. çàäà÷à êîëëàïñà Ýâðàðäà.

Ïîäðîáíîå îïèñàíèå ÷èñëåííîãî ìåòîäà è åãî âåðèôèêàöèÿ ïðèâåäåíà â ðàáîòå [18]. Òàêæå
ðàçðàáîòàíî ðàñøèðåíèå ÷èñëåííîãî ìåòîäà íà ðåøåíèå ÌÃÄ óðàâíåíèé [19].


3.2. Äåêîìïîçèöèÿ ðàñ÷åòíîé îáëàñòè


   Ñî-äèçàéí [8] ôèçèêî-ìàòåìàòè÷åñêîé ìîäåëè, ÷èñëåííîãî ìåòîäà è ñòðóêòóð äàííûõ
ïîçâîëÿåò èñïîëüçîâàòü ãåîìåòðè÷åñêóþ äåêîìïîçèöèþ ðàñ÷åòíîé îáëàñòè ñ îäíèì ñëîåì
ïåðåêðûòèÿ ïîäîáëàñòåé. Òàêóþ âîçìîæíîñòü ìû èìååì çà ñ÷åò ïîñòðîåíèÿ ïàðàáîë íà
ïðåäûäóùåì øàãå, ÷òî òðåáóåò òîëüêî ëîêàëüíîãî âçàèìîäåéñòâèÿ ìåæäó ÿ÷åéêàìè. Íà
ðèñóíêå (1) ïðèâåäåíû ïðîöåíòíûå ñîîòíîøåíèÿ ìåæäó ýòàïàìè Äëÿ ðåøåíèÿ óðàâíåíèÿ




                       The Lagrangian Stage

                                     80%




                                                               Poisson Solver




                                                                   6%
                                                              4%
                                                   10%
                                                              Other
                                  The Eulerian Stage




                Ðèñ. 1. Ïðîöåíòíîå ñîîòíîøåíèå ìåæäó ýòàïàìè â êîäå AstroPhi
Ïóàññîíà, â îñíîâå êîòîðîãî áûñòðîå ïðåîáðàçîâàíèå Ôóðüå äëÿ ñóïåðÝÂÌ ñ ðàñïðåäå-
ëåííîé ïàìÿòüþ áûëà èñïîëüçîâàíà áèáëèîòåêà FFTW [20]. Â îñíîâå ýòîé áèáëèîòåêè ëå-
æèò ïðîöåäóðà ALLTOALL, êîòîðàÿ òðàíñïîíèðóåò òðåõìåðíûé ìàññèâ, ïåðåðàñïðåäåëÿÿ
çíà÷èòåëüíûå îáúåìû ïàìÿòè ìåæäó âñåìè ïðîöåññàìè. Áåçóñëîâíî, ýòî äîðîãàÿ ñåòåâàÿ
îïåðàöèÿ, êîòîðàÿ òðåáóåò îòêàçà îò âñåãî àëãîðèòìà â ñëó÷àå èñïîëüçîâàíèè ñêîëü ëèáî
çíà÷èòåëüíîãî êîëè÷åñòâà âû÷èñëèòåëåé. Îäíàêî, ýòà ïðîöåäóðà â ñëó÷àå èñïîëüçîâàíèÿ
ñåòåâîé èíôðàñòðóêòóðû InniBand íå çàíèìàåò êðèòè÷åñêîå âðåìÿ è, ïî âñåé âèäèìîñòè,
îïòèìèçèðîâàíà íà íèçêîì ñåòåâîì óðîâíå [21].
   Îñíîâíûìè ýòàïàìè âû÷èñëèòåëüíîé ñõåìû ÿâëÿþòñÿ ýéëåðîâ è ëàãðàíæåâ ýòàïû. Ìû
ñîñðåäîòî÷èìñÿ èìåííî íà ýòèõ ýòàïàõ, êàê íà íàèáîëåå çàòðàòíûõ. Òàêæå âíå íàøåãî ðàñ-
ñìîòðåíèÿ â ïëàíå óñêîðåíèÿ îñòàíóòñÿ ïðîöåäóðû, â êîòîðûõ äåëåíèå èìïóëüñà íà ôóíê-
öèþ ïëîòíîñòè è ïåðåçàïèñü ìàññèâîâ.  ýòèõ ïðîöåäóðàõ ôàêòè÷åñêè ïðîèñõîäèò êîïèðî-
âàíèå ïàìÿòè èç îäíîé îáëàñòè â äðóãóþ, â äàëüíåéøåì ìû òàêæå ðàññìîòðèì ýòè îïåðàöèè
îòäåëüíî ñ òî÷êè çðåíèÿ îáîáùåííîé ôóíêöèè MEMCPY.



                                               209
Параллельные вычислительные технологии (ПаВТ’2016) || Parallel computational technologies (PCT’2016)

                                         agora.guru.ru/pavt



   Îòäåëüíî îñòàíîâèìñÿ íà ïðîöåäóðå âû÷èñëåíèÿ øàãà ïî âðåìåíè, èñõîäÿ èç óñëîâèÿ
Êóðàíòà.  ñëó÷àå èñïîëüçîâàíèÿ ãðàôè÷åñêèõ óñêîðèòåëåé äàííàÿ ïðîöåäóðà áûëà ðåà-
ëèçîâàíà òîëüêî íà CPU [6] (òàêæå áûëî ñäåëàíî è â êîäå GAMER [22]). Ïðè÷èíà ýòîãî 
îòñóòñòâèå ýôôåêòèâíîé ðåàëèçàöèè ðåäóöèðóþùåé îïåðàöèåé min â òåõíîëîãèè CUDA. Â
òî âðåìÿ êàê â OpenMP òàêàÿ îïåðàöèÿ ýôôåêòèâíî ðåàëèçîâàíà. Ñòîèìîñòü ýòîé ïðîöå-
äóðû ñîñòàâëÿåò ïîðÿäêà îäíîãî ïðîöåíòà îò îáùåãî âðåìåíè âû÷èñëåíèé è ïðàêòè÷åñêè
íå âëèÿåò íà ýôôåêòèâíîñòü ïàðàëëåëüíîé ðåàëèçàöèè. Îäíàêî, ïðè óâåëè÷åíèè êîëè÷å-
ñòâà ãðàôè÷åñêèõ ÿäåð äî íåñêîëüêèõ òûñÿ÷ è ñòîêðàòíîãî óñêîðåíèÿ â ðàìêàõ îäíîãî
ãðàôè÷åñêîãî ïðîöåññîðà ñóììàðíî âñåõ îñòàëüíûõ ïðîöåäóð, ìîæåò âîçíèêíóòü êóðüåç-
íàÿ ñèòóàöèÿ, êîãäà ïðîöåäóðà âû÷èñëåíèÿ øàãà ïî âðåìåíè áóäåò âûïîëíÿòüñÿ äîëüøå
âñåõ îñòàëüíûõ. Ïðè òîì, ÷òî àâòîðàìè óæå áûëî äîñòèãíóòî 55-êðàòíîå óñêîðåíèå â ðàì-
êàõ îäíîãî GPU [6] è êîëè÷åñòâî ãðàôè÷åñêèõ ÿäåð â îäíîì óñêîðèòåëå óâåëè÷èâàåòñÿ, òî
òàêàÿ ñèòóàöèÿ ìîæåò áûòü äîñòèãíóòà â áëèæàéøèå ïàðó ëåò. Ñòîèò îòìåòèòü, ÷òî òàêàÿ
ïðîáëåìà â ïðèíöèïå íåâîçìîæíà íà óñêîðèòåëÿõ Intel Xeon Phi.
   Èñïîëüçîâàíèå ðàâíîìåðíîé ñåòêè â äåêàðòîâûõ êîîðäèíàòàõ äëÿ ðåøåíèÿ óðàâíåíèé
ãèäðîäèíàìèêè ïîçâîëÿåò èñïîëüçîâàòü ïðîèçâîëüíóþ äåêàðòîâó òîïîëîãèþ äëÿ äåêîìïî-
çèöèè ðàñ÷åòíîé îáëàñòè. Òàêàÿ îðãàíèçàöèÿ âû÷èñëåíèé èìååò ïîòåíöèàëüíî áåñêîíå÷íóþ
ìàñøòàáèðóåìîñòü. Â êîäå AstroPhi èñïîëüçóåòñÿ ìíîãîóðîâíåâàÿ îäíîìåðíàÿ äåêîìïîçè-
öèÿ ðàñ÷åòíîé îáëàñòè. Ïî îäíîé êîîðäèíàòå âíåøíåå îäíîìåðíîå ðàçðåçàíèå ïðîèñõîäèò
ñðåäñòâàìè òåõíîëîãèè MPI, âíóòðè êàæäîé ïîäîáëàñòè ðàçðåçàíèå ïðîèñõîäèò ñðåäñòâàìè
OpenMP, àäàïòèðîâàííîãî äëÿ MIC-àðõèòåêòóð (ðèñ. 2).




                  Ðèñ. 2. Ñõåìà ãåîìåòðè÷åñêîé äåêîìïîçèöèè â êîäå AstroPhi
   Òàêîé ïîäõîä èñïîëüçîâàëñÿ òàêæå è â ïåðâîé âåðñèè ïðîãðàììíîãî êîäà AstroPhi [7]
c ó÷åòîì èñïîëüçîâàíèÿ ooad ðåæèìà. Òàêàÿ äåêîìïîçèöèÿ ñâÿçàíà ñ òîïîëîãèåé è àðõè-
òåêòóðîé ãèáðèäíîãî ñóïåðÝÂÌ RSC PetaStream, êîòîðûé áûë èñïîëüçîâàí äëÿ âû÷èñëè-
òåëüíûõ ýêñïåðèìåíòîâ.




                                               210
Параллельные вычислительные технологии (ПаВТ’2016) || Parallel computational technologies (PCT’2016)

                                         agora.guru.ru/pavt



3.3. Øàáëîíû ïðîãðàììèðîâàíèÿ äëÿ Intel Xeon Phi


   Äëÿ èñïîëüçîâàíèÿ Intel Xeon Phi èñïîëüçîâàí ðåãóëÿðíûé øàáëîí âû÷èñëåíèé, êîòî-
ðûé ñëåäóåò èç ñõåìû äåêîìïîçèöèè ðàñ÷åòíîé îáëàñòè è ñîñòîèò â ðàñïðåäåëåíèè ðàáîò
ïî íèòÿì (ñì. ðèñ. 3). Â ëèñòèíãå ïðèâåäåíà çàãîòîâêà äëÿ èñïîëüçîâàíèÿ ooad ðåæèìà


...
// Offload / Native mode
#define NATIVE /* OFFLOAD */
// Number of MIC - threads
#define MIC_NUM_THREADS 240
...
#ifdef OFFLOAD
#pragma offload_attribute ( push , target ( mic ))
#endif
double foo ( double *a , double x , int index )
{
  return a[ index ] * x ;
}
#ifdef OFFLOAD
#pragma offload_attribute ( pop )
#endif
...
#ifdef OFFLOAD
#pragma offload target ( mic ) in (a: length (N )) \
           out (c: length (N ))
#endif
{
  # pragma omp parallel for default ( none ) shared (a ,x ,c) \
             num_threads ( MIC_NUM_THREADS )
  for (i =0; i