Ресурсите на клъстера се управляват от системата за пакетно изпълнение на задачи Sun Grid Engine, версия 6.2, наричана за по-кратко SGE.

Задачи

Задачите са основните единици, с които оперира и управлява SGE. Представляват обикновени скриптове за потребителската обвивка (shell), допълнени със специфични за SGE параметри под формата на коментари със специален синтаксис. Следва примерна задача с по-често използваните параметри:

#!/bin/bash
# Файл mytask.job

# Обикновен коментар
# Тези редове не се обработват от SGE или обвивката

# Следните редове се обработват само от SGE
#$ -N myjob
#$ -cwd
#$ -m bea
#$ -M user@domain.com,user2@domain2.com
#$ -P project043
#$ -l h_rt=1:0:0

# Следва обикновен скрипт за обвивката
./process_result > $TMPDIR/alabala.out
mv $TMPDIR/alabala.out .

Параметрите за SGE се поставят в коментарни редове, които започват със специалната комбинация #$ и имат същия вид, както и опциите на командата за изпращане на задачи в опашката на SGE qsub. Тъй като всички редове, които започват с #, се възприемат като коментари в скрипта, то последните имат смисъл само за системата SGE и не се интерпретират от обвивката. Обвивката по подразбиране е /bin/bash, като използването на други обвивки не се поддържа от администрацията. Различните параметри имат следния смисъл:

  • -N myjob — задава името на задачата, под което тя ще бъде видима в списъка от задачи;
  • -cwd — указва, че изходните файловете, съдържащи стандартните изход и грешка на задачата, следва да се разположат в текущата директория, а не в домашната, както е по подразбиране;
  • -m bea — указва, че следва да се изпрати електронно писмо при започване, при приключване и/или при необичайно прекъсване на задачата;
  • -M user1<AT>domain1.com,user2<AT>domain2.com — задава адресите, на които следва да се изпратят писмата при настъпване на събитията, указани в параметъра -m (вместо <AT> следва да се постави символът @);
  • -P project043 — указва, че задачата следва да се изпълни като част от проект с име project043. Използваните ресурси ще се приспадат от “сметката” на проекта. Задаването на основния проект, към който сте зачислени, с този параметър е излишно, тъй като се подразбира. Трябва да сте зачислени към даден проект, за да можете да използвате неговите ресурси и квоти;
  • -l h_rt=1:0:0 — указва, че задачата изисква най-много 1 час работно време за работата си. След изтичане на този интервал от време задачата се прекратява принудително от SGE. Задаването на този параметър е задължително! Пропускането му ще доведе до прекратяване на задачата 5 мин след нейното стартиране.

Така подготвената задача се предава на SGE посредством командата:

qsub mytask.job

Вместо да се указват в скрипт файла на задачата, параметрите за SGE могат да се подават и чрез командния ред на qsub, например:

qsub -N myjob -cwd -l h_rt=0:30:0 mytask.job

Стойностите на параметрите от командния ред отменят тези, зададени в скрипт файла. Това позволява използването на един и същ скрипт за стартиране на няколко задачи с различни параметри.

Всички ресурси, които не са явно заявени, получават подразбиращи се стойности. Ако изискванията на задачата надхвърлят границите на наличните ресурси, тя или няма да бъде изпълнена, или ще бъде поставена в състояние на изчакване за неопределен период от време.

Стартирането в рамките на задачата на процеси във фонов режим (с използване на оператора &) не се препоръчва, тъй като води до свръхизползване на заявените ресурси!

Неинтерактивни задачи

Неинтерактивните задачи не използват графичен или текстов интерфейс за взаимодействие с потребителя по време на работата си. Таква са всички процеси, които биха могли да се изпълняват във фонов режим, както и процесите, допускащи пренасочване на стандартния им вход и изход от и към външни файлове. Типични примери са програмите Quantum ESPRESSO, GROMACS, NAMD и др., които четат конфигурациите си от файлове или от стандартния вход в неинтерактивен режим и съответно пишат резултатите си във файлове или на стандартния изход.

Превръщането на неинтерактивно приложение в задача за SGE в повечето случаи е тривиално, тъй като повечето готови продукти предоставят т.нар. драйверни скриптове, изпълняващи последователност от действия върху данните за и от симулацията. Необходимо е само съответният драйверен скрипт да бъде разширен с параметрите за SGE.

Интерактивни задачи

Интерактивни са задачите, които изискват диалог с потребителя и не могат да работят в пакетен режим. Като такива се класифицират всички графични приложения (Mathematica, Maple, MATLAB и др.), когато работят в диалогов режим, както и част от приложенията за командния ред, чиито вход и изход не може да бъде пренасочен.

Стартиране на графични интерактивни задачи

Графичните интерактивни задачи се започват с командата

qsh -l h_rt=hh:mm:ss [други параметри...]

където hh:mm:ss е времето, което очакваме като максимална продължителност на сесията. Могат да се заявяват и други ресурси, например размер на виртуалната памет с -l h_vmem=8G. След подаване на тази команда SGE се опитва да удовлетвори в рамките на няколко секунди желаните ресурси, като при успех стартира графичен терминал xterm. В случай на неуспех се получава съобщение за грешка и интерактивната сесия бива отказана. Това се получава, ако в момента няма свободни слотове за интерактивна работа или ако заявените ресурси надхвърлят наличните такива. За правилното стартиране на графичния терминал следва да имате на компютъра си работещ X сървър и променливата на обкръжението $DISPLAY да е установена правилно. Последното става автоматично, ако използвате тунелиране на X11 през SSH сесията до клъстера. За повече подробности вижте страницата за графични приложения.

Неграфични интерактивни задачи

За задачи, които не изискват наличие на X11 сървър, неграфичното включване е за препоръчване. За целта командата qsh от предишната точка се заменя с qlogin. Параметрите остават същите.

Паралелни задачи

Паралелните задачи са специален клас задачи, които изискват повече от един процесор (или процесорно ядро) за своето изпълнение. За целта подобни задачи се стартират през т.нар. паралелни обкръжения. Последните са механизъм, който указва на SGE начините, по които дадена паралелна задача се стартира, работи и приключва. Към дадения момент са налични следните паралелни обкръжения:

  • threads — за многонишкови приложения;
  • ipar — за паралелни/многонишкови интерактивни приложения;
  • ompisn — за паралелни приложения, използващи библиотеката OpenMPI, от 1 до 8 слота на една машина;
  • ompix8 — за паралелни приложения, използващи библиотеката OpenMPI, кратен на 8 брой слотове.
  • ompix12 — за паралелни приложения, използващи библиотеката OpenMPI, кратен на 12 брой слотове.

В рамките на паралелното обкръжение задачите използват определен брой слотове, като един слот отговаря на едно процесорно ядро. За многонишковите приложения в обкръжението threads броят на слотовете трябва да отговаря на максималния брой нишки, като поради архитектурните особености на клъстера в този режим не могат да се заявяват повече от 8 (осем) или 12 (дванадесет) слота на задача. В случай че указаният брой на слотовете е до 8 (осем) включително вашите задачи могат да бъдат разпределени както на изчислителни възли с 8 процесорни ядра така и на изчислителни възли с 12 (дванадесет) изчислителни ядра, когато броят на заявените слотове е между 9 (девет) и 12 (дванадесет) задачите ви ще бъдат разпределени върху изчислителните възли с 12 (дванадесет) изчислителни ядра. Стартирането на повече нишки от заявения брой слотове води до свръхпотребление и влияе върху чуждите задачи, изпълняващи се на същия изчислителен възел. Ако приложението ви използва повече от 12 нишки, задължително заявявайте 12 слота!

За паралелните MPI приложения броят на слотовете задава броя на процесите, които ще участват в паралелната задача. Тъй като различните процеси в MPI приложенията не са ограничени в изискването да се изпълняват на един и същи възел, може да се заявяват повече от 8 слота. Настоящата хардуерна конфигурация позволява до 160 слота на задача (до 184 слота при специални случаи).

Използване на паралелните обкръжения

За стартиране на дадена задача като паралелна такава е достатъчно да бъде зададена следната опция на SGE:

-pe обкръжение #слотове

обкръжение е името на паралелното обкръжение (напр. ompix8), а #слотове е желаният брой слотове. Опцията може да бъде вградена в скрипта на задачата или да бъде подадена като част от командния ред на qsub.

Например, за 16-процесорно MPI приложение в скрипта на задачата може да се постави:

#$ -pe ompix8 16

Следва да се има предвид, че всички ресурси, с изключение на реалното време h_rt, се третират като зададени на слот, т.е. общото заявено потребление се получава като произведение на заявените ресурси по броя на слотовете.

Административни ограничения

Тъй като паралелните задачи блокират едновременно голямо количество ресурси, то всеки потребител може да използва до 64 слота във всички паралелни обкръжения взети заедно. Ограничението подлежи на модификация в извънредни случаи.

Паралелни интерактивни задачи

Възможно е стартирането на паралелни интерактивни задачи, в които паралелността се постига с използване на множество нишки. За целта на командата qsh (или qlogin в неграфичния случай) следва да се укаже да използва паралелното обкръжение ipar, например:

qsh -l h_rt=1:0:0 -pe ipar 4

Тази команда заявява 4 слота (ядра) за многонишково приложение (Java, OpenMP или друг механизъм). След стартиране на интерактивната сесия следва да укажете на приложенията, с които ще работите, че те трябва да използват 4 нишки. Самите механизми, чрез които става това, са специфични за различните приложения. Вие сами следва да откриете механизма за установяване на нивото на конкурентност на приложенията, с които работите — SGE не може да ограничи програмите в броя на ядрата, върху които те се разпростират на практика. Фактическото използване на повече ядра от заявения брой слотове нарушава работата на останалите задачи и следва да се разглежда като “неспортсменско” използване на машината.

Предварителни резервации

Възможно е да резервирате част от ресурсите на клъстера за изключително ползване в рамките на определено време. За целта се използва командата qrsub:

qrsub -d 16:0:0 -pe ompix8 32 -m b -M user@domain

Тази команда резервира 32 слота в паралелното обкръжение ompix8 за 16 часа. При успешно резервиране командата връща уникалния номер на резервацията. SGE ще изпрати електронно писмо на посочения адрес, когато всички поискани ресурси станат налични. Възможно е изрично указване на началното време на резервацията с опцията -a YYMMDDhhmm и/или на крайното време с опцията -e YYMMDDhhmm.

В рамките на резервацията могат да се изпращат задачи посредством указване на номера на резервацията в параметъра -ar на командите qsub, qlogin и qsh:

qsub -ar 30 -l h_rt=1:0:0 -pe ompix8 32 myjob

Забележки

Предварителните резервации се ползват със специален статут в рамките на системата SGE. Ресурсите, използвани от задачите, работещи в рамките на резервацията, не подлежат на стандартните ограничения и контрол. По тази причина създаването на резервации е ограничено само до потребителите, членове на специална група. Моля, свържете се със системните администратори, ако имате нужда от предварителна резервация за вашите задачи.

Ограничения

С цел честно споделяне на ресурсите на клъстера, съществуват някои ограничения, подробно описани тук.

Допълнителна информация