‹àáîðàòîðíûå ðàáîòû

’åìû ëàáîðàòîðíûõ ðàáîò:

1.      �àðàëëåëüíîå ïðîãðàììèðîâàíèå äëß ñèñòåì ñ îáùåé ïàìßòüþ ñ èñïîëüçîâàíèåì òåõíîëîãèè OpenMP.

2.      �àðàëëåëüíîå ïðîãðàììèðîâàíèå äëß ãðàôè÷åñêîãî ïðîöåññîðà â ñðåäå NVidia CUDA.

3.      �àðàëëåëüíîå ïðîãðàììèðîâàíèå äëß ãåòåðîãåííûõ âû÷èñëèòåëüíûõ ñèñòåì ñ èñïîëüçîâàíèåì òåõíîëîãèè OpenCL.

4.      �àðàëëåëüíîå ïðîãðàììèðîâàíèå ñ èñïîëüçîâàíèåì òåõíîëîãèè MPI è áèáëèîòåêè ïðîôèëèðîâàíèß MPE.

‘òóäåíò ïîëó÷àåò îò ïðåïîäàâàòåëß íà ïåðâîì ëàáîðàòîðíîì çàíßòèè ñâîé èíäèâèäóàëüíûé âàðèàíò çàäàíèß íà öèêë ëàáîðàòîðíûõ ðàáîò, âêëþ÷àþùèé:

‒       íîìåðà ÷åòûðåõ çàäà÷ èç ñïèñêà, íàõîäßùåãîñß íà ñàéòå äèöèïëèíû (http://vt.cs.nstu.ru/~malyavko/ParProgrO/Tasks2025.htm);

‒       IP-àäðåñ è ïîðò ñåðâåðà;

‒       ëîãèí;

‒       SSH-êëþ÷.

‚ñå ëàáîðàòîðíûå ðàáîòû äîëæíû áûòü âûïîëíåíû ñ èñïîëüçâàíèåì ßçûêà ïðîãðàììèðîâàíèß C (èëè C++) â ñðåäå Linux áåç ãðàôè÷åñêîé îáîëî÷êè (ñ èñïîëüçîâàíèåì êîìïèëßòîðà gcc). �ðåäâàðèòåëüíóþ îòëàäêó ðàçðàáàòûâàåìûõ ïðîãðàìì ìîæíî âåñòè ñ èñïîëüçîâàíèåì MS Visual Studio (èëè äðóãèõ IDE), îäíàêî ñëåäóåò ïîìíèòü î âîçìîæíûõ íåñîâìåñòèìîñòßõ ñ êîìïèëßòîðîì èëè áèáëèîòåêàìè öåëåâîé ñðåäû, îñîáåííî âåðîßòíûìè â ñëó÷àå èñïîëüçîâàíèß C++. �îýòîìó ðåêîìåíäóåòñß îãðàíè÷èòüñß ÷èñòûì ‘.

‘òóäåíòàì, íå èìåþùèì îïûòà ðàáîòû â ñèñòåì Linux, ðåêîìåíäóåòñß ïðåäâàðèòåëüíî îçíàêîìèòüñß ñ ñîäåðæèìûì ôàéëà ÇŽñíîâû ðàáîòû â Linux.pptxÈ, íàõîäßùåãîñß íà ñàéòå äèñöèïëèíû.

‚ êàæäîé ëàáîðàòîðíîé ðàáîòå íóæíî ðåøèòü îäíó èç çàäà÷. ”îðìóëèðîâêè âñåõ çàäà÷ íàõîäßòñß íà ñàéòå äèñöèïëèíû â ïóíêòå Ç‘ïèñîê çàäà÷È. ‚ñå çàäà÷è, óêàçàííûå â âàðèàíòå çàäàíèß, äîëæíû áûòü ðåøåíû. �î æåëàíèþ ñòóäåíòà çàäà÷à ìîæåò áûòü çàìåíåíà ïðåïîäàâàòåëåì (ïðè ýòîì ñóììàðíûé áàëë äëß àòòåñòàöèè áóäåò óìåíüøåí íà 2 áàëëà çà ïåðâóþ çàìåíßåìóþ çàäà÷ó, íà 4 áàëëà çà âòîðóþ, É).

‘òóäåíò ñàìîñòîßòåëüíî äåëàåò âûáîð, êàêóþ èç çàäà÷ ðåøàòü ïðè âûïîëíåíèè êàæäîé ëàáîðàòîðíîé ðàáîòû. �åêîìåíäóåòñß íàèáîëåå àëãîðèòìè÷åñêè ñëîæíóþ (ñ òî÷êè çðåíèß ñòóäåíòà) çàäà÷ó ðåøàòü ñ èñïîëüçîâàíèåì íàèáîëåå ïðîñòîé òåõíîëîãèè (OpenMP), à íàèáîëåå ïðîñòûå Ð ñ èñïîëüçîâàíèåì ãðàôè÷åñêîãî ïðîöåññîðà (CUDA / OpenCL).

�îñëåäîâàòåëüíîñòü âûïîëíåíèß è ñäà÷è ðàáîò ìîæåò íå ñîâïàäàòü ñ èõ íóìåðàöèåé â ñïèñêå òåì.

„îñòóï ê óêàçàííîìó â âàðèàíòå çàäàíèß óçëó êëàñòåðà âûïîëíßåòñß ñ èñïîëüçîâàíèåì ëþáîãî SSH-êëèåíòà (íàïðèìåð Ð Putty), äëß ïåðåíîñà ôàéëîâ ìåæäó êëèåíòñêèì êîìïüþòåðîì è êëàñòåðîì ìîæíî èñïîëüçîâàòü ëþáîé SCP-êëèåíò (íàïðèìåð Ð WinSCP). Žáå ïðîãðàììû ßâëßþòñß ñâîáîäíî ðàñïðîñòðàíßåìûìè, íå òðåáóþò óñòàíîâêè ñ àäìèíèñòðàòîðñêèìè ïðàâàìè è ìîãóò áûòü ñêà÷àíû èç èíòåðíåòà è çàïóùåíû ñ ëþáîãî íîñèòåëß.

„ëß ñîçäàíèß ïðîåêòà íà CUDA ìîæíî îðèåíòèðîâàòüñß íà òåõíîëîãèþ, îïèñàííóþ â ôàéëå /home/samples/readme.txt, ñêîïèðîâàòü â ñâîé êàòàëîã è èñïîëüçîâàòü ôàéë /home/samples/CUDA/Makefile (ïðè íåîáõîäèìîñòè Ð àäàïòèðîâàòü åãî ïîä ñâîè ïàðàìåòðû, íàïðèìåð, èìåíà ôàéëîâ).

„ëß êîìïèëßöèè ïðîåêòà íà OpenCL ìîæíî èñïîëüçîâàòü ñêðèïò createMMul.sh èç êàòàëîãà /home/samples/openCl (ñêîïèðîâàòü åãî â ñâîé êàòàëîã è ïðè íåîáõîäèìîñòè àäàïòèðîâàòü ïîä ñâîè ïàðàìåòðû, íàïðèìåð, èìåíà ôàéëîâ). ‚ ýòîì æå êàòàëîãå íàõîäèòñß ïðèìåð òåêñòà ïðîãðàììû íàïèñàííîé íà OpenCL.

„ëß êîìïèëßöèè MPI-ïðîãðàìì íóæíî èñïîëüçîâàòü ñêðèïò /usr/lib64/mpich/bin/mpicc (èëè /usr/lib64/mpich/bin/mpic++). �àðàìåòðû ýòîìó ñêðèïòó çàäàþòñß òàê æå, êàê è êîìïèëßòîðó gcc. „ëß çàïóñêà MPI-ïðîãðàìì íóæíî èñïîëüçîâàòü óòèëèòó /usr/lib64/mpich/bin/mpirun (èëè /usr/lib64/mpich/bin/mpiexec), çàäàâàß ñëåäóþùèå êëþ÷è è ïàðàìåòðû:

-n <êîë-âî ïðîöåññîâ> <ïóòü ê çàïóñêàåìîé MPI-ïðîãðàììå è åå ïàðàìåòðû

Žáùèå òðåáîâàíèß è ðåêîìåíäàöèè.

‚ êàæäîé ðàáîòå äîëæíû áûòü ðàçðàáîòàíû è ïîñëåäîâàòåëüíûé, è ïàðàëëåëüíûé âàðèàíò ïðîãðàììû ðåøåíèß çàäà÷è. �å äîëæíà òðåáîâàòüñß ïåðåêîìïèëßöèß äëß çàïóñêà ïðîãðàììû/ïðîãðàìì äëß ðàçëè÷íûõ âàðèàíòîâ èñõîäíûõ äàííûõ. „îëæíî áûòü ðåàëèçîâàíî ïðîãðàììíîå ñðàâíåíèå ðåçóëüòàòîâ ïîñëåäîâàòåëüíûõ è ïàðàëëåëüíûõ âû÷èñëåíèé íà ñîâïàäåíèå, è èçìåðåíû âðåìåííûå çàòðàòû íà êàæäûé âàðèàíò äëß ðàçëè÷íûõ ñòåïåíåé ðàñïàðàëëåëèâàíèß è, âîçìîæíî, ñ ðàçíûìè âõîäíûìè äàííûìè.

�åîáõîäèìî äîáèòüñß òîãî, ÷òîáû ïàðàëëåëüíûé âàðèàíò ðàáîòàë áûñòðåå ïîñëåäîâàòåëüíîãî. „ëß êàæäîé çàäà÷è äîëæíû áûòü ïðîâåäåíû íåñêîëüêî âû÷èñëèòåëüíûõ ýêñïåðèìåíòîâ (ñ ðàçëè÷íîé ñòåïåíüþ ïàðàëëåëèçìà èëè ðàçëè÷íûìè âõîäíûìè äàííûìè, É), èõ ðåçóëüòàòû äîëæíû áûòü îòîáðàæåíû â ðàñ÷åòíî-ãðàôè÷åñêîé ðàáîòå â ôîðìå ãðàôèêîâ èëè òàáëèö ñ îáúßñíåíèåì õàðàêòåðà çàâèñèìîñòåé âðåìåíè âû÷èñëåíèé îò âàðüèðóåìûõ ïàðàìåòðîâ.

„ëß èçìåðåíèß äëèòåëüíîñòè âðåìåííûõ èíòåðâàëîâ �… ñëåäóåò èñïîëüçîâàòü ôóíêöèþ clock(), ýòî ñëèøêîì ãðóáûé èíñòðóìåíò. ‚ìåñòî íåå íóæíî èñïîëüçîâàòü ëèáî omp_get_wtime() (ýòî òðåáóåò âêëþ÷åíèß çàãîëîâî÷íîãî ôàéëà omp.h), ëèáî MPI_Wtime() (ýòî òðåáóåò âêëþ÷åíèß çàãîëîâî÷íîãî ôàéëà omp.h), ëèáî clock_gettime() èëè gettimeofday() (èìåþùèåñß â Linux, íî îòñóòñòâóþùèå â MS Windows). ˆíôîðìàöèþ ïî ïîñëåäíèì äâóì ôóíêöèßì ñòóäåíò äîëæåí ñàìîñòîßòåëüíî íàéòè â èíòåðíåòå.

‹þáûå èñõîäíûå äàííûå äîëæíû çàäàâàòüñß â êîìàíäíîé ñòðîêå çàïóñêà ïðîãðàììû è, âîçìîæíî, ñ÷èòûâàòüñß èç óêàçàííîãî â íåé ôàéëà (ôàéëîâ), ò.å. îíè íå äîëæíû çàäàâàòüñß/îïðåäåëßòüñß êàê êîíñòàíòû â ðàçðàáàòûâàåìîé ïðîãðàììå. „ëß ãåíåðàöèè èñõîäíûõ äàííûõ áîëüøîãî îáúåìà (ìàòðèöû, ãðàôû, ñèñòåìû êîýôôèöèåíòîâ óðàâíåíèé è ò.ä.) ñëåäóåò èñïîëüçîâàòü óòèëèòó genData.exe, êîòîðóþ ìîæíî ñêà÷àòü ñ ñàéòà äèñöèïëèíû.

Žáúåìíûå ðåçóëüòàòû âû÷èñëåíèé äîëæíû âûâîäèòüñß â ôàéë/ôàéëû, äëß íèõ òàêæå äîëæíî áûòü ðåàëèçîâàíî ïðîãðàììíîå ñðàâíåíèå ðåçóëüòàòîâ ïîñëåäîâàòåëüíûõ è ïàðàëëåëüíûõ âû÷èñëåíèé íà ñîâïàäåíèå. �åáîëüøèå ïî îáúåìó ðåçóëüòàòû ìîãóò âûâîäèòüñß íà êîíñîëü. ‚ûâîäèòüñß äîëæíû âñå äàííûå, íåîáõîäèìûå äëß ïðîâåðêè ïîëó÷åííîãî ðåçóëüòàòà. �àïðèìåð, åñëè òðåáóåòñß íàéòè äâà ÷èñëà, èìåþùèå îäèíàêîâîå êîëè÷åñòâî ïðîñòûõ äåëèòåëåé, òî êðîìå íàéäåííûõ ÷èñåë äîëæíû áûòü âûâåäåíû è ïåðå÷íè èõ äåëèòåëåé. „ëß êàæäîé çàäà÷è ñòóäåíò äîëæåí ïðîäóìàòü, ÷òî è â êàêîì âèäå îí áóäåò âûâîäèòü â êà÷åñòâå ðåçóëüòàòà ðàáîòû ïðîãðàììû. �å ñëåäóåò âûâîäèòü áîëüøèå èçáûòî÷íûå îáúåìû äàííûõ.

Šàæäàß ïàðàëëåëüíàß ïðîãðàììà äîëæíà àâòîìàòè÷åñêè íàñòðàèâàòüñß íà ìàêñèìàëüíî äîñòóïíîå (èëè çàäàâàåìîå ïðè åå çàïóñêå) êîëè÷åñòâî ïîòîêîâ/óçëîâ/ßäåð/âåòâåé/É

�ðè ðåøåíèè çàäà÷, ñâßçàííûõ ñ öåëûìè ÷èñëàìè, ñëåäóåò ðàáîòàòü â 64-ðàçðßäíîì äèàïàçîíå (èñïîëüçîâàòü òèïû äàííûõ unsigned long long èëè __int64).

�ðè ðåøåíèè çàäà÷, ñâßçàííûõ ñ ïðîñòûìè ÷èñëàìè, ñëåäóåò èñïîëüçîâàòü äëß èõ íàõîæäåíèß àëãîðèòì "ðåøåòî �ðàòîñôåíà" èëè áîëåå ïðîèçâîäèòåëüíûé, ëèáî èñïîëüçîâàòü â êà÷åñòâå èñõîäíûõ äàííûõ ôàéëû ñ çàðàíåå âû÷èñëåííûìè ïðîñòûìè ÷èñëàìè, íàïðèìåð Ð ñ ñàéòà http://primes.utm.edu/lists/small/millions/.

‚ñå ðåçóëüòàòû âûïîëíåíèß ëàáîðàòîðíûõ ðàáîò äîëæíû ñîõðàíßòüñß â ëè÷íîì êàòàëîãå ñòóäåíòà (/home/avt<yourGroup>-v<N>) â îòäåëüíûõ ïîäêàòàëîãàõ ñ èìåíàìè, ñîîòâåòñòâóþùèìè íîìåðó ðàáîòû (íàïðèìåð, /home/avt<yourGroup>-v<N>/lr1, /home/avt<yourGroup>-v<N>/lr2, É). �îäêàòàëîãè ñîçäàþòñß ñòóäåíòîì ñàìîñòîßòåëüíî.

�îñëå îòëàäêè ïîñëåäîâàòåëüíîé è ïàðàëëåëüíîé âåðñèé ïðîãðàììû ðåøåíèß çàäà÷è è ïðîâåäåíèß ñåðèè âû÷èñëèòåëüíûõ ýêñïåðèìåíòîâ ñòóäåíò ïèøåò è çàãðóæàåò â ñèñòåìó DiSpace ïîäðîáíóþ èíñòðóêöèþ ïî ñáîðêå è çàïóñêó ïðîãðàììû (âûïîëíèâ ñáîðêó è ñîõðàíèâ èñïîëíßåìóþ ïðîãðàììó/ïðîãðàììû â ïîäêàòàëîãå äàííîé ðàáîòû) â ôîðìàòå MS Word ôàéëà. „àòîé âûïîëíåíèß è ñäà÷è ðàáîòû ñ÷èòàåòñß èìåííî ýòîò ìîìåíò, ïîñëå ÷åãî ïðåïîäàâàòåëü ïðîâåðßåò ðàáîòó è ôîðìèðóåò îöåíî÷íûé áàëë ñîãëàñíî áàëëüíî-ðåéòèíãîâîé ñèñòåìå àòòåñòàöèè. ˆíñòðóêöèß äîëæíà ñîäåðæàòü ïîñòàíîâêó çàäà÷è è åå íîìåð â ñïèñêå. Žò÷åòû ïî îòäåëüíûì ëàáîðàòîðíûì ðàáîòàì íå ãîòîâßòñß è íå ñäàþòñß, âìåñòî íèõ ïîñëå âûïîëíåíèß âñåõ ðàáîò ñòóäåíò ôîðìèðóåò ñâîäíûé îò÷åò Ð ðàñ÷åòíî-ãðàôè÷åñêóþ ðàáîòó. �åðåñìîòð âûñòàâëåííîãî áàëëà ìîæåò ïðîèçâîäèòüñß ïðåïîäàâàòåëåì òîëüêî â èñêëþ÷èòåëüíûõ ñèòóàöèßõ, ïîýòîìó ñòóäåíò äîëæåí âíèìàòåëüíî ïðîâåðßòü ñîîòâåòñòâèå ïðåäúßâëßåìûõ äëß ïðîâåðêè ðåçóëüòàòîâ ïåðå÷èñëåííûì çäåñü òðåáîâàíèßì è ðåêîìåíäàöèßì.

�îñëå ïðèåìà ïðåïîäàâàòåëåì êàæäîé ðàáîòû èç ñîîòâåòñòâóþùåãî ïîäêàòàëîãà ñòóäåíò äîëæåí óäàëèòü ñêîìïèëèðîâàííûå èñïîëíßåìûå ïðîãðàììû, îáúåêòíûå ôàéëû è âõîäíûå/âûõîäíûå ôàéëû äàííûõ, îáúåì êîòîðûõ ïðåâûøàåò åäèíèöû êèëîáàéò. Žñòàâèòü â äîìàøíåì êàòàëîãå ñëåäóåò òîëüêî èñõîäíûå êîäû ïðîãðàìì è, âîçìîæíî, ñêðèïòû èëè makefileÕû. �ðè ñäà÷å çà÷åòà ïðåïîäàâàòåëü ïðîâåðßåò ñòåïåíü Çî÷èñòêèÈ ëè÷íîãî êàòàëîãà ñòóäåíòà è ìîæåò ñíèçèòü èòîãîâûé áàëë ïî äèñöèïëèíå â ñëó÷àå îáíàðóæåíèß ëèøíèõ ôàéëîâ.

�åâûïîëíåíèå ëþáîãî èç ïåðå÷èñëåííûõ âûøå òðåáîâàíèé ìîæåò ïðèâåñòè ê ñíèæåíèþ áàëëà îöåíêè ðàáîòû ïî ñðàâíåíèþ ñ ìàêñèìàëüíûì áàëëîì.

Šàòåãîðè÷åñêè çàïðåùàåòñß çàãðóæàòü íà ñåðâåð ïðîåêòû (â âèäå äåðåâà êàòàëîãîâ) IDE MS Visual Studio (èëè äðóãèõ IDE ñèñòåìû MS Windows). ‡àãðóæàòü ìîæíî ’Ž‹œŠŽ èñõîäíûå òåêñòû ïðîãðàìì (ôàéëû òèïîâ .c .cpp .h .hpp).

Šàòåãîðè÷åñêè çàïðåùàåòñß çàãðóæàòü íà ñåðâåð îò÷åòû è/èëè èíñòðóêöèè ïî ëàáîðàòîðíûì ðàáîòàì â ëþáîì ôîðìàòå.

Šàòåãîðè÷åñêè çàïðåùàåòñß äàæå êðàòêîâðåìåííî ïðåâûøàòü ëèìèò 10 Mb ñóììàðíîãî îáúåìà âñåõ ôàéëîâ ëè÷íîãî êàòàëîãà. ˆñêëþ÷åíèß âîçìîæíû òîëüêî ïî ñîãëàñîâàíèþ ñ ïðåïîäàâàòåëåì.

Šàòåãîðè÷åñêè çàïðåùàåòñß èñïîëüçîâàòü ðåñóðñû, âûäåëåííûå äëß âûïîëíåíèß ëàáîðàòîðíûõ ðàáîò, â êàêèõ áû òî íè áûëî ïîñòîðîííèõ öåëßõ, ýòî ìîæåò ïðèâåñòè íå òîëüêî ê ñíèæåíèþ áàëëîâ ïðè àòòåñòàöèè, íî è ê ëèøåíèþ äîñòóïà ê ñèñòåìå, ò.å. ê íåâîçìîæíîñòè ñäà÷è çà÷åòà ïî äèñöèïëèíå.

€äìèíèñòðàòîð âû÷èñëèòåëüíîãî êëàñòåðà è ïðåïîäàâàòåëü âûïîëíßþò ìîíèòîðèíã èñïîëüçîâàíèß ðåñóðñîâ ñèñòåìû ñ öåëüþ ïðåäîòâðàùåíèß íåöåëåâîãî èñïîëüçîâàíèß ðåñóðñîâ èëè ïðåâûøåíèß óñòàíîâëåííûõ ëèìèòîâ.

�àñ÷åòíî-ãðàôè÷åñêàß ðàáîòà

�ƒ� îôîðìëßåòñß â ýëåêòðîííîì âèäå â êà÷åñòâå ñâîäíîãî îò÷åòà ïî âñåì âûïîëíåííûì ëàáîðàòîðíûì ðàáîòàì. ‘îäåðæàíèåì �ƒ� äîëæíî áûòü:

‒         ïîñòàíîâêà çàäà÷ ïî òåìå êàæäîé ðàáîòû;

‒         òî÷íîå îïèñàíèå ïîñëåäîâàòåëüíûõ è ïàðàëëåëüíûõ àëãîðèòìîâ ðåøåíèß çàäà÷ (æåëàòåëüíî Ð â ãðàôè÷åñêîì, âîçìîæíî Ð â ñòðóêòóðèðîâàííîì òåêñòîâîì âèäå);

‒         ðåçóëüòàòû ñåðèé âû÷èñëèòåëüíûõ ýêñïåðèìåíòîâ (òàáëèöû è/èëè ãðàôèêè çàâèñèìîñòåé âðåìåíè âû÷èñëåíèé îò ñòåïåíè ðàñïàðàëëåëèâàíèß è çíà÷åíèé èñõîäíûõ äàííûõ) ñ îáúßñíåíèåì õàðàêòåðà ýòèõ çàâèñèìîñòåé.

Šîäû ðàçðàáîòàííûõ ïðîãðàìì íóæíî ðàçìåùàòü â ïðèëîæåíèè ê �ƒ�.

‘âîäíûé îò÷åò, ò.å. �ƒ�, çàãðóæàåòñß â ñèñòåìó DiSpace èëè îòïðàâëßåòñß íà ýëåêòðîííóþ ïî÷òó ïðåïîäàâàòåëß â ýëåêòðîííîì âèäå â ôîðìàòå MS Word (îò÷åòû â äðóãèõ ôîðìàòàõ íå ïðèíèìàþòñß).

Žöåíî÷íûé áàëë çà âûïîëíåííóþ �ƒ� âûñòàâëßåòñß â çàâèñèìîñòè îò ïîëíîòû è êà÷åñòâà ïðîäåëàííîé ðàáîòû. ’àêæå ñòîèò ó÷èòûâàòü, ÷òî ïðè îòñóòñòâèè â îò÷åòå èëè íåâûïîëíåíèè îäíîé èç ëàáîðàòîðíûõ ðàáîò îöåíî÷íûé áàëë óìåíüøàåòñß íà 4, ò.å. ìàêñèìàëüíûé âåñ êàæäîé ðàáîòû ñîñòàâëßåò 4 áàëëà â îò÷åòå �ƒ� (ïîäðîáíåå î ïîðßäêå àòòåñòàöèè ìîæíî óçíàòü çäåñü: http://vt.cs.nstu.ru/~malyavko/ParProgrO/Rating.htm).