Параллельные вычислительные технологии (ПаВТ’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