Введение - Математико-механический факультет СПбГУ

advertisement
Ëàáîðàòîðíûé ïðàêòèêóì íà ïàðàëëåëüíîì êëàñòåðå
Ââåäåíèå
Äàííîå ââåäåíèå ïîñâÿùåíî ïîäãîòîâêå ê ðàáîòå ñ ïàðàëëåëüíûìè ïðîãðàììàìè, èñïîëüçóþùèìè ðåàëèçàöèþ MPICH ñòàíäàðòà MPI, íà êîìïüþòåðàõ êëàñòåðà â àóäèòîðèè 2444 ìàòåìàòèêîìåõàíè÷åñêîãî ôàêóëüòåòà ÑÏáÃÓ, à òàêæå ìîìåíòàì, îáùèì äëÿ âñåõ ëàáîðàòîðíûõ ðàáîò äàííîãî
ïðàêòèêóìà.
Ïîëüçîâàòåëÿì êëàñòåðà äîñòóïíû 9
êîìïüþòåðîâ; èõ èìåíà m01, m03, . . ., m10 íàïèñàíû íà èõ êîðïóñàõ. Êîìïüþòåð m02 íå ñóùåñòâóåò;
ïîïûòêè åãî èñïîëüçîâàíèÿ ïðèâîäÿò ê ñîîáùåíèÿì îá îøèáêàõ.
Îáû÷íî, íà ýòèõ êîìïüþòåðàõ ðàáîòàåò îïåðàöèîííàÿ ñèñòåìà Windows Server 2003. Äëÿ ðàáîòû
ñ MPICH êîìïüþòåðû äîëæíû áûòü ïåðåçàãðóæåíû â Linux. Ýòî äåëàåòñÿ â äâà ýòàïà: ÷òîáû íà÷àòü ïðîöåññ ïåðåçàãðóçêè, íóæíî íàæàòü ìûøüþ êíîïêó ¾Shut down ...¿ â îêíå, ïðèãëàøàþùåì ê
âõîäó â Windows, è â ïðåäëàãàåìîì äèàëîãå âûáðàòü Restart (îáû÷íî ýòîò âàðèàíò óæå âûáðàí), è
íàæàòü ¾Ok¿. Ïîñëå òîãî, êàê Windows çàâåðøèò ñâîþ ðàáîòó è íà÷íåòñÿ ïîâòîðíàÿ çàãðóçêà, ïîëüçîâàòåëþ áóäåò ïðåäëîæåíî ìåíþ ñ âûáîðîì èç òðåõ ïóíêòîâ: Windows è 2 âàðèàíòà SUSE Linux:
console (ðåæèì êîìàíäíîé ñòðîêè) è îáû÷íûé îêîííûé âàðèàíò. Äàííîå ìåíþ ïîçâîëÿåò âûáðàòü
æåëàåìûé âàðèàíò â òå÷åíèå íåñêîëüêèõ ñåêóíä, è åñëè ïîëüçîâàòåëü çà ýòî âðåìÿ íå âûáðàë Linux,
àâòîìàòè÷åñêè ñíîâà çàãðóæàåòñÿ Windows.
Äëÿ ðàáîòû ñ MPI âïîëíå äîñòàòî÷íî êîìàíäíîé ñòðîêè, îäíàêî îí ðàáîòàåò è â îêîííîì âàðèàíòå
çàãðóçêè. Åñëè áûë âûáðàí îêîííûé âàðèàíò, òî äëÿ ââîäà óêàçàííûõ äàëåå êîìàíä íóæíî ñíà÷àëà
çàïóñòèòü ýìóëÿòîð òåðìèíàëà. Ýòî äåëàåòñÿ ùåë÷êîì ëåâîé êíîïêîé ìûøè ïî ñîîòâåòñòâóþùåìó
çíà÷êó â íèæíåé ÷àñòè ýêðàíà.
Ïîñëå ðàáîòû æåëàòåëüíî îïÿòü ïåðåçàãðóçèòü êîìïüþòåð â Windows, äëÿ ÷åãî â êîíñîëüíîì
ðåæèìå äîñòàòî÷íî íàæàòü Ctrl-Alt-Del, à â îêîííîì ùåëêíóòü ëåâîé êíîïêîé ïî çåëåíîìó êðóãëîìó çíà÷êó â ëåâîì íèæíåì óãëó ýêðàíà, â ïîÿâèâøåìñÿ ìåíþ âûáðàòü ïóíêò ¾çàâåðøèòü ñåàíñ¿
è â ïîÿâèâøåìñÿ äèàëîãå âûáðàòü ïóíêò ¾ïåðåçàãðóçèòü¿.
Âî âðåìÿ ðàáîòû MPICH ïðè èñïîëüçîâàíèè êîìïüþòåðîâ, îòëè÷íûõ îò òîãî,
íà êîòîðîì çàðåãèñòðèðîâàëñÿ ïîëüçîâàòåëü, MPICH âûíóæäåí âûïîëíÿòü îïðåäåëåííûå êîìàíäû
íà ýòèõ êîìïüþòåðàõ îò èìåíè ïîëüçîâàòåëÿ. Äëÿ ýòîãî èñïîëüçóåòñÿ ñðåäñòâî ssh (øèôðóþùèé
àíàëîã rsh). Ïîýòîìó äëÿ ïðàâèëüíîé ðàáîòû MPICH ssh äîëæåí áûòü íàñòðîåí òàê, ÷òîáû ïðè
åãî èñïîëüçîâàíèè â ïðåäåëàõ êëàñòåðà ïîëüçîâàòåëü ìîã âõîäèòü íà äðóãèå êîìïüþòåðû áåç ââîäà
ïàðîëÿ.
Äëÿ ýòîãî ïîëüçîâàòåëü, çàðåãèñòðèðîâàâøèñü íà îäíîì èç êîìïüþòåðîâ êëàñòåðà, äîëæåí ñäåëàòü ñëåäóþùåå:
à) Ñîçäàòü ïðè ïîìîùè óòèëèòû ssh-keygen ïàðó èç ñåêðåòíîãî è îòêðûòîãî êëþ÷åé. Äëÿ ýòîãî
íóæíî äàòü êîìàíäó
1. Èìåíà êîìïüþòåðîâ, ïåðåçàãðóçêà â Linux è âõîä.
2. Ïîäãîòîâêà ssh.
$ ssh-keygen -t rsa1
Çäåñü è äàëåå çíàê $ ÿâëÿåòñÿ ÷àñòüþ ïðèãëàøåíèÿ ê ââîäó êîìàíäû, è íàáèðàòü åãî íå íóæíî.
Óòèëèòà ssh-keygen âî âðåìÿ ñâîåé ðàáîòû ïðåäëàãàåò ïîëüçîâàòåëþ ââåñòè ñåêðåòíóþ ôðàçó äëÿ
çàùèòû êëþ÷à; ïîñêîëüêó â äàííîì ñëó÷àå òàêàÿ ôðàçà íå íóæíà, â îòâåò íà ýòîò âîïðîñ íóæíî
ïðîñòî íàæàòü ¾ââîä¿. Ýòîò âîïðîñ ïîâòîðÿåòñÿ äâàæäû.
Âûïîëíåíèå ýòîé êîìàíäû ïðèâåäåò ê ñîçäàíèþ â äîìàøíåì äèðåêòîðèè ïîääèðåêòîðèÿ .ssh, è
â íåì ôàéëîâ identity (ñåêðåòíûé êëþ÷) è identity.pub (îòêðûòûé êëþ÷).
á) Äàëåå, íåîáõîäèìî ïåðåéòè â äèðåêòîðèé .ssh (íàïðèìåð, êîìàíäîé cd .ssh) è ñîçäàòü â íåì
ôàéë authorized_keys, ïîçâîëÿþùèé âõîäèòü íà äðóãèå êîìïüþòåðû êëàñòåðà áåç ïàðîëÿ. Ýòî äåëàåòñÿ â äâà ýòàïà. Âî-ïåðâûõ, íåîáõîäèìî ñîçäàòü ôàéë, â êîòîðîì 9 ðàç ïîâòîðÿåòñÿ ñòðîêà èç
ôàéëà identity.pub (ïîñëåäíèé ôàéë ñîñòîèò èç îäíîé ñòðîêè). Ýòî ìîæíî ñäåëàòü, íàïðèìåð, òàêîé
êîìàíäîé:
$ for((I=0; I<9; I++)); do cat identity.pub >> authorized_keys; done
Äàëåå, ïîëó÷åííûé ôàéë authorized_keys íåîáõîäèìî îòðåäàêòèðîâàòü â ëþáîì òåêñòîâîì ðåäàêòîðå, çàìåíèâ â êîíöå êàæäîé ñòðîêè â àäðåñå ëîãèí@èìÿêîìïüþòåðà èìÿ êîìïüþòåðà òàê, ÷òîáû âî
âñåõ 9 ñòðîêàõ âñòðå÷àëèñü èìåíà âñåõ 9 êîìïüþòåðîâ (â îñòàëüíîì ñîäåðæèìîå ýòîãî ôàéëà äîëæíî
îñòàòüñÿ áåç èçìåíåíèé). Äëÿ ýòîãî ñì. ðàçäåë 3 ðåäàêòèðîâàíèå ïðîãðàììû.
â) Íàêîíåö, íóæíî ïðè ïîìîùè ssh (êîìàíäîé ssh èìÿêîìïüþòåðà) çàéòè íà êàæäûé èç êîìïüþòåðîâ êëàñòåðà (â òîì ÷èñëå è íà òîò, íà êîòîðîì èçíà÷àëüíî çàðåãèñòðèðîâàí ïîëüçîâàòåëü). Ýòî
äåëàåòñÿ ïî äâóì ïðè÷èíàì: âî-ïåðâûõ, ïðè ïåðâîé òàêîé ðåãèñòðàöèè ssh ñïðàøèâàåò, âåðåí ëè îòêðûòûé êëþ÷ òîãî êîìïüþòåðà, íà êîòîðîì ìû ñîáèðàåìñÿ ðåãèñòðèðîâàòüñÿ. Íà ýòîò âîïðîñ íàäî
îòâåòèòü yes, è ïðè ñëåäóþùèõ ïîïûòêàõ ðåãèñòðàöèè ýòîò âîïðîñ óæå íå çàäàåòñÿ. Âî-âòîðûõ, ýòî
ïîçâîëÿåò ïðîâåðèòü ïðàâèëüíîñòü äåéñòâèé, âûïîëíåííûõ íà ïðåäûäóùèõ ýòàïàõ ssh íå äîëæåí
ñïðàøèâàòü ïàðîëü ïðè òàêîé ðåãèñòðàöèè.
Åñëè âñå áûëî ñäåëàíî ïðàâèëüíî, è çàðåãèñòðèðîâàííîìó íà îäíîì êîìïüþòåðå êëàñòåðà ïîëüçîâàòåëþ ssh ïîçâîëÿåò ðåãèñòðèðîâàòüñÿ íà ëþáîì êîìïüþòåðå êëàñòåðà áåç ïàðîëÿ, ìîæíî ïåðåõîäèòü ê ñëåäóþùåìó ïóíêòó.
 Linux èìååòñÿ äîñòàòî÷íî ìíîãî òåêñòîâûõ ðåäàêòîðîâ,
ïîçâîëÿþùèõ ââåñòè ïðîãðàììó è èñïðàâèòü èìåþùèåñÿ â íåé îøèáêè. Ìû ðàññìîòðèì îäèí èç
ïðîñòåéøèõ âàðèàíòîâ, à èìåííî, âñòðîåííûé ðåäàêòîð îáîëî÷êè mc. Îáîëî÷êà mc î÷åíü ïîõîæà íà
FAR èç Windows. Äëÿ åå çàïóñêà íóæíî äàòü êîìàíäó
3. Ðåäàêòèðîâàíèå ïðîãðàììû.
$ mc
Ïîñëå çàïóñêà ýêðàí äåëèòñÿ âåðòèêàëüíî íà äâå ïàíåëè, â îäíîé èç êîòîðûõ îòîáðàæàåòñÿ ñïèñîê
ïîääèðåêòîðèåâ è ôàéëîâ òåêóùåãî äèðåêòîðèÿ. Äëÿ ðåäàêòèðîâàíèÿ óæå èìåþùåãîñÿ ôàéëà íóæíî
ïîñòàâèòü íà íåãî âûäåëåííóþ ñòðî÷êó (êëàâèøàìè ââåðõ/âíèç) è íàæàòü F4. Äëÿ ñîçäàíèÿ íîâîãî
(ïóñòîãî) ôàéëà ìîæíî âîñïîëüçîâàòüñÿ êîìàíäîé
$ > èìÿ-ôàéëà
 ðåäàêòîðå ìîæíî íàáèðàòü òåêñò îáû÷íûì îáðàçîì, ðàáîòàþò òàêæå êëàâèøè Backspace, Del,
ñòðåëêè, PageUp, PageDown. Âûäåëèòü áëîê ìîæíî, ïîñòàâèâ êóðñîð íà íà÷àëî è íàæàâ F3, çàòåì
ïîñòàâèâ êóðñîð íà ñèìâîë, ñëåäóþùèé çà ïîñëåäíèì ñèìâîëîì, êîòîðûé äîëæåí áûòü â áëîêå, è
íàæàâ F3 åùå ðàç. Áëîê ìîæíî çàïèñàòü íà äèñê â îòäåëüíûé ôàéë (Ctrl-F) èëè óäàëèòü (F8);
ïîñòàâèâ êóðñîð íà íóæíîå ìåñòî, ìîæíî ñêîïèðîâàòü (F5) èëè ïåðåìåñòèòü (F6) áëîê òóäà. Ìîæíî
âñòàâèòü ñîäåðæèìîå äðóãîãî ôàéëà â ïîçèöèþ êóðñîðà (F15 èëè shift-F5).
Ìîæíî èñêàòü òåêñò (F7) èëè èñêàòü è çàìåíÿòü (F4). Íîâîé ïî ñðàâíåíèþ ñ äðóãèìè òåêñòîâûìè
ðåäàêòîðàìè ÿâëÿåòñÿ âîçìîæíîñòü ¾âûðàæåíèé scanf¿, ò. å. âîçìîæíîñòü èñïîëüçîâàòü ñïåöèôèêàöèè scanf â âûðàæåíèÿõ ïîèñêà è çàìåíû. Íàïðèìåð, ìîæíî ïîìåíÿòü ìåñòàìè äâà öåëûõ ïàðàìåòðà
ó âûçîâîâ ôóíêöèè f, çàäàâ äëÿ ïîèñêà f(%d,%d) è òî æå ñàìîå äëÿ çàìåíû, è çàäàâ ïîðÿäîê àðãóìåíòîâ (â îòäåëüíîì ïîëå ââîäà) 2,1.
Êîìàíäà undo Ctrl-u, çàïèñü ôàéëà F2, âûõîä F10.
Ýòè è íåêîòîðûå äðóãèå êîìàíäû òàêæå ìîæíî âûçâàòü èç ìåíþ (F9).
 îêîííîì âàðèàíòå ýìóëÿòîð òåðìèíàëà ìîæåò ïåðåõâàòûâàòü íåêîòîðûå ôóíêöèîíàëüíûå êëàâèøè, ïîíèìàÿ èõ êàê êîìàíäû ñåáå. Åñëè ýòî ïðîèñõîäèò, ìîæíî âìåñòî F1, ..., F9, F10 íàæèìàòü
(ïîñëåäîâàòåëüíî, à íå îäíîâðåìåííî) Esc è äàëåå 1, ..., 9, 0. Ò. å. F3 òî æå, ÷òî è Esc 3.
Äëÿ êîìïèëÿöèè MPI-ïðîãðàììû, íàïèñàííîé íà C, ïðîùå
âñåãî âîñïîëüçîâàòüñÿ ñïåöèàëüíîé âåðñèåé êîìïèëÿòîðà, êîòîðàÿ íàçûâàåòñÿ mpicc.
Íàïðèìåð, ñêîìïèëèðîâàòü ïðîãðàììó prog.c èç òåêóùåãî äèðåêòîðèÿ ìîæíî êîìàíäîé
4. Êîìïèëÿöèÿ MPI-ïðîãðàììû.
$ mpicc prog.c
Ïðè ýòîì, åñëè ïðîãðàììà ñîäåðæèò îøèáêè (âûÿâëÿåìûå ïðè êîìïèëÿöèè), mpicc ñîîáùèò ïîëüçîâàòåëþ î íèõ. Åñëè æå îøèáîê íåò, â òåêóùåì äèðåêòîðèè ïîÿâèòñÿ ðåçóëüòàò êîìïèëÿöèè, èñïîëíÿåìàÿ ïðîãðàììà a.out.
Åñëè ïðîãðàììà áûëà óñïåøíî ñêîìïèëèðîâàíà, åå
ìîæíî çàïóñòèòü íà âûïîëíåíèå êîìàíäîé
5. Çàïóñê ïðîãðàììû è çàìåð âðåìåíè.
$ mpirun -np ÷èñëî -machinefile ôàéë a.out
Çäåñü ÷èñëî îáîçíà÷àåò òðåáóåìîå ÷èñëî ïðîöåññîâ, à ôàéë ôàéë, ñîäåðæàùèé ñïèñîê èìåí
êîìïüþòåðîâ, íà êîòîðûõ äîïóñòèìî âûïîëíÿòü ýòè ïðîöåññû. Îáû÷íî, ýòîò ôàéë ñîäåðæèò èìåíà
âñåõ äîñòóïíûõ êîìïüþòåðîâ èç ÷èñëà m01, m03, . . ., m10, ïî îäíîìó èìåíè íà ñòðîêå. Íåîáõîäèìî,
÷òîáû ñóììàðíîå ÷èñëî ïðîöåññîðîâ íà êîìïüþòåðàõ, èìåíà êîòîðûõ çàïèñàíû â ýòîì ôàéëå, íå
áûëî ìåíüøå òîãî ÷èñëà, êîòîðîå óêàçàíî â îïöèè -np; îäíàêî, îíî ìîæåò áûòü è ñòðîãî áîëüøå.
Äëÿ çàìåðà âðåìåíè ðàáîòû ïðîãðàììû ìîæíî âîñïîëüçîâàòüñÿ ñðåäñòâîì time èç êîìàíäíîãî
èíòåðïðåòàòîðà:
$ time mpirun -np ÷èñëî -machinefile ôàéë a.out
Êîìàíäà time â êîíöå ðàáîòû ïðîãðàììû âûâîäèò ðåçóëüòàòû òðåõ çàìåðîâ âðåìåíè: îáùåå âðåìÿ
(îò íà÷àëà ðàáîòû ïðîãðàììû äî åå çàâåðøåíèÿ), âðåìÿ ðàáîòû ñîáñòâåííî ïðîãðàììû íà òîì êîìïüþòåðå, íà êîòîðîì îíà áûëà çàïóùåíà, è âðåìÿ ðàáîòû îïåðàöèîííîé ñèñòåìû ïî îáñëóæèâàíèþ
ïîëüçîâàòåëüñêîé ïðîãðàììû, òàêæå íà òîì êîìïüþòåðå, íà êîòîðîì ðàáîòàåò ïîëüçîâàòåëü. Âðåìÿ
âûâîäèòñÿ â ìèíóòàõ è ñåêóíäàõ ñ òî÷íîñòüþ äî 0,001 ñ.
Download