Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org Îïòèìèçàöèÿ òåñòà HPCG äëÿ ñóïåðêîìïüþòåðîâ ñ ñåòüþ ¾Àíãàðà¿ À.À. Àãàðêîâ, À.Ñ. Ñåìåíîâ, À.Ñ. Ñèìîíîâ ÎÀÎ ¾ÍÈÖÝÂÒ¿ Äàííàÿ ðàáîòà ïîñâÿùåíà îïòèìèçèðîâàííîé ðåàëèçàöèè òåñòà HPCG äëÿ ñóïåð- êîìïüþòåðîâ ñ ñåòüþ ¾Àíãàðà¿, ðàçðàáîòàííîé â ÎÀÎ ¾ÍÈÖÝÂÒ¿. Òåñò HPCG çàêëþ÷àåòñÿ â ðåøåíèè ñèñòåìû ëèíåéíûõ óðàâíåíèé ñ ðàçðåæåííîé ìàòðèöåé ìåòîäîì ñîïðÿæåííûõ ãðàäèåíòîâ ñ ïðåäîáóñëàâëèâàòåëåì. Ïðåäëàãàåìàÿ ðåà- ëèçàöèÿ âêëþ÷àåò îïòèìèçàöèè óðîâíÿ âû÷èñëèòåëüíîãî óçëà, â òîì ÷èñëå èç- ìåíåíèå îðìàòà õðàíåíèÿ ðàçðåæåííîé ìàòðèöû, OpenMP-ðàñïàðàëëåëèâàíèå è âåêòîðèçàöèþ, à òàêæå îïòèìèçàöèþ ìåæïðîöåññíûõ îáìåíîâ äëÿ ñåòè ¾Àí- ãàðà¿ ïðè ïîìîùè èñïîëüçîâàíèÿ áèáëèîòåêè SHMEM âìåñòî áèáëèîòåêè MPI.  ðàáîòå ïðåäñòàâëåíû ïåðâûå ðåçóëüòàòû íà ìàêåòíîì 36-óçëîâîì êëàñòåðå ñ ñåòüþ ¾Àíãàðà¿, êîòîðûå ïðåâîñõîäÿò ðåçóëüòàòû áàçîâîé âåðñèè òåñòà HPCG 2.4. Êëþ÷åâûå ñëîâà: êîììóíèêàöèîííàÿ ñåòü ¾Àíãàðà¿, áèáëèîòåêà SHMEM, HPCG Ââåäåíèå HPCG [1℄  íîâûé òåñò, ïðåäíàçíà÷åííûé äëÿ äîïîëíåíèÿ òåñòà LINPACK (HPL) [2℄, êîòîðûé â íàñòîÿùåå âðåìÿ èñïîëüçóåòñÿ äëÿ ðàíæèðîâàíèÿ ñóïåðêîìïüþòåðîâ â ñïèñêå TOP500.  îñíîâå HPCG ëåæèò ðåøåíèå ëèíåéíûõ óðàâíåíèé ðàçðåæåííîé ìàòðèöåé áîëüøîé ðàçìåðíîñòè ïðè ïîìîùè èòåðàöèîííîãî ìåòîäà ñîïðÿæåííûõ ãðàäèåíòîâ ñ ìíî- ãîñåòî÷íûì ïðåäîáóñëàâëèâàòåëåì.  îòëè÷èå îò HPL òåñò HPCG îáåñïå÷èâàåò ñòðåññîâóþ íàãðóçêó ïîäñèñòåìû ïàìÿòè âû÷èñëèòåëüíûõ óçëîâ è êîììóíèêàöèîííîé ñåòè, ïðåäñòàâ- ëÿÿ çíà÷èòåëüíûé êëàññ ñîâðåìåííûõ ñóïåðêîìïüþòåðíûõ ïðèëîæåíèé. Òåñò HPCG ñòàë ïðåäìåòîì ïðèñòàëüíîãî âíèìàíèÿ èññëåäîâàòåëåé âñåãî ìèðà, ïî- ÿâèëèñü ðàáîòû ïî åãî îïòèìèçàöèè äëÿ ñóïåðêîìïüþòåðîâ Tianhe-2 [3, 4℄, K- omputer [5℄, èññëåäóþòñÿ âîçìîæíîñòè óñêîðèòåëåé NVIDIA GPU [6℄ è Intel Xeon Phi [3℄, âûøëà ðàáîòà ïî ïðåäñêàçàíèþ ïðîèçâîäèòåëüíîñòè HPCG [7℄. îññèéñêèå èññëåäîâàòåëè òàêæå óäåëÿþò âíèìàíèå ýòîìó òåñòó [8, 9℄.  ÎÀÎ ¾ÍÈÖÝÂÒ¿ ðàçðàáàòûâàåòñÿ âûñîêîñêîðîñòíàÿ êîììóíèêàöèîííàÿ ñåòü ¾Àí- ãàðà¿ ñ òîïîëîãèåé ¾ìíîãîìåðíûé òîð¿ [1014℄.  2013 ãîäó âûïóùåí êðèñòàëë ìàðøðó- òèçàòîðà ñåòè [15℄, â 2014 ãîäó ïðåäñòàâëåíû ïðåäâàðèòåëüíûå ðåçóëüòàòû îöåíî÷íîãî òå- ñòèðîâàíèÿ 12-óçëîâîãî êëàñòåðà ñ ýòîé ñåòüþ [16℄.  íàñòîÿùèé ìîìåíò âåäeòñÿ îöåíî÷íîå òåñòèðîâàíèå 36-óçëîâîãî êëàñòåðà ñ ñåòüþ ¾Àíãàðà¿. Ïåðå÷èñëåííûå ðàáîòû ïî îïòèìèçàöèè HPCG íå ïðåäîñòàâëÿþò èñõîäíûõ êîäîâ, â ñâÿçè ýòèì è äëÿ áîëåå ãëóáîêîãî ïîíèìàíèÿ ýòîãî òåñòà áûëî ïðèíÿòî ðåøåíèå ðàçðà- áîòàòü ñîáñòâåííóþ ðåàëèçàöèþ, ïðèçâàííóþ, â ÷àñòíîñòè, äåìîíñòðèðîâàòü âîçìîæíîñòè ñåòè ¾Àíãàðà¿. Äàííàÿ ðàáîòà ïðåäñòàâëÿåò ïåðâûå ðåçóëüòàòû îïòèìèçàöèè HPCG. 1. Îïèñàíèå òåñòà HPCG  òåñòå HPCG ðåøàåòñÿ ñèñòåìà ëèíåéíûõ óðàâíåíèé Ax = b ñ ðàçðåæåííîé ìàòðèöåé A è äàííûì íà÷àëüíûì ïðèáëèæåíèåì x0 . Ìàòðèöà ñèñòåìû ïðåäñòàâëÿåò ñîáîé äèñêðå- 294 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org òèçàöèþ óðàâíåíèÿ â ÷àñòíûõ ïðîèçâîäíûõ ýëëèïòè÷åñêîãî òèïà ñ 27-òî÷å÷íûì øàáëî- íîì íà ðåãóëÿðíîé òðåõìåðíîé ñåòêå. Ñòðîêè â ðàçðåæåííîé ìàòðèöå ïðåäñòàâëÿþò òî÷êè â ñåòêå. Ìàòðèöà èìååò äîñòàòî÷íî ïðîñòóþ ñòðóêòóðó, ÷òî óäîáíî äëÿ èíèöèàëèçàöèè çàäà÷è è ïðîâåðêè ïðàâèëüíîñòè îïòèìèçèðîâàííûõ ðåøåíèé, îäíàêî îïòèìèçèðîâàííûå ïîëüçîâàòåëüñêèå ðåàëèçàöèè íå äîëæíû îïèðàòüñÿ íà ñòðóêòóðó ìàòðèöû äëÿ óñêîðåíèÿ âû÷èñëåíèé, ïîýòîìó ñëåäóåò ïîëàãàòü, ÷òî èìååòñÿ ðàçðåæåííàÿ ìàòðèöà îáùåãî âèäà.  ÷àñòíîñòè, íåëüçÿ îòêàçûâàòüñÿ îò êîñâåííîé àäðåñàöèè ïðè äîñòóïå ê ñòðóêòóðàì äàííûõ, â êîòîðûõ õðàíèòñÿ ìàòðèöà.  HPCG êàæäûé MPI-ïðîöåññ îòâå÷àåò çà ïîäìíîæåñòâî ñòðîê ìàòðèöû A è ýëåìåí- òîâ âåêòîðà b, ñîîòâåòñòâóþùåå ðàçìåðó ïîäîáëàñòè Nx ∗ Ny ∗ Nz , êîòîðûé çàäàåòñÿ ïîëü- çîâàòåëåì â êîíèãóðàöèîííîì àéëå. Ïðîöåññû âûñòðàèâàþòñÿ â òðåõìåðíóþ ðåøåòêó P = Px ∗Py ∗Pz , ãäå P  îáùåå ÷èñëî ïðîöåññîâ. Èòîãîâûé ðàçìåð çàäà÷è ðàâåí Gx ∗Gy ∗Gz , ãäå Gx = Px ∗ Nx , Gy = Py ∗ Ny , Gz = Pz ∗ Nz .  òåñòå HPCG ðåøàåòñÿ ñèñòåìà óðàâíåíèé ïðè ïîìîùè âûïîëíåíèÿ â áàçîâîé ðåà- ëèçàöèè (âåðñèÿ 2.4) 50 èòåðàöèé ìåòîäà ñîïðÿæåííûõ ãðàäèåíòîâ CG.  íà÷àëå êàæäîé èòåðàöèè ìåòîäà CG âûïîëíÿåòñÿ ïðåäîáóñëàâëèâàíèå ñèñòåìû ïîìîùüþ èòåðàòèâíîãî ìíîãîñåòî÷íîãî ìåòîäà (âûïîëíÿåòñÿ 3 èòåðàöèè) ñ èñïîëüçîâàíèåì ñèììåòðè÷íîãî ñãëà- æèâàòåëÿ àóññà-Çåéäåëÿ.  ñîîòâåòñòâèè ñî ñïåöèèêàöèåé ïîëüçîâàòåëü ìîæåò îïòèìèçèðîâàòü ñëåäóþùèå óíêöèè: 1. åàëèçàöèþ ìåòîäà ñèììåòðè÷íîãî àóññà-Çåéäåëÿ (ComputeSYMGS) è êîä ìíîãîñå- òî÷íîãî ïðåäîáóñëàëèâàòåëÿ. 2. Âû÷èñëåíèå ïðîèçâåäåíèÿ ðàçðåæåííîé ìàòðèöû íà âåêòîð (ComputeSPMV). 3. Âû÷èñëåíèå ñêàëÿðíîãî ïðîèçâåäåíèÿ âåêòîðîâ (ComputeDOT). 4. Âû÷èñëåíèå ñóììû âåêòîðîâ âèäà: a ∗ X + b ∗ Y (ComputeWAXPBY). Ïîëüçîâàòåëüñêîå ðåøåíèå ìîæåò òàêæå èçìåíÿòü îðìàò õðàíåíèÿ ìàòðèöû è ïðîèç- âîäèòü ïåðåñòàíîâêè ñòðîê. Îäíàêî ïî òðåáîâàíèþ ñïåöèèêàöèè îïòèìèçèðîâàííàÿ ïîëü- çîâàòåëüêàÿ ðåàëèçàöèÿ äîëæíà äîñòè÷ü òîé òî÷íîñòè ðåøåíèÿ ñèñòåìû, ÷òî è áàçîâàÿ âåðñèÿ HPCG. Îïòèìèçàöèè ìîãóò ïðèâîäèòü ê óìåíüøåíèþ ñêîðîñòè ñõîäèìîñòè çàäà÷è, â ýòîì ñëó÷àå ïðè òåñòèðîâàíèè ðåàëèçàöèè âûïîëíÿåòñÿ íåîáõîäèìîå ÷èñëî èòåðàöèé, êî- òîðîå áîëüøå áàçîâûõ 50 èòåðàöèé. Âðåìÿ, òðåáóþùååñÿ íà äîïîëíèòåëüíûå èòåðàöèè, à òàêæå âðåìÿ ïðåîáðàçîâàíèÿ ñòðóêòóð äàííûõ, íåîáõîäèìûõ äëÿ îïòèìèçàöèè, âõîäèò âî âðåìÿ ðåøåíèÿ çàäà÷è è ó÷èòûâàåòñÿ ïðè ïîäñ÷åòå ïðîèçâîäèòåëüíîñòè. 2. Îïòèìèçàöèè Âûïîëíåííûå â ðàáîòå îïòèìèçàöèè òåñòà HPCG ðàçäåëÿþòñÿ íà äâå êàòåãîðèè: îä- íîóçëîâûå îïòèìèçàöèè è îïòèìèçàöèè ìåæóçëîâûõ êîììóíèêàöèé. Îäíîóçëîâûå îïòèìè- çàöèè âêëþ÷àþò îðãàíèçàöèþ áîëåå ýåêòèâíîé ðàáîòû ñ îïåðàòèâíîé ïàìÿòüþ âíóòðè âû÷èñëèòåëüíîãî óçëà, âåêòîðèçàöèþ è ðàñïàðàëëåëèâàíèå óíêöèé ñ ïîìîùüþ òåõíîëî- ãèè OpenMP. Òàêèå îïòèìèçàöèè îáùåèçâåñòíû, îíè ðàññìàòðèâàëèñü â ðàáîòàõ [35℄. Íà- ïðÿìóþ ýòè îïòèìèçàöèè íå êàñàþòñÿ ñåòè ¾Àíãàðà¿, íî îíè íåîáõîäèìû äëÿ ïîëó÷åíèÿ âûñîêîé ïðîèçâîäèòåëüíîñòè, èõ îïèñàíèå íàõîäèòñÿ â ðàçäåëàõ 2.12.3.  ðàçäåëå 2.4 ðàñ- ñìîòðåíû ñïåöèè÷åñêèå äëÿ ñåòè ¾Àíãàðà¿ ìåæóçëîâûå êîììóíèêàöèè. 295 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org åçóëüòàòû ïðîèçâîäèòåëüíîñòè äëÿ âàðèàíòîâ îäíîóçëîâîé îïòèìèçàöèè ïîëó÷åíû íà óçëå ñ äâóìÿ øåñòèÿäåðíûìè ïðîöåññîðàìè ñ âêëþ÷åííûì ðåæèìîì Hyper-Threading. Ïà- ðàìåòðû óçëà (òèï À) ïðåäñòàâëåíû âî âòîðîì ñòîëáöå òàáëèöû 1. Òàáëèöà 1. Ïàðàìåòðû âû÷èñëèòåëüíûõ óçëîâ Ïàðàìåòð Óçåë òèïà A Óçåë òèïà B Ïðîöåññîð 2xIntel Xeon E5-2630 Intel Xeon E5-2660 Òàêòîâàÿ ÷àñòîòà ïðîöåññîðà, ö 2.3 2.2 Êîëè÷åñòâî ÿäåð â óçëå 12 8 àçìåð êýøà L3, ÌÁ 15 20 Ïèêîâàÿ ïðîèçâîäèòåëüíîñòü óçëà, ëîïñ 220.8 140.8 Òàáëèöà 2. Ïàðàìåòðû âû÷èñëèòåëüíîãî êëàñòåðà ñ ñåòüþ ¾Àíãàðà¿ Ïàðàìåòð Çíà÷åíèå Êîëè÷åñòâî óçëîâ òèïà À 24 Êîëè÷åñòâî óçëîâ òèïà B 12 Îáùàÿ ïèêîâàÿ ïðîèçâîäèòåëüíîñòü, ëîïñ 6988.8 Èíòåðåéñ ïðîöåññîðà ñ ñåòüþ ¾Àíãàðà¿ PCIe gen2 x16 Òàêòîâàÿ ÷àñòîòà ñåòåâîãî àäàïòåðà, Ì ö 500 Çàäåðæêà ïåðåäà÷è 16-áàéòîâîãî ñîîáùåíèÿ 0.7/1 ìåæäó äâóìÿ óçëàìè, SHMEM/MPI, ìêñ 2.1. Âûäåëåíèå íåïðåðûâíîãî áëîêà ïàìÿòè  èñõîäíîì âàðèàíòå HPCG ïàìÿòü äëÿ ìàññèâîâ ýëåìåíòîâ è èíäåêñîâ ðàçðåæåííîé ìàòðèöû âûäåëÿåòñÿ áëîêàìè, êàæäûé áëîê èìååò ðàçìåð, ðàâíûé ìàêñèìàëüíîìó êîëè÷å- ñòâó íåíóëåâûõ ýëåìåíòîâ â ñòðîêå. Áëî÷íîå âûäåëåíèå ïàìÿòè ïðåïÿòñòâóåò ýåêòèâíî- ìó èñïîëüçîâàíèþ âñåé ïîäñèñòåìû ïàìÿòè, â ÷àñòíîñòè êýøåé äàííûõ, êýøà äåñêðèïòîðîâ ñòðàíèö (TLB). Ïåðâîå, ÷òî áûëî ïðåäïðèíÿòî  ýòî íåïðåðûâíîå âûäåëåíèå ïàìÿòè äëÿ ýòèõ ìàññèâîâ. åçóëüòàòû ïðîèçâîäèòåëüíîñòè äëÿ ëîêàëüíîé îáëàñòè 16x16x128 ïðèâåäå- íû íà ðèñ. 2. Âûäåëåíèå íåïðåðûâíîãî áëîêà ïàìÿòè ïîçâîëèëî ïîëó÷èòü ïðèðîñò ïðîèç- âîäèòåëüíîñòè â ñðåäíåì â ïîëòîðà ðàçà ïî ñðàâíåíèþ ñ áàçîâîé ðåàëèçàöèåé. 296 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org 2.2. àñêðàñêà ìàòðèöû Ôóíêöèÿ ComputeSYMGS, ðåàëèçóþùàÿ ñèììåòðè÷íûé ìåòîä àóññà-Çåéäåëÿ (SYMGS), çàíèìàåò íàèáîëüøåå âðåìÿ ñðåäè âñåõ îñòàëüíûõ óíêöèé, ïîýòîìó ÿâëÿåòñÿ îäíîé èç îñíîâíûõ, íî è íàèáîëåå ñëîæíûõ çàäà÷ äëÿ îïòèìèçàöèè.  òåñòå HPCG äëÿ ïîñòðîåíèÿ èñõîäíîé ìàòðèöû èñïîëüçóåòñÿ 27-òî÷å÷íûé øàáëîí â òðåõìåðíîì ïðîñòðàíñòâå (ñì. ðèñ. 1), êàæäàÿ òî÷êà çàäàííîé îáëàñòè ñîîòâåòñòâóåò êàêîé-òî ñòðîêå ìàòðèöû è ýëåìåíòó âåêòîðà. Ïðèìåíåíèå SYMGS íà êàæäîì óðîâíå ñåò- êè âêëþ÷àåò â ñåáÿ îáìåí ãðàíè÷íûìè çíà÷åíèÿìè ìåæäó ñîñåäíèìè âû÷èñëèòåëüíûìè óçëàìè, çà êîòîðûì ñëåäóåò ïðÿìîé è îáðàòíûé õîä SYMGS. Íà âûõîäå óíêöèÿ SYMGS âîçâðàùàåò îáíîâëåííûé âåêòîð çíà÷åíèé x. Îñíîâíàÿ ñëîæíîñòü çàêëþ÷àåòñÿ â òîì, ÷òî äëÿ ïîëó÷åíèÿ çíà÷åíèÿ xi èñïîëüçóþòñÿ íîâûå çíà÷åíèÿ x1 ...xi−1 â ïðÿìîì è xi+1 ...xn â îáðàòíîì õîäå, ÷òî äåëàåò íåâîçìîæíûì ïàðàëëåëüíîå âûïîëíåíèå âñåõ òàêèõ îïåðàöèé. Äëÿ ðàñïàðàëëåëèâàíèÿ SYMGS, â ÷àñòíîñòè ïðè îïòèìèçàöèè òåñòà HPCG [35℄, ïðè- ìåíÿåòñÿ ðàñêðàøèâàíèå òî÷åê îáëàñòè. Ïåðâûé âàðèàíò îïòèìèçàöèè ñîñòîÿë â ðàñêðàñêå îáëàñòè â 8 öâåòîâ (ñì. ðèñ. 1), ïðè òàêîé ðàñêðàñêå ýëåìåíòû âåêòîðà, ñîîòâåòñòâóþùèå îäíîìó öâåòó, ìîãóò âû÷èñëÿòüñÿ ïàðàëëåëüíî. Ýòî ñäåëàëî âîçìîæíûì ïàðàëëåëüíîå âû- ÷èñëåíèå ýëåìåíòîâ ñíà÷àëà âî âðåìÿ ïðÿìîãî, çàòåì âî âðåìÿ îáðàòíîãî õîäà SYMGS, íî óõóäøèëî ñõîäèìîñòü ìåòîäà. Íà 12-òè ïîòîêàõ OpenMP óñêîðåíèå îòíîñèòåëüíî ïðåäûäó- ùåãî âàðèàíòà ñ íåïðåðûâíîé ïàìÿòüþ ñîñòàâèëî áîëåå 3-õ ðàç, ñì. ðèñ. 2. Âî âòîðîì âàðèàíòå ðàñêðàñêà ïðîèçâîäèëàñü âñåãî â 2 öâåòà (ñì. ðèñ. 3) âäîëü îñè Z . Òî÷êè, ñîîòâåòñòâóþùèå ïëîñêîñòÿì XY îäíîãî öâåòà, ìîãóò ðàññ÷èòûâàâàòüñÿ ïàðàë- ëåëüíî äðóã äðóãó, â ñðàâíåíèè ñ ïðåäûäóùèì âàðèàíòîì ðàñêðàñêè ýòî íåìíîãî óëó÷øàåò ñõîäèìîñòü, ÷òî âëèÿåò íà ïðîèçâîäèòåëüíîñòü, ñì. ðèñ. 2. Åñëè ðàñêðàøèâàòü íå ïî îäíîé, à ïî äâå ïëîñêîñòè XY (ñì. ðèñ. 4), òî ñõîäèìîñòü óëó÷øàåòñÿ åùå áîëüøå, è íà ðèñ. 2 âèä- íî, ÷òî ýòîò âàðèàíò ïîêàçûâàåò íàèëó÷øèå ðåçóëüòàòû èç âñåõ ïðåäëîæåííûõ âàðèàíòîâ ðàñêðàñêè. Ïðîèçâîäèòåëüíîñòü ýòîãî âàðèàíòà â 4.8 ðàçà ïðåâûøàåò ïðîèçâîäèòåëüíîñòü âàðèàíò ñ íåïðåðûâíîé ïàìÿòüþ íà 12-òè ïîòîêàõ OpenMP. Òàêîé âàðèàíò íå óïîìèíàåòñÿ íè â îäíîé èç äðóãèõ ðàáîò [35℄. Îáúÿñíåíèåì âûñîêîé ïðîèçâîäèòåëüíîñòè ìîæåò áûòü òî, ÷òî ïðè ðàñêðàøèâàíèè ïî ïëîñêîñòÿì ïðîèñõîäèò áîëüøå ïåðåèñïîëüçîâàíèÿ äàííûõ â êýøå ïðè îáðàùåíèè ê ïàìÿòè, ïîòîìó ÷òî ïîòîêè ïîñëåäîâàòåëüíî ïåðåáèðàþò ýëåìåíòû, ñîîòâåòñòâóþùèå ñîñåäíèì òî÷êàì îäíîé ïëîñêîñòè. èñ. 1 . àñêðàñêà îáëàñòè â 8 öâåòîâ 297 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org 12  !  "#$%#% " # &'( $)*+(  10 %,'%,' " 8 -#+  %,'%,' " 2 -#+ ($ 1 $&,',+() %,'%,' " 2 -#+ ($ 2 $&,',+() ,  8  #'+%(-(* 6   4      2   0 1 6 12 24   OpenMP èñ. 2 . Ïðîèçâîäèòåëüíîñòü îäíîóçëîâûõ âàðèàíòîâ îïòèìèçàöèè HPCG èñ. 3 . àñêðàñêà îáëàñòè â 2 öâåòà èñ. 4. àñêðàñêà îáëàñòè â 2 öâåòà ïî äâå ïëîñêîñòè 2.3. Âåêòîðèçàöèÿ Ñëåäóþùèì ýòàïîì îïòèìèçàöèé áûëà âåêòîðèçàöèÿ âû÷èñëåíèé. Ïîñêîëüêó âî âñåõ ñòðîêàõ ìàòðèöû, êðîìå ñîîòâåòñòâóþùèõ ãðàíè÷íûì ýëåìåíòàì, ïî 27 íåíóëåâûõ çíà- ÷åíèé, òî èñïîëüçóåìûé ïî óìîë÷àíèþ îðìàò õðàíåíèÿ ðàçðåæåííîé ìàòðèöû ìîæíî çàìåíèòü íà îðìàò ELLPACK, â êîòîðîì êîëè÷åñòâî íåíóëåâûõ ýëåìåíòîâ â ñòðîêå èê- ñèðîâàíî, è ýòîò àêò èñïîëüçóåòñÿ äëÿ óïðîùåíèÿ ñòðóêòóðû äàííûõ.  äàííîé ðåàëèçà- öèè äëÿ îðìàòà ELLPACK êîëè÷åñòâî íåíóëåâûõ ýëåìåíòîâ â ñòðîêå âûáðàíî ðàâíûì 28, ÷òî òðåáóåòñÿ äëÿ êðàòíîñòè äëèíû ìàññèâà ýëåìåíòîâ ñòðîêè äëèíå âåêòîðíîãî ðåãèñòðà ðàñøèðåíèÿ ñèñòåìû êîìàíä Intel AVX  ïî 4 çíà÷åíèÿ äâîéíîé òî÷íîñòè â âåêòîðå. Ñìå- íà îðìàòà ìàòðèöû ïîçâîëèëà óëó÷øèòü âåêòîðèçàöèþ êîäà óíêöèé ComputeSYMGS è ComputeSPMV, ÷òî îáåñïå÷èëî ïðèðîñò ïðîèçâîäèòåëüíîñòè 5%. Ýåêòèâíàÿ âåêòîðèçàöèÿ êîäà óíêöèé ComputeSYMGS è ComputeSPMV çàòðóäíè- òåëüíà èç-çà òîãî, ÷òî îáðàùåíèÿ ê âåêòîðó x ÿâëÿþòñÿ êîñâåííûìè, òî åñòü ïðîèñõîäÿò ïî 298 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org èíäåêñàì, ñîîòâåòñòâóþùèì íåíóëåâûì ýëåìåíòàì ñòðîê ìàòðèöû. Îñíîâíîé àêòîð, ñäåð- æèâàþùèé ïðîèçâîäèòåëüíîñòü ýòèõ óíêöèé  ïðîïóñêíàÿ ñïîñîáíîñòü ÷òåíèÿ èç ïàìÿòè â ðåæèìå ìàëîé ïîëåçíîé äîëè äàííûõ, âûáèðàåìûõ èç ïàìÿòè ïðè îäíîì îáðàùåíèè. Îä- íàêî ïîëó÷åííûé ïðèðîñò ïðîèçâîäèòåëüíîñòè íå ÿâëÿåòñÿ îêîí÷àòåëüíûì ðåçóëüòàòîì. 2.4. Îïòèìèçàöèÿ ìåæóçëîâûõ êîììóíèêàöèé Ïîñêîëüêó ìàðøðóòèçàòîðû ñåòè ¾Àíãàðà¿ ñîçäàâàëèñü ñ àïïàðàòíîé ïîääåðæêîé áèá- ëèîòåêè SHMEM [17℄, äëÿ óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè ìåæóçëîâûõ êîììóíèêàöèé èñ- ïîëüçîâàëàñü ýòà áèáëèîòåêà âìåñòî áèáëèîòåêè MPI [18℄, èñïîëüçóåìîé â áàçîâîé âåðñèè HPCG.  óíêöèè Ex hangeHalo, êîòîðàÿ èñïîëüçóåòñÿ ïðè âûïîëíåíèè óíêöèé SYMGS è SPMV äëÿ îáìåíà ãðàíè÷íûìè çíà÷åíèÿìè, ïîñûëêè çíà÷åíèé â îïòèìèçèðîâàííîé âåð- ñèè îñóùåñòâëÿþòñÿ ïðè ïîìîùè óíêöèè çàïèñè äàííûõ íà óäàëåííûé óçåë áèáëèîòå- êè SHMEM (shmem_double_put). Îäíàêî ïîñëå óäàëåííîé çàïèñè äàííûõ â áèáëèîòåêå SHMEM íåîáõîäèìà ñèíõðîíèçàöèÿ. Ïåðâàÿ ðåàëèçàöèÿ èñïîëüçîâàëà îáùóþ áàðüåðíóþ ñèíõðîíèçàöèþ: êàæäûé ïðîöåññ îæèäàë, êîãäà çàâåðøàòñÿ óäàëåííûå çàïèñè âñåõ ïðî- öåññîâ ïðè ïîìîùè óíêöèè shmem_barrier, è òîëüêî ïîñëå ýòîãî íà÷èíàë âûïîëíåíèå îñíîâíûõ öèêëîâ SYMGS è SPMV. Âî âòîðîì âàðèàíòå èñïîëüçîâàëàñü ñèíõðîíèçàöèÿ, ðå- àëèçîâàííàÿ ïðè ïîìîùè äîïîëíèòåëüíûõ óäàëåííûõ çàïèñåé, íî òîëüêî ñ òåìè ïðîöåññà- ìè, ñ êîòîðûìè ïðîèñõîäèò îáìåí. Êàæäûé ïðîöåññ íà÷èíàë âûïîëíÿòü îñíîâíûå èòåðàöèè ïîñëå òîãî, êàê ïîëó÷èò íåîáõîäèìûå äàííûå äëÿ âû÷èñëåíèé îò ñîñåäíèõ ïðîöåññîâ. 300 SHMEM 250 456789: HPCG 2.4 200 3 2 1 150 0 / . 100 50 0 0 5 10 15 20 25 30 35 40 . Ïðîèçâîäèòåëüíîñòü íà ðàñïðåäåëåííîé ïàìÿòè áàçîâîãî âàðèàíòà â ñðàâíåíèè ñ èñ. 5 îïòèìèçèðîâàííûì âàðèàíòîì ñ èñïîëüçîâàíèåì áèáëèîòåêè SHMEM Ñðàâíåíèå ðåçóëüòàòîâ ðàáîòû êàæäîé ðåàëèçàöèè ïðåäñòàâëåíî íà ðèñ. 5. åçóëüòàòû èçìåðÿëèñü íà 36-óçëîâîì êëàñòåðå ñ ñåòüþ ¾Àíãàðà¿, åãî ïàðàìåòðû ïðèâåäåíû â òàáëèöå 2. Íà êàæäîì èç óçëîâ ïðè çàïóñêå òåñòà HPCG èñïîëüçîâàëîñü 8 ïðîöåññîâ. åçóëüòà- òû ïðîèçâîäèòåëüíîñòè ïðèâåäåíû äëÿ ðàçìåðà ëîêàëüíîé îáëàñòè ïðîöåññà 16x16x16. Íà ðèñóíêå ïðèâåäåíû ðåçóëüòàòû äëÿ áàçîâîé âåðñèè 2.4 òåñòà è äëÿ îïòèìèçèðîâàííîé âåð- ñèè, âêëþ÷àþùåé îäíîóçëîâûå îïòèìèçàöèè (çà èñêëþ÷åíèåì OpenMP) è èñïîëüçîâàíèå áèáëèîòåêè SHMEM. 299 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org Äèàãðàììà íà ðèñ. 5 ïîêàçûâàåò, ÷òî íà 36 óçëàõ âûèãðûø â ïðîèçâîäèòåëüíîñòè îï- òèìèçèðîâàííîé âåðñèè ñ èñïîëüçîâàíèåì SHMEM ñîñòàâëÿåò 39%. Çàêëþ÷åíèå Äàííàÿ ðàáîòà ïðåäñòàâëÿåò ïåðâóþ âåðñèþ îïòèìèçèðîâàííîé ðåàëèçàöèè òåñòà HPCG äëÿ ñóïåðêîìïüþòåðîâ ñ ñåòüþ ¾Àíãàðà¿, ðàçðàáîòàííîé â ÎÀÎ ¾ÍÈÖÝÂÒ¿. Ïðåäëàãàåìàÿ ðåàëèçàöèÿ âêëþ÷àåò îïòèìèçàöèè óðîâíÿ âû÷èñëèòåëüíîãî óçëà, â òîì ÷èñëå èçìåíåíèå îðìàòà õðàíåíèÿ ðàçðåæåííîé ìàòðèöû, OpenMP-ðàñïàðàëëåëèâàíèå ìåòîäà ñèììåòðè÷- íîãî àóññà-Çåéäåëÿ è âåêòîðèçàöèþ êîäà. Íà îäíîì óçëå ïåðå÷èñëåííûå ïðèåìû ïîçâîëèëè ïîëó÷èòü óñêîðåíèå 4.8 ðàçà ïî ñðàâíåíèþ ñ áàçîâîé âåðñèåé HPCG 2.4. Ìåæïðîöåññíûå îïòèìèçàöèè îáìåíîâ â ñåòè ¾Àíãàðà¿ âûïîëíåíû ïðè ïîìîùè èñïîëü- çîâàíèÿ áèáëèîòåêè SHMEM âìåñòî áèáëèîòåêè MPI. Ïîëó÷åííûå â ðàáîòå ðåçóëüòàòû íà ìàêåòíîì 36-óçëîâîì êëàñòåðå ñ ñåòüþ ¾Àíãàðà¿ ïîçâîëèëè ïîëó÷èòü âûèãðûø 39% ïî ñðàâíåíèþ ñ áàçîâîé âåðñèåé 2.4 òåñòà HPCG. Äàëüíåéøàÿ ðàáîòà áóäåò íàïðàâëåíà íà îáúåäèíåíèå OpenMP-ðàñïàðàëëåëèâàíèÿ è ìíîãîóçëîâûõ îïòèìèçàöèé, à òàêæå íà óëó÷øåíèå ðåçóëüòàòîâ è áîëåå ãëóáîêîå èññëåäî- âàíèå. Ëèòåðàòóðà 1. M. Heroux, J. Dongarra, P. Lusz zek. HPCG Te hni al Spe i ation. Sandia Report SAND2013-8752. Printed O tober 2013. URL: https://software.sandia.gov/hp g/do /HPCG-Spe ifi ation.pdf (äàòà îá- ðàùåíèÿ: 10.06.2015). 2. J. Dongarra, P. Lusz zek, A. Petitet. The LINPACK Ben hmark: Past, Present, and Future // Con urren y and Computation: Pra ti e and Experien e.  Vol. 15(9).  2003.  P. 803820. ISSN 1532-0634. URL: http://www.netlib.org/utk/people/Ja kDongarra/PAPERS/146_2003_the-linpa k-ben hmark-pa (äàòà îáðàùåíèÿ: 14.06.2015). 3. J. Park, M. Smelyanskiy, K. Vaidyanathan, et al. E ient shared-memory implementation of high-performan e onjugate gradient ben hmark and its appli ation to unstru tured matri esi // In Pro eedings of the International Conferen e for High Performan e Computing, Networking, Storage and Analysis (SC'14). IEEE Press, Pis ataway, NJ, USA,  2014.  P. 945955. URL: http://p l.intel-resear h.net/publi ations/s 14_hp g.pdf (äàòà îáðàùåíèÿ: 12.06.2015). 4. C. Chen, Y. Du, H. Jiang, K. Zuo, C. Yang. HPCG: Preliminary Evaluation and Optimization on Tianhe-2 CPU-only Nodes // In Pro eedings of the 2014 IEEE 26th International Symposium on Computer Ar hite ture and High Performan e Computing (SBAC-PAD '14).  IEEE Computer So iety, Washington, DC, USA.  2014.  P. 4148. 5. K. Kumahata, K. Minami. HPCG Performan e Improvement on the K omputer // Presentation at Super omputers Conferen e (SC'14), 2014. URL: http://www.hp g-ben hmark.org/downloads/s 14/HPCG_on_the_K_ omputer.pdf (äàòà îáðàùåíèÿ: 14.06.2015). 300 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org 6. E. Phillips, M. Fati a. A CUDA Implementation of the High Performan e Conjugate Gradient Ben hmark // High Performan e Computing Systems. Performan e Modeling, Ben hmarking, and Simulation. Le ture Notes in Computer S ien e.  Vol. 8966.  2015. P. 6884. URL: http://www.d s.warwi k.a .uk/~sdh/pmbs14/PMBS14/Workshop_S hedule_files/8-CUDAHPCG.pdf (äàòà îáðàùåíèÿ: 12.06.2015). 7. V. Marjanovi, J. Gra ia, C. Glass. Performan e Modeling of the HPCG Ben hmark // High Performan e Computing Systems. Performan e Modeling, Ben hmarking, and Simulation Le ture Notes in Computer S ien e.  Vol. 8966.  2015.  P. 172192. URL: https://hpgmg.org/stati /Marjanovi Gra iaGlass-Performan eModelHPCG-2014.pdf (äàòà îáðàùåíèÿ: 14.06.2015). 8. Ëàöèñ, À.Î. Êàêàÿ íàì ïîëüçà îò òåñòà HPCG. / Ëàöèñ, À.Î., Àíäðååâ Ñ.Ñ., Ïëîòêèíà Å.À., Äáàð Ñ.À. // Ñáîðíèê òåçèñîâ äîêëàäîâ ÍÑÊÔ'2014.  2014. URL: http://2014.ns f.ru/TesisAll/4_Systemnoe_i_promezhyto hnoe_PO/06_072_LatsisAO.pdf (äàòà îáðàùåíèÿ: 12.06.2015). 9. Êèñåëåâ À.Â., Êèñåëåâ Å.À., Êîðíååâ Â.Â. Àíàëèç ñòðóêòóðû èíîðìàöèîííîãî ãðà- à òåñòà HPCG // Íàó÷íûé ñåðâèñ â ñåòè Èíòåðíåò: ìíîãîîáðàçèå ñóïåðêîì- ïüþòåðíûõ ìèðîâ: Òðóäû Ìåæäóíàðîäíîé ñóïåðêîìïüþòåðíîé êîíåðåíöèè (22- 27 ñåíòÿáðÿ 2014 ã., ã. Íîâîðîññèéñê).  Ì.: Èçä-âî Ì Ó, 2014.  C. 4951. URL: http://agora.guru.ru/abrau2014/pdf/049.pdf (äàòà îáðàùåíèÿ: 12.06.2015). 10. Ìàêàãîí, Ä.Â. Ñåòè äëÿ ñóïåðêîìïüþòåðîâ. / Ä.Â. Ìàêàãîí, Å.Ë. Ñûðîìÿòíèêîâ // Îòêðûòûå ñèñòåìû. ÑÓÁÄ.  2011.   7.  Ñ. 3337. 11. Êîðæ, À.À. Îòå÷åñòâåííàÿ êîììóíèêàöèîííàÿ ñåòü 3D-òîð ñ ïîääåðæ- êîé ãëîáàëüíî àäðåñóåìîé ïàìÿòè äëÿ ñóïåðêîìïüþòåðîâ òðàíñïåòàëîïñíî- ãî óðîâíÿ ïðîèçâîäèòåëüíîñòè. / À.À. Êîðæ, Ä.Â. Ìàêàãîí, È.À. Æàáèí, Å.Ë. Ñûðîìÿòíèêîâ // Ïàðàëåëüíûå âû÷èñëèòåëüíûå òåõíîëîãèè (ÏàÂÒ'2010): Òðóäû ìåæäóíàðîäíîé íàó÷íîé êîíåðåíöèè (Óà, 29 ìàðòà  2 àïðåëÿ 2010 ã.).  ×åëÿáèíñê: Èçäàòåëüñêèé öåíòð ÞÓð Ó, 2010.  C. 227237. URL: http://omega.sp.susu.a .ru/books/ onferen e/PaVT2010/full/134.pdf (äà- òà îáðàùåíèÿ: 29.04.2015). 12. Ñèìîíîâ, À.Ñ. àçðàáîòêà ìåæóçëîâîé êîììóíèêàöèîííîé ñåòè ñ òîïîëîãèåé ¾ìíîãî- ìåðíûé òîð¿ è ïîääåðæêîé ãëîáàëüíî àäðåñóåìîé ïàìÿòè äëÿ ïåðñïåêòèâíûõ îòå÷å- ñòâåííûõ ñóïåðêîìïüþòåðîâ. / À.Ñ. Ñèìîíîâ, È.À. Æàáèí, Ä.Â. Ìàêàãîí // Íàó÷íî- òåõíè÷åñêàÿ êîíåðåíöèÿ ¾Ïåðñïåêòèâíûå íàïðàâëåíèÿ ðàçâèòèÿ âû÷èñëèòåëüíîé òåõ- íèêè¿ (Ìîñêâà, 28 èþíÿ).  Ìîñêâà: ÎÀÎ ¾Êîíöåðí ¾Âåãà¿, 2011.  C. 1719. 13. Ñèìîíîâ, À.Ñ. Ïåðâîå ïîêîëåíèå âûñîêîñêîðîñòíîé êîììóíèêàöèîííîé ñåòè ¾Àíãàðà¿ / À.Ñ. Ñèìîíîâ, Ä.Â. Ìàêàãîí, È.À. Æàáèí, À.Í. Ùåðáàê, Å.Ë. Ñûðîìÿòíèêîâ, Ä.À. Ïî- ëÿêîâ // Íàóêîåìêèå òåõíîëîãèè.  2014.  Ò. 15,  1.  Ñ. 2128. 14. Ñëóöêèí, À.È. àçðàáîòêà ìåæóçëîâîé êîììóíèêàöèîííîé ñåòè ÅÑ8430 ¾Àíãàðà¿ äëÿ ïåðñïåêòèâíûõ ñóïåðêîìïüþòåðîâ / À.È. Ñëóöêèí, À.Ñ. Ñèìîíîâ, È.À. Æàáèí, Ä.Â. Ìà- êàãîí, Å.Ë. Ñûðîìÿòíèêîâ // Óñïåõè ñîâðåìåííîé ðàäèîýëåêòðîíèêè.  2012.   1.  C. 610. 15. Ìàêàãîí, Ä.Â. Êðèñòàëë äëÿ Àíãàðû / È.À. Æàáèí, Ä.Â. Ìàêàãîí, À.Ñ. Ñèìîíîâ // Ñóïåðêîìïüþòåðû.  Çèìà-2013.  C. 4649. 301 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org 16. Èçãàëèí Ñ.Ï., Ñèìîíîâ À.Ñ., Ìèõååâ Â.À. Îòå÷åñòâåííûå ðàçðàáîòêè â îáëàñòè ñóïåð- êîìïüþòåðíûõ òåõíîëîãèé. Ïðåäâàðèòåëüíûå ðåçóëüòàòû îöåíêè ïðîèçâîäèòåëüíîñòè ÂÊÑ ¾Àíãàðà¿ (ÅÑ8430) // Äîêëàä íà Ìîñêîâñêîì Ñóïåðêîìïüþòåðíîì Ôîðóìå, 2014. URL: http://www.osp.ru/net at_files/18/10/07_Ote hestvennye_razrabotki_v_oblasti_superkomp_ (äàòà îáðàùåíèÿ: 14.06.2015). 17. Feind, K. Shared Memory A ess (SHMEM) Routines. Cray Resear h, 1995. URL: https:// ug.org/5-publi ations/pro eedings_attendee_lists/1997CD/S95PROC/303_308.PDF (äàòà îáðàùåíèÿ: 29.04.2015). 18. Message Passing Interfa e Forum, MPI: A Message-Passing Interfa e Standard, 1995. URL: http://www.mpi-forum.org/do s/mpi-1.1/mpi-11-html/node64.html (äàòà îáðà- ùåíèÿ: 29.04.2015). 302 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org Optimized implementation of HPCG benchmark on supercomputer with “Angara” interconnect Alexander Agarkov, Alexander Semenov and Alexey Simonov Keywords: HPCG, "Angara" interconnect, SHMEM, vectorization, OpenMP The paper presents the optimized implementation of the HPCG benchmark on "Angara" interconnect developed by "NICEVT". HPCG implements conjugate gradient method with preconditioner to solve a sparse linear system. The proposed implementation includes compute node optimizations, such as new sparse matrix storage format, OpenMP- parallelization and vectorization, as well as interprocess communication optimizations targeted for "Angara" interconnect by using the SHMEM library instead of MPI. Compute node optimization includes changing the sparse matrix storage format, OpenMP- parallelization and vectorization. Obtained performance results on the cluster with "Angara" interconnect significantly exceed the results of the HPCG 2.4 reference implementation.