Журнал LinuxFormat - перейти на главную

LXF167:Вы­чис­лять па­рал­лель­но

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Категория: Учебники == Па­рал­лель­ные тех­но­ло­гии. == ''Ев­ге­ний Бал­дин за­ду­мы­в…»)
 
(Па­рал­лель­ные тех­но­ло­гии.)
 
Строка 2: Строка 2:
 
== Па­рал­лель­ные тех­но­ло­гии. ==
 
== Па­рал­лель­ные тех­но­ло­гии. ==
 
''Ев­ге­ний Бал­дин за­ду­мы­ва­ет­ся о бу­ду­щем про­грам­ми­ро­ва­ния и при­хо­дит к вы­во­ду, что без па­рал­ле­лиз­ма ему не жить.''
 
''Ев­ге­ний Бал­дин за­ду­мы­ва­ет­ся о бу­ду­щем про­грам­ми­ро­ва­ния и при­хо­дит к вы­во­ду, что без па­рал­ле­лиз­ма ему не жить.''
[[Файл: |left |100px |thumb|'''Наш эксперт''' Ев­ге­ний Бал­дин Физик, который действительно знает, что такое нехватка вычислительных ресурсов.]]  
+
[[Файл: Baldin_2013_opt.png|left |100px |thumb|'''Наш эксперт''' Ев­ге­ний Бал­дин Физик, который действительно знает, что такое нехватка вычислительных ресурсов.]]  
 
Я ду­маю, что все, кто чи­та­ет эти стро­ки, как-то уме­ют про­грам­ми­ро­вать: в со­вре­мен­ном ми­ре уметь ис­поль­зо­вать ком­пь­ю­тер эф­фек­тив­но, то есть пе­ре­ва­ли­вать на него ту­пую и нуд­ную ра­бо­ту – это необ­хо­ди­мость. Ну, или хо­тя бы зна­ют, что та­кое ал­го­ритм – на­бор ин­ст­рук­ций, опи­сы­ваю­щий по­ря­док дей­ст­вия ис­полните­ля. Дру­гое де­ло, что поч­ти все, за ис­клю­чением очень неболь­шо­го чис­ла уз­ких спе­циа­ли­стов, под сло­вом «ал­го­ритм» понима­ют тра­ди­ци­он­ную по­сле­до­ва­тель­ную па­ра­диг­му, где сло­во «по­ря­док» под­ме­ня­ет сло­во «по­сле­до­ва­тель­ность». По­ра это ме­нять, и чем рань­ше это слу­чит­ся и чем с боль­шим чис­лом лю­дей – тем луч­ше.
 
Я ду­маю, что все, кто чи­та­ет эти стро­ки, как-то уме­ют про­грам­ми­ро­вать: в со­вре­мен­ном ми­ре уметь ис­поль­зо­вать ком­пь­ю­тер эф­фек­тив­но, то есть пе­ре­ва­ли­вать на него ту­пую и нуд­ную ра­бо­ту – это необ­хо­ди­мость. Ну, или хо­тя бы зна­ют, что та­кое ал­го­ритм – на­бор ин­ст­рук­ций, опи­сы­ваю­щий по­ря­док дей­ст­вия ис­полните­ля. Дру­гое де­ло, что поч­ти все, за ис­клю­чением очень неболь­шо­го чис­ла уз­ких спе­циа­ли­стов, под сло­вом «ал­го­ритм» понима­ют тра­ди­ци­он­ную по­сле­до­ва­тель­ную па­ра­диг­му, где сло­во «по­ря­док» под­ме­ня­ет сло­во «по­сле­до­ва­тель­ность». По­ра это ме­нять, и чем рань­ше это слу­чит­ся и чем с боль­шим чис­лом лю­дей – тем луч­ше.
  

Текущая версия на 12:04, 9 ноября 2018

[править] Па­рал­лель­ные тех­но­ло­гии.

Ев­ге­ний Бал­дин за­ду­мы­ва­ет­ся о бу­ду­щем про­грам­ми­ро­ва­ния и при­хо­дит к вы­во­ду, что без па­рал­ле­лиз­ма ему не жить.

(thumbnail)
Наш эксперт Ев­ге­ний Бал­дин Физик, который действительно знает, что такое нехватка вычислительных ресурсов.

Я ду­маю, что все, кто чи­та­ет эти стро­ки, как-то уме­ют про­грам­ми­ро­вать: в со­вре­мен­ном ми­ре уметь ис­поль­зо­вать ком­пь­ю­тер эф­фек­тив­но, то есть пе­ре­ва­ли­вать на него ту­пую и нуд­ную ра­бо­ту – это необ­хо­ди­мость. Ну, или хо­тя бы зна­ют, что та­кое ал­го­ритм – на­бор ин­ст­рук­ций, опи­сы­ваю­щий по­ря­док дей­ст­вия ис­полните­ля. Дру­гое де­ло, что поч­ти все, за ис­клю­чением очень неболь­шо­го чис­ла уз­ких спе­циа­ли­стов, под сло­вом «ал­го­ритм» понима­ют тра­ди­ци­он­ную по­сле­до­ва­тель­ную па­ра­диг­му, где сло­во «по­ря­док» под­ме­ня­ет сло­во «по­сле­до­ва­тель­ность». По­ра это ме­нять, и чем рань­ше это слу­чит­ся и чем с боль­шим чис­лом лю­дей – тем луч­ше.

Этот текст яв­ля­ет­ся вве­дением в цикл ста­тей, ко­то­рый я за­те­ял с це­лью лик­бе­за по па­рал­лель­ным тех­но­ло­ги­ям. Этим тех­но­ло­ги­ям нам во­лей-нево­лей при­дет­ся как-то обу­чить­ся, так как ино­го спо­со­ба по­вы­сить ско­рость вы­полнения про­грам­мы в обо­зри­мом бу­ду­щем не пред­ви­дит­ся. В на­столь­ных ком­пь­ю­те­рах и те­ле­фо­нах те­перь рас­тет не час­то­та про­цес­со­ра, а чис­ло ядер. Про­бле­ма освоения па­рал­лель­ных ал­го­рит­мов те­перь вста­ет в пол­ный рост поч­ти пе­ред лю­бым про­грам­ми­стом – и бу­дет сто­ят до тех пор, по­ка от­сут­ст­ву­ют вол­шеб­ные рас­па­рал­ле­ли­ваю­щие ком­пи­ля­то­ры.

Ос­нов­ная про­бле­ма с па­рал­ле­ли­за­ци­ей уже су­ще­ст­вую­щих и хо­ро­шо про­ве­рен­ных на прак­ти­ке ал­го­рит­мов за­клю­ча­ет­ся в том, что да­ле­ко не все их мож­но раз­бить на неза­ви­си­мо вы­пол­няе­мые фраг­мен­ты. Да­же ес­ли дать со­вре­мен­но­му ком­пи­ля­то­ру сто ты­сяч про­цес­со­ров, он не смо­жет в об­щем слу­чае без под­сказ­ки про­грам­ми­ста до­бить­ся сколь­ко-нибудь зна­чи­мо­го при­роста про­из­во­ди­тель­но­сти. По­это­му на се­го­дня вме­няе­мая па­рал­ле­ли­за­ция ле­жит на че­ло­ве­че­­ском уровне, то есть поч­ти все при­хо­дит­ся де­лать вруч­ную. Это как воз­врат ко вре­ме­нам, когда оп­ти­ми­зи­рую­щие ком­пи­ля­то­ры с язы­ков вы­со­ко­го уров­ня бы­ли не спо­соб­ны со­рев­но­вать­ся с про­грам­ми­ста­ми на ас­семб­ле­ре. Со вре­менем это по­ме­ня­ет­ся, но для это­го нуж­но соз­дать хо­ро­шо под­го­тов­лен­ное и ква­ли­фи­ци­ро­ван­ное со­об­ще­ст­во, го­то­вое пи­сать, тес­ти­ро­вать, да и про­сто ис­поль­зо­вать но­вые ин­ст­ру­менты и по­ня­тия.

Идея цик­ла поя­ви­лась у ме­ня, когда я ра­ди ин­те­ре­са за­брел в Ин­сти­тут вы­чис­ли­тель­ной ма­те­ма­ти­ки и ма­те­ма­ти­че­­ской гео­фи­зи­ки на двух­днев­ную «Шко­лу по па­рал­лель­но­му про­грам­ми­ро­ванию гиб­рид­ных кла­сте­ров», где вкрат­це зна­ко­ми­ли с тех­но­ло­гия­ми MPI и CUDA. Вто­рую часть прак­ти­че­­ских за­ня­тий я час­тич­но про­иг­но­ри­ро­вал, так как был за­нят уго­ва­ри­ванием ве­ду­щих за­ня­тия Ми­хаи­ла Ос­тап­ке­ви­ча и Кон­стан­ти­на Кал­ги­на вклю­чить­ся в про­цесс ли­к­ви­да­ции без­гра­мот­но­сти ок­ру­жаю­щих, и ме­ня в ча­ст­но­сти, на бо­лее ли­те­ра­тур­ном уровне.

Я ни в ко­ем слу­чае не бу­ду един­ст­вен­ным ав­то­ром ста­тей цик­ла, так как не яв­ля­юсь спе­циа­ли­стом в этом во­про­се. Как и в слу­чае цик­ла по сво­бод­ной сис­те­ме ана­ли­за R, ко­то­рый пуб­ли­ко­вал­ся в Linux Format с 2008 по 2010 го­ды, ста­тьи бу­дут пи­сать раз­ные лю­ди. Я же бу­ду вы­пол­нять роль ко­ор­ди­на­то­ра и «при­че­сы­ва­те­ля тек­ста». В слу­чае с R та­кая стра­те­гия при­ве­ла в 2012 го­ду к из­данию пер­вой тол­стой книги по R в России «На­гляд­ная ста­ти­сти­ка. Ис­поль­зу­ем R!» за ав­тор­ст­вом А. Б. Ши­пу­но­ва и шес­ти его спод­вижников (я то­же удо­сто­ил­ся чес­ти стать одним из них). Есть на­де­ж­да, что и в слу­чае это­го цик­ла то­же уда­ст­ся со­брать ма­те­ри­ал для боль­шой и серь­ез­ной, хоть и по­пу­ляр­ной, ли­те­ра­тур­ной фор­мы.

Пред­ва­ри­тель­ный план цик­ла ста­тей ни в ко­ем слу­чае не бу­дет ис­ти­ной в по­следней ин­стан­ции и лег­ко по­ме­ня­ет­ся в мо­мент, когда ко­го-то из уча­стников про­цес­са осве­тит свет­лая и ин­те­рес­ная идея, а так­же ес­ли внезап­но чис­ло уча­стников уве­ли­чится. По­ря­док ста­тей то­же весь­ма при­мер­ный: ста­тьи мо­гут как раз­де­лять­ся, ес­ли ин­фор­ма­ции слиш­ком мно­го, так и сли­вать­ся, ес­ли ее не хва­та­ет.

Часть по­тен­ци­аль­ных ав­то­ров ста­тей по­ка еще не в кур­се, что они бу­дут что-то пи­сать, и мне еще пред­сто­ит им об этом со­об­щить. Я так­же со­вер­шен­но не про­тив, ес­ли най­дут­ся эн­ту­зиа­сты, ко­то­рые со­об­щат об этом мне рань­ше, чем я най­ду их. Про­ще со свои­ми вне вся­ко­го со­мнения цен­ны­ми пред­ло­жения­ми, кри­ти­кой и со­ве­та­ми свя­зать­ся со мной по элек­трон­ной поч­те E.M.Baldin@inp.nsk.su. Все бу­дет при­ня­то с бла­го­дар­но­стью.

А те­перь, что­бы бы­ло что кри­ти­ко­вать, план рас­ска­зов на поч­ти год впе­ред:

» Фев­раль Об­щее вве­дение в цикл ста­тей. А так­же – об­щая ин­фор­ма­ция на те­му, как за­пускать про­грам­мы на ти­пич­ном кла­сте­ре. Па­рал­лель­ны­ми вы­чис­ления­ми мож­но занимать­ся и до­ма, но в слу­чае серь­ез­ных вы­чис­лений при­дет­ся при­бить­ся к че­му-то бо­лее серь­ез­но­му – на­при­мер, к бли­жай­ше­му универ­си­те­ту.

» Март MPI – стан­дарт для об­ме­на ин­фор­ма­ции ме­ж­ду про­цес­са­ми, вы­пол­няю­щи­ми од­ну и ту же за­да­чу. Хо­ро­шо под­хо­дит для со­вре­мен­ных «не силь­но» мно­го­ядер­ных про­цес­со­ров, хо­тя и ори­ен­ти­ро­ван в основ­ном на сис­те­мы с рас­пре­де­лен­ной па­мя­тью. На при­ме­ре иг­ры кле­точ­ных ав­то­ма­тов бу­дет по­ка­за­но, как мож­но раз­де­лить про­грам­му на два по­то­ка. Глав­ное – сле­дить за граница­ми раз­де­ления!

» Ап­рель–май CUDA – то, что сле­ду­ет при­ме­нять, ес­ли вы­чис­ления нуж­но про­де­лать здесь и сей­час. Для трениров­ки мож­но ис­поль­зо­вать со­вре­мен­ные кар­ты NVIDIA, а за от­но­си­тель­но ра­зум­ные день­ги мож­но по­лу­чить ки­ло­ватт­ную печ­ку с па­рой ты­сяч ядер на бор­ту. Ми­ну­сы – за­кры­тое про­грамм­ное обес­пе­чение, при­вя­зан­ное к од­но­му-един­ст­вен­но­му вен­до­ру, но за­то ра­бо­та­ет здесь и сей­час. Зна­чи­тель­ная те­ма.

» Июнь OpenCL – от­кры­тое стан­дарт­ное ок­ру­жение для на­пи­сания па­рал­лель­ных про­грамм. Это сред­ст­ва по­ка еще не так эф­фек­тив­но, как CUDA, за­то понем­но­гу проника­ет во все сфе­ры, вклю­чая мо­биль­ные те­ле­фо­ны и план­ше­ты. Так­же, в от­ли­чие от CUDA, OpenCL не при­вя­за­но к гра­фи­че­­ским уско­ри­те­лям и мо­жет ис­поль­зо­вать­ся на клас­си­че­­ских мно­го­про­цес­сор­ных сис­те­мах, и да­же кое-кем ис­поль­зу­ет­ся для про­грам­ми­ро­вания FPGA (ПЛИС – про­грам­ми­руе­мая ло­ги­че­­ская ин­те­граль­ная схе­ма). Воз­мож­но, это бу­ду­щее па­рал­лель­но­го про­грам­ми­ро­вания.

» Июль вы­чис­ления@home – на­вер­ня­ка все слы­ша­ли про SETI@home. Это то­же ме­тод, по­зво­ляю­щий уско­рить свои вы­чис­ления. И хо­тя тут, ско­рее все­го, важнее со­ци­аль­ная ин­женерия, но и па­рал­лель­ное про­грам­ми­ро­вание то­же важ­но. Я как-то уже при­ста­вал к раз­ра­бот­чи­ком са­мо­го круп­но­го россий­ско­го про­ек­та это­го ро­да – SAT@home, с пред­ло­жением на­пи­сать ста­тью для LXF. По­про­бую в этот раз быть по­убе­ди­тельней. Как минимум, возь­му элек­трон­ное ин­тер­вью.

» Ав­густ GRID – па­рал­ле­лить мож­но не толь­ко ал­го­рит­мы, но и дан­ные. Боль­шой ад­рон­ный кол­лай­дер вы­да­ет про­сто ги­гант­ское чис­ло неза­ви­си­мых со­бы­тий, ка­ж­дое из ко­то­рых мож­но об­ра­ба­ты­вать на сво­ем лич­ном про­цес­со­ре. Да, тут все ПО од­но­по­точ­ное, но умение дер­жать всю эту ора­ву раз­но­шер­ст­ных яче­ек в уз­де при­шло не са­мо со­бой, и этот опыт тре­бу­ет осмыс­ления.

» Сен­тябрь Ди­на­ми­че­­ский вир­ту­аль­ный вы­чис­ли­тель­ный кла­стер – по­зво­ля­ет на­пле­вать на осо­бен­но­сти кла­стер­ной ин­фра­струк­ту­ры ре­аль­ных мощ­но­стей и от­но­си­тель­но лег­ко пе­ренести свое род­ное и при­выч­ное ок­ру­жение на дру­гие же­лез­ные рель­сы. Это из се­рии «голь на вы­дум­ки хит­ра», или – как ис­поль­зо­вать универ­си­тет­ские мощ­но­сти, ниче­го не ме­няя в сво­ем ПО.

Кро­ме ста­тей о про­грам­ми­ро­вании, есть же­лание опи­сать «же­лез­ные» плат­фор­мы, на ко­то­рых мож­но по­счи­тать что-то па­рал­лель­ным об­ра­зом. В ка­ком по­ряд­ке они поя­вят­ся и ме­ж­ду ка­ки­ми стать­я­ми вста­вят­ся, в зна­чи­тель­ной сте­пени за­ви­сит от то­го, в ка­кой мо­мент бу­дет по­лу­чен доступ к «те­лу» и сколь­ко вре­мени уй­дет на его «пре­па­ри­ро­вание». С мо­ей сто­ро­ны я обя­за­тель­но рас­ска­жу про про­ект Parallella (http://www.parallella.org/) – мно­го­ядер­ный со­про­цес­сор на пла­те с по­треб­лением 5 Вт и стои­мо­стью в 100 дол­ла­ров. Это ско­рее об­ра­зо­ва­тель­ный про­ект, но с че­го-то нуж­но же на­чи­нать ра­бо­тать до­ма. Дру­гим кан­ди­да­том на «ви­ви­сек­цию» безуслов­но яв­ля­ет­ся мо­дуль Tesla от ком­пании Nvidia – ре­аль­но мощ­ный каль­ку­ля­тор; прав­да, им нуж­но уметь поль­зо­вать­ся. Так­же есть на­де­ж­да по­лу­чить доступ к но­во­му HPC-про­цес­со­ру от Intel® Xeon® Phi и да­же к вы­чис­ли­тель­ной сис­те­ме на FPGA.

Итак: есть за­дум­ки для 12 ста­тей. Ка­кие-то из них на­вер­ня­ка не уда­дут­ся, но я на­де­юсь, что им на сме­ну в со­об­ще­ст­ве эн­ту­зиа­стов возник­нут но­вые идеи!

[править] ПО для ра­бо­ты с кла­сте­ром

Безуслов­но, занимать­ся па­рал­лель­ным про­грам­ми­ро­ванием мож­но и до­ма на ко­лен­ке. Бо­лее то­го, все при­ме­ры пе­ред пуб­ли­ка­ция­ми бу­дут оп­ро­бо­ва­ны на до­машнем ком­пь­ю­те­ре. Да, мож­но на кар­ман­ные день­ги ку­пить рас­по­след­нюю Nvidia ® Tesla ® и за­нять­ся до­бы­чей бит­койнов, или об­ра­бот­кой ну очень боль­ших фо­то­сним­ков. Но серь­ез­ные вы­чис­ли­тель­ные мощ­но­сти и до­ро­гие плат­фор­мы обыч­но хра­нят­ся за пре­де­ла­ми уют­ных до­машних квар­тир, а имен­но на спе­циа­ли­зи­ро­ван­ных кла­сте­рах.

В ка­че­­ст­ве при­ме­ра я при­ве­ду Ин­фор­ма­ци­он­но-вы­чис­ли­тель­ный центр Но­во­си­бир­ско­го го­су­дар­ст­вен­но­го универ­си­те­та (http://www.nusc.ru/). Там ра­бо­та­ют до­воль­но гра­мот­ные спе­циа­ли­сты, по­это­му мож­но с удо­воль­ст­ви­ем по­бро­дить по странич­кам цен­тра, по­гля­деть на ста­ти­сти­ку, по­чи­тать до­ку­мен­та­цию, осоз­нать, что до сто­про­цент­ной за­груз­ки цен­тру весь­ма да­ле­ко... и это нор­маль­но. Пи­ко­вые мощ­но­сти ни в ко­ем слу­чае не долж­ны быть сравнимы со средней за­груз­кой. Ес­ли вы жи­ве­те в круп­ном го­ро­де, то у вас по­бли­зо­сти га­ран­ти­ро­ван­но есть по­доб­ный центр, ку­да мож­но схо­дить/до­го­во­рить­ся об ис­поль­зо­вании. Ес­ли вы сту­дент универ­си­те­та, то сле­ду­ет про­сто пой­ти на со­от­вет­ст­вую­щий спец­курс. Не­ко­то­рые из вы­чис­ли­тель­ных цен­тров ве­дут ком­мер­че­скую дея­тель­ность, тор­гуя мощ­но­стя­ми в об­мен на раз­но­го ро­да ре­сур­сы. В крайнем слу­чае, мож­но при­ку­пить немнож­ко «Ама­зон­ско­го об­ла­ка». В об­щем, всегда возмож­но най­ти тот или иной спо­соб при­це­пить­ся к кла­сте­ру. Что же вас там ожидает?

Во-пер­вых, сле­ду­ет осо­зна­вать, что все кла­сте­ры ра­бо­та­ют под управ­лением то­го или ино­го ди­ст­ри­бу­ти­ва GNU/Linux. В Се­ти хо­дит до­воль­но смеш­ной рас­сказ, как од­на боль­шая и мяг­кая фир­ма с пом­пой от­кры­ва­ла кла­стер в Том­ском универ­си­те­те под сво­ей про­прие­тар­ной сис­те­мой, ори­ен­ти­ро­ван­ной на вы­со­ко­про­из­во­ди­тель­ное вы­чис­ления. Когда пом­па утих­ла, а в цен­траль­ных га­зе­тах бы­ли на­пи­са­ны со­от­вет­ст­вую­щие хва­леб­ные ста­тьи, сис­тем­ные ад­минист­ра­то­ры на мес­те, хмык­нув, снес­ли эту сис­те­му и уста­но­ви­ли то, что го­дит­ся для ра­бо­ты и при­выч­но поль­зо­ва­те­лям. В этой сфе­ре GNU/Linux не нуж­но по­бе­ж­дать – он там есть и яв­ля­ет­ся стан­дар­том.

Как след­ст­вие, доступ идет че­рез SSH. Вас, ско­рее все­го, по­про­сят при­слать от­кры­тую по­ло­вин­ку клю­ча, по­лу­чае­мо­го ко­ман­дой ssh-keygen. Вход по па­ро­лю не при­вет­ст­ву­ет­ся, так как поль­зо­ва­те­лей мно­го, а цен­тры пы­та­ют­ся взло­мать непре­рыв­но.

В си­лу боль­шо­го чис­ла поль­зо­ва­те­лей, никто не даст вам в ру­ки ма­ши­ну с до­ро­го­стоя­щим обо­ру­до­ванием, а по­па­де­те вы на один из госте­вых ком­пь­ю­те­ров, где вы смо­же­те со­брать свою про­грам­му и по­ста­вить ее в оче­редь на вы­полнение. На­де­юсь, вы чи­та­ли «Понедельник на­чи­на­ет­ся в суб­бо­ту» брать­ев Стру­гац­ких и помните, чем занимал­ся глав­ный ге­рой – При­ва­лов: он за­ве­до­вал вы­чис­ли­тель­ным цен­тром НИИ­Ча­Во, до ко­то­ро­го поль­зо­ва­те­ли не до­пуска­лись. Они толь­ко при­но­си­ли свои пач­ки пер­фо­карт, ко­то­рые, в свою оче­редь, в ма­ши­ну за­гру­жа­ли спе­ци­аль­ные техники в за­ви­си­мо­сти от на­ли­чия сво­бод­ных ре­сур­сов. Сей­час, конеч­но, не так все пе­чаль­но, и за­да­чу гру­зят не техники, а спе­ци­аль­ный планиров­щик за­дач; но, по­ста­вив свою за­да­чу в оче­редь, вы на нее никак по­вли­ять уже не мо­же­те, а мо­же­те толь­ко ждать ре­зуль­та­тов.

Планиров­щи­ки за­дач мо­гут быть как про­прие­тар­ны­ми, на­при­мер, Altair PBS Pro, так и сво­бод­ны­ми, та­ки­ми как TORQUE (форк OpenPBS) или Oracle Grid Engine (в де­ви­че­­ст­ве Sun Grid Engine). В этом слу­чае для ра­бо­ты с ними мож­но восполь­зо­вать­ся бо­лее-менее стан­дарт­ны­ми ути­ли­та­ми.

Тра­ди­ци­он­но в Unix для управ­ления оче­ре­дя­ми за­дания­ми [Batch Queues] со сто­ро­ны поль­зо­ва­те­ля за­ре­зер­ви­ро­ва­ны спе­ци­аль­ные ко­ман­ды: qalter, qdel, qhold, qmove, qmsg, qrerun, qrls, qselect, qsig, qstat и qsub. Как вся­кий древний стан­дарт, ка­ж­дая из команд об­росла ку­чей под­роб­но­стей, клю­чи­ков, пе­ре­мен­ных ок­ру­жения и усло­вий при­менения. Обыч­но для ра­бо­ты хва­тает трех команд:

» qsub – за­пуск за­даний;

» qstat – вы­вод ста­ти­сти­ки по за­даниям в оче­ре­ди;

» qdel – уда­ление за­дания из оче­ре­ди.

Ко­ман­де qsub нель­зя про­сто под­су­нуть ис­пол­няе­мый файл. Оный нуж­но за­пускать из спе­ци­аль­но сфор­ми­ро­ван­но­го скрип­та, где, кро­ме вы­зо­ва са­мо­го фай­ла, нуж­но пе­ре­дать сис­те­ме ин­фор­ма­цию о па­ра­мет­рах за­дания. На­при­мер, ти­пич­ная шап­ка мое­го за­дания в ок­ру­жении Sun Grid Engine вы­гля­дит так:

#!/usr/bin/perl -w
# SGE vars
# -------------------------------------------
# -- use perl --
#$ -S /usr/bin/perl
# -------------------------------------------
# -- batch name --
#$ -N analyze-run-log
# -------------------------------------------
# -- What to redirect to where --
#$ -cwd
#$ -o $JOB_NAME.$JOB_ID
#$ -j y
# -------------------------------------------
# -- Qeue list --
#$ -q remote
# -------------------------------------------
# -- mail me --
#$ -M E.M.Baldin@inp.nsk.su
#$ -m be
# -------------------------------------------

Тут па­ра­мет­ры пе­ре­да­ют­ся по­сле ком­би­на­ции сим­во­лов #$. Скрипт не обя­за­тель­но дол­жен быть на bash, ин­тер­пре­та­тор мож­но ука­зать с по­мо­щью клю­чи­ка -S, имя за­дания ука­зы­ва­ет­ся с по­мо­щью клю­чи­ка -Т, в ка­че­­ст­ве ра­бо­чей ди­рек­то­рии объ­яв­ля­ется те­ку­щая (-cwd), имя лог-фай­ла (-o) стро­ит­ся из имени за­да­чи и но­ме­ра за­дания, имя оче­ре­ди (-q) – remote, а все со­об­щения о на­ча­ле и окон­чании (-m) вы­полнения за­дания ве­ле­но от­сы­лать на мой e-mail (-M). Тут нет ника­ких оп­ре­де­лений на те­му, ка­кой ком­пь­ю­тер мне ну­жен и что на нем долж­но сто­ять, так что это за­дание по­ста­вит­ся без раз­бо­ра ку­да.

Ес­ли тре­бу­ет­ся уточнить, ка­кие имен­но ре­сур­сы нуж­ны для вы­полнения за­да­чи, на­при­мер: че­ты­ре OpenMP-про­цес­са, и ка­ж­до­му тре­бу­ет­ся по 2000 МБ ОЗУ, то строч­ка за­дания мо­жет вы­гля­деть как-то так:

#PBS -l select=1:ncpus=4:ompthreads=4:mem=2000m

Под­роб­но­сти сле­ду­ет уз­на­вать в до­ку­мен­та­ции, вы­ло­жен­ной на странич­ке кон­крет­но­го кла­сте­ра. Все, что пе­ре­чис­ле­но вы­ше, мож­но за­дать и в команд­ной стро­ке qsub, но клю­чи­ков и па­ра­мет­ров так мно­го, что луч­ше их за­пи­сы­вать в фай­ле за­дания.

Что­бы по­нять, ка­кие из за­даний за­пу­ще­ны, а ка­кие без­дельнича­ют, мож­но восполь­зо­вать­ся ути­ли­той qstat, толь­ко сле­ду­ет от­фильт­ро­вать свои за­дания, так как их мо­жет быть очень мно­го:

> qstat | grep baldin

247236 0.55500 BHABHA-118 baldin dr 12/29/2012 08:39:35 remote@sscc-142

249219 0.55500 JPSI2MUMUN baldin r 12/30/2012 13:23:51 remote@sscc-180

249363 0.55500 JPSI2EE-12 baldin qw 01/03/2013 15:06:19

Здесь три за­да­чи за мо­им именем. Од­на из них умер­ла (dr) и по ка­кой-то при­чине не бы­ла уда­ле­на из за­пи­си, од­на ра­бо­та­ет (r), а тре­тья ви­сит в оче­ре­ди. Мож­но уда­лить од­но из за­даний:

> qdel 249219

baldin has registered the job 249219 for deletion

Это, безуслов­но, не един­ст­вен­ный спо­соб об­щения с оче­ре­дью за­даний. В ча­ст­но­сти, сис­те­ма управ­ления оче­ре­дя­ми Simple Linux Utility for Resource Management (http://slurm.net), уста­нов­лен­ная на са­мом бы­ст­ром на конец 2012 го­да ком­пь­ю­те­ре из TOP500, име­ет свой соб­ст­вен­ный на­бор команд для по­ста­нов­ки за­да­чи в оче­редь, по­лу­чения ста­ти­сти­ки и пе­ре­да­чи за­данию сиг­на­лов от поль­зо­ва­те­ля. К сча­стью, во всех слу­ча­ях ло­ги­ка при­мер­но од­на и та же, по­это­му обу­чить­ся ей по мес­ту мож­но очень бы­­ст­ро. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика