Даний посібник призначено для користувачів обчислювального кластера ІТФ ім. М.М. Боголюбова. Керівництво містить мінімально необхідний обсяг інформації для роботи на кластері ІТФ: опис процесу реєстрації, відомості по роботі в ОС Linux (вхід в систему, робота з каталогами та файлами, моніторинг) і роботі з MPI програмами і непаралельними програмами на кластері (компіляція, запуск, зупинка, робота з чергами). У тексті під терміном паралельна програма маються на увазі тільки MPI програми.
Команди змінні командного інтерпретатора, назви програм, листинги, безпосереднє введення/виведення консолі виділені жирним шрифтом.
Питання щодо роботи кластера слід відправляти за адресою: helpdesk@bitp.kiev.ua або звертатися в к. 233
Остання версія керівництва (у фоматі Windows Word) знаходиться на кластері: ftp://clusterui.bitp.kiev.ua/pub/Cluster_manual.doc.
Питання щодо цього документа (помилки, неточності, пропозиції) можна відправляти на e-mail: helpdesk@bitp.kiev.ua
Зміст
4.5.2 Робота з чергами4.5.3 Зупинка завдань
5. Робота з непаралельними програмами
6. WEB-інтерфейс доступу до кластеру
Базовий Linux кластер складається з 5-и двох процесорних комп'ютерів на процесорах Intel XEON. Вісім комп'ютерів об'єднані в обчислювальну ферму і не доступні для інтерактивної роботи користувача. Один двопроцесорний сервер на базі Xeon i5 з RAM 32 Gb, 10-ть серверів з RAM 64Gb і один c RAM 256Gb. Один комп'ютер є керуючим для обчислювальної ферми і до нього дозволений інтерактивний доступ користувачів для зберігання своїх програм. Є менеджер черг, який знаходиться на окремому сервері torque.bitp.kiev.ua.
На всіх машинах встановлена ОС Linux дистрибутив, що співпадає з тим, що використовується в CERN - Scientific Linux 6.4 (SL6).
До складу Scientific Linux 6.4 (SL6) входить необхідне програмне забезпечення для компіляції (C, C + +, Fortran 77), налагодження та виконання програм. Додатково встановлено програмне забезпечення для паралельних обчислень (компілятори: mpiCC, mpicc, mpif77).
Запуск задач на рахунок, управління виконанням завдання і відправка результатів користувачеві виробляються засобами програмного забезпечення системи пакетної обробки завдань PBS.
У випадку, якщо користувачеві необхідно додаткове програмне забезпечення (наприклад, ASIS (CERN), включаючи CERNlib, додаткові компілятори) необхідно звернутися до адміністратора кластера.
Для реєстрації користувачів на кластері необхідно заповнити форму наступного виду:
Рис.1 Реєстраційна форма
У реєстраційній формі (Рис.1) користувач повинен заповнити ряд обов'язкових (виділених символом « * ») і не обов'язкових полів.
Прізвище, Ім'я, По батькові. Ці поля є обов'язковими.
Логін. Ім'я користувача, що застосовується для входу на кластер. Дозволено застосування тільки латинських букв і цифр. Мінімальний розмір цього поля 4 символу.
Пароль. Пароль для входу на кластер. Дозволено застосування тільки латинських букв і цифр. Мінімальний розмір цього поля 8 символів.
Адреса електронної пошти (повідомлення кластера). За цією адресою будуть відправлятися повідомлення пов'язані з одними завданнями.
Електронною поштою (контактний). За цією адресою будуть відправлятися організаційні повідомлення, пов'язані з реєстрацією користувача, помилки в роботі і т.п. Можна вказувати один і той же адресу в цьому і попереднє попередньому полі.
Повідомлення про зміни в роботі кластера. Якщо в цьому полі поставлений прапорець, то на контактну адресу електронної пошти буде періодично відправлятися інформація про зміни в роботі черг, профілактиці, оновлення програмного забезпечення.
(Заповнену заявку потрібно передати С.Я. Свистунову в к.422 або відправити поштою svistunov@bitp.kiev.ua)
Для роботи з системою користувач повинен мати свій обліковий запис на керуючому вузлі кластера. Реєстрація описана в попередньому розділі. Після реєстрації користувач отримує логін, пароль і домашню директорію. Якщо ім'я користувача, наприклад, буде maxim, то домашня папка знаходиться в /home/maxim.
Зареєстрований користувачі мають має доступ до кластеру і можливість працювати на кластері з будь якого комп'ютера, що знаходиться знаходиться в локальній мережі інституту або в мережі Інтернеті. Доступ до кластеру здійснюється по протоколу SSH. Для входу в систему користувачеві необхідний адресу сервера clusterui.bitp.kiev.ua (194.44.37.136), а також логін і пароль, вказані в реєстраційній картці.
Робота з системою здійснюється з безпечного протоколу SSH за допомогою якого-небудь SSH-клієнта. Рекомендується використовувати програму PuTTY, яку можна безкоштовно скачати за адресою http://www/chiark.greenend.org.uk/~sgtatham/putty/, або з FTP-сервера ftp://clusterui.bitp.kiev.ua/pub/putty.zip. Ця програма розповсюджується вільно і проста у використанні.
Рис.2 Вікно SSH-клієнта Putty
Після запуску програми (Рис.2) користувач повинен вибрати протокол SSH і в полі «Host Name (or IP address)» вказати адресу сервера. Натискання на «Open» призведе до відправки запиту на підключення. У разі успішного підключення до сервера буде запропоновано ввести логін, а потім і пароль. При введенні пароля символи на екрані не відображаються. Якщо все введено правильно, то користувач автоматично опиниться в своїй домашній директорії.
Рис.3 Приклад SSH-сесії
Робота в SSH-сесії відбувається в термінальному (текстовому, консольному) режимі. Необхідно пам'ятати, що консоль Linux, на відміну відміну від Вікна, розрізняє регістр символів, що вводять, тобто mydoc.txt і mydoc.TXT не одне і те ж. Після входу на екрані відображається консоль командного інтерпретатора в наступному форматі:
Ім'я_користувача@машина поточний_каталог як показано на Рис.3.
Також можна завантажити reg-файл putty.reg за адресою ftp://clusterui.bitp.kiev.ua/pub/putty.reg. Після додавання вмісту цього файлу до реєстру Windows, в списку збережених сесій PuTTY з'явиться сесія "clusterui.bitp.kiev.ua", вже налаштована для використання.
У будь-який дистрибутив ОС Linux входить консольний SSH-клієнт. Для входу на кластер необхідно виконати консольну команду
ssh username@clusterui.bitp.kiev.ua
При роботі користувачеві доведеться копіювати файли зі своєї машини на кластер (програми, вхідні дані, бібліотеки) і назад (листинги, результати розрахунків). Для цього існує два способи: через протокол SSH або через протокол FTP.
Копіювання файлів по протоколу SSH є найбільш переважним при віддаленому доступі. Цей протокол забезпечує належний захист переданої інформації, при передачі по мережі вся інформація шифрується. У випадку з Windows машини для цього використовується утиліта pscp.exe (доступна там же, де і програма-термінал PuTTY). У разі Linux - консольна команда scp .
Формат команди для цих утиліт практично однаковий:
pscp.exe user@comp:
scp user@comp:
Нижче представлений приклад команди в Windows, для копіювання в мережі інституту користувачем svistunov файла cluster_manual.tex, розташованого в директорії c:/cluster на локальному комп'ютері, в домашню директорію користувача на кластері.
pscp.exe c:/cluster_manual.tex svistunov@clusterui.bitp.kiev.ua:$HOME
Першим обов'язковим параметром цієї команди є копійований файл-джерело. У показаному прикладі це c:/cluster_manual.tex. svistunov@clusterui.bitp.kiev.ua:$HOME - адреса приймача.
Формат адреси:
Ім'я_користувача@адрес_вузла_назначення: файл_чи_папка_приймач.
$HOME - є стандартною змінної оточення, що містить розташування домашньої папки користувача.
У даному випадку: $HOME еквівалентно /home/svistunov.
Рис.4 Приклад команди в Windows, для копіювання.
Якщо або папка-джерело, або папка призначення знаходяться в тій системі, де ви виконуєте цю команду, то можна не вказувати ім'я користувача та адресу машини. Обидві команди підтримують опцію командного рядка -r, що дозволяють копіювати цілий каталог рекурсивно.
Для копіювання файлів в робочу директорію на кластері або з робочої директорії на комп'ютер користувача передбачається використовувати FTP-сервіс. Увійшовши на FTP-сервер ftp://clusterui.bitp.kiev.ua під своїм ім'ям користувача і паролем, користувач потрапляє безпосередньо в домашній каталог, після чого може скачувати/закачувати файли.
З міркувань безпеки, для роботи з особистими файлами необхідно використовувати протокол SFTP - Secure FTP. Цей протокол заснований на протоколі SSH і шифрує передані дані. Для роботи з цим протоколом в Windows, системі слід використовувати програму WinSCP (можна скачати за адресою ftp://clusterui.bitp.kiev.ua/pub/winscp551setup.exe).
Інтерфейс програми WinSCP нагадує інтерфейс PuTTY. Для роботи з нею найпростіше перейти в розділ сесії (у дереві зліва, див. Рис.5) і натиснути кнопку Імпорт. Якщо у вас вже є збережена сесія в PuTTY, то таким способом її можна перенести в WinSCP.
Рис.5 Вікно клієнта WinSCP
Для установки зв'язку з кластером потрібно вибрати сесію (показана на малюнку clusterui.bitp.kiev.ua) і натиснути кнопку Login. Після введення імені користувача і пароля то користувач автоматично опиниться в своїй домашній директорії.
Сама робота з файлами може здійснюватися або через інтерфейс, подібний Norton/Total Commander, або подібний Windows Explorer (див. Рис.6).
Рис.6 Робота з файлами в WinSCP
Крім захищеного FTP-сервера на кластері існує і звичайний, загальнодоступний FTP. На ньому зберігається різне програмне забезпечення, документація тощо. Доступ здійснюється за URL-адресою ftp://clusterui.bitp.kiev.ua/pub/.
Для роботи на кластері зручно користуватися файловим менеджером mc, який включає редактор текстових файлів. Універсальним способом роботи на кластері є робота через консоль. Обидва способи коротко описані нижче.
Консоль
На кластері користувачеві для збереження файлів доступний тільки його домашній каталог. Для роботи з файлами і каталогами існують декілька корисних команд (Табл.1)
Таблиця 1. Команди для роботи з файлами і каталогами
Команда |
Опис |
ls |
Показати список папок і файлів в поточному каталозі |
pwd |
Показати ім'я поточного каталога |
cd назва_каталога |
Змінити каталог |
mkdir назва_каталога |
Створити каталог |
rm |
Видаляє файли. З опцією -r рекурсивно видаляє каталоги |
clear |
Очистка екрану |
cp що куди |
Копіювання файлів і каталогів |
locate |
Пошук файлів |
mv |
Переміщення файлу |
cat |
Вивід на екран вмісту файлу |
grep |
Пошук рядку в тексті |
Детальну довідку за цим командам, а також по всіх інших можна отримати, набравши в консолі man ім'я_команди. Більш розширену інформацію по більшості програм можна отримати, набравши info ім'я_команди.
При роботі в консолі зручно користуватися клавішею автопідстановки Tab. Якщо, набравши кілька перших символів програми або файлу, користувач натисне на клавішу Tab, то система доповнить їх до повного імені, за умови, що є тільки єдиний варіант доповнення. Якщо варіантів декілька, то з'явиться їх список. Введення додаткових символів, які однозначно визначають потрібне ім'я, і натискання клавіші Tab призводить до вибору імені файлів або команд.
Приклади:
1) Визначення в якій папці знаходиться користувач.
[root@localhost etc] $ pwd
/etc
2) Перехід в домашній каталог.
[root@localhost etc] $ cd $HOME
3) Створення папки /mnt/buf/progr/np
[root@localhost etc] $ mkdir /mnt/buf/progr/np
4) Копіювання файлу blasqr.ps з поточної (домашньої) директорії у щойно створену. Перехід в цю директорію.
[root@localhost etc] $ cp ./blasqr.ps /mnt/buf/progr/np
[root@localhost etc] $ cd /mnt/buf/progr/np
5) Перебуваючи у створеній директорії перегляд виводу списку її вмісту.
[root@localhost np] $ ls
blasqr.ps
У роботі на кластері можна використовувати файловий менеджер Midnight Commander (mc) (Рис.7), який дуже схожий на FAR або Norton Commander.
Цей файловий менеджер можна запустити з консолі: mc -ca.
Ключ -ca необхідний для коректного відображення спеціальних символів в SSH-сесії
Рис.7 Файловий менеджер mc
mc-edit
Користувачеві рекомендується основну частину вихідних файлів підготовляти на своїй локальній машині в звичних текстових редакторах. Для внесення невеликих змін у файли дуже добре підходить вбудований в mc редактор.
Для запуску цього редактора необхідно встановити курсор на цікавить файл і натиснути клавішу F4 (рис.7). Для створення і редагування нового файлу - «Shift + F4».
У цьому редакторі присутні всі основні засоби, наявні в подібних програмах: копіювання, вставка, пошук, заміна, підсвічування синтаксису, ряд інших.
Emacs, VІМ
Якщо необхідні більш складні засоби редагування, то можна використовувати редактори vi/vim i emacs. Обидва цих редактора мають більш ніж тридцятирічну історію і стали культовими у світі UNIX. Vim є більш простим (по функціональності), але менш наочним редактором. Основна функція Vim - робота з вихідними текстами програм. Emacs - це більш ніж редактор. З його допомогою можна здійснювати професійну верстку; набір, запуск та налагодження програм; прийом/відправлення електронної пошти і новин; навігацію по жорсткому диску; використовувати як щоденника та багато іншого.
Недолік цих редакторів - досить складне управління (особливо VIM), яке не можна назвати інтуїтивно зрозумілим користувачам, які звикли до роботи в ОС Windows. За повним переліком доступних команд редакторів рекомендується звернутися до відповідних посібникам.
У встановленої реалізації MPI - LAM підтримується три мови програмування:
Компілятор |
Мова |
mpicxx |
C++ |
Mpicc |
C |
mpif77 |
Fortran – 77 |
Основні параметри для всіх трьох компіляторів однакові (табл.2). У простому випадку скомпілювати С++ програму можна так:
[root@localhost test_sig] $ mpicxx -o test_sig ./test_sig.cpp
Для Fortran – 77
[root@localhost test_sig] $ mpif77 -o test_sig ./test_sig.f
Результатом виконання цієї команди буде виконуваний файл test_sig. Цей файл буде стандартним бінарним файлом сумісним з переважною більшістю систем.
Примітка:
У OC Windows, виконувані файли мають певне розширення: exe, bat, cmd, com і ряд інших. Файли тільки таких типів можуть бути виконані. У Linux виконувані файли визначаються не їх розширенням, а іншим способом.
Нижче представлений приклад компіляції файлу test_sig.cpp з найчастіше використовуваними оптимiзуючими параметрами:
[root@localhost test_sig] $ mpic++ -O3 –funroll –loops –marh=pentium4 –mfpmath=sse
–msse2 –mmmx –o test_sig ./test_sig.cpp
./test_sig.cpp - файл. Містить вихідний код програми. У UNIX для вказівки того, що файл знаходиться в поточній директорії, потрібно ставити префікс « ./ ».
Файл test_sig отриманий таким чином буде оптимізований для обчислень на кластері. Враховуючи специфіку додатків, особливу увагу приділено параметрах, що відповідають за оптимізацію обчислень з плаваючою точкою.
Зазвичай ці параметри оптимізації дозволяють програмі працювати істотно швидше.
Для продуктивної роботи настійно рекомендується ознайомитися з повним переліком команд компіляторів (info gcc).
Таблиця 2. Деякі параметри компіляторів
-O3 |
Включення повної автоматичної оптимизації компілятора |
–funroll –loops |
Включення розкрутки циклів |
–marh=pentium4 –mfpmath=sse –msse2 |
Ця группа параметрів вказує компілятору використовувать команди доступні починаючи з Pentium 4. Обчислення з плаваючою точкою будуть проводитися за допомогою набору інструкцій SSE2. |
–mmmx |
Дозвіл використання набору інструкцій mmx. |
–o имя_файла |
Ім'я вихідного файлу. Якщо цей параметр не вказаний, то за замовчанням готова до виконання програма буде називатися a.out |
Запуск MPI программ
Для запуску MPI програм в черзі PBS використовується Intel Cluster Toolkit Compiler Edition.
На поточний момент на кластері діють наступні черги:
· short, long для запуску завдань на кластері;
· черга edu і arcedu для запуску завдань відповідно з проміжного програмного забезпечення GLITE і ARC навчального кластера;
· черга nordug для запуску завдань з проміжного програмного забезпечення ARC;
· черга bigmem для запуску завдань на кластері для яких потрібно великі обсяги оперативної пам'яті.
Політика черг представлена в таблиці.
Таблиця 3. Політика черг
|
Коротка |
Стандартна |
Glite задач (навчальна) |
ARC задач (навчальна) |
ARC задач |
Ресурсоміских задач |
Ідентифікатор |
short |
long |
edu |
arcedu |
nordug |
bigmem |
Максимальна довготривалість задачі |
1 година |
15000 годин |
5 годин |
5 годин |
500 годин |
15000 годин |
Ліміт задач в черзі |
400 |
800 |
40 |
40 |
50 |
100 |
Ліміт задач в черзі від одного користувача |
150 |
90 |
40 |
40 |
50 |
80 |
Ліміт запущених задач |
60 |
70 |
5 |
5 |
5 |
16 |
Ліміт запущених задач від одного користувача |
40 |
35 |
5 |
5 |
5 |
10 |
Час роботи |
цілодобово |
цілодобово |
цілодобово |
цілодобово |
цілодобово |
цілодобово |
Пріоритет |
100 |
50 |
30 |
30 |
30 |
90 |
Доступні вузли |
Всі |
alice20,22-23, 25-26 |
alice6 |
alice20,22-23, 25-26 |
alice24 |
alice32-42 |
Просування завдань у черзі відбувається послідовно. Наступне завдання вибирається з черги, яка має більший пріоритет. Стандартна і налагоджувальні черзі подібні. Вони доступні цілодобово і служать для запуску нетривалих завдань переважно отладочного характеру. Черга для запуску паралельних завдань зараз працює цілодобово зважаючи малого їх кількості.
Для отримання інформації про черги і завданнях користувача існує команда qstat. Виконання цієї команди без параметрів покаже всі завдання користувача і їх стан.
[svistunov@clusterui test_sig] $ qstat
Job id Name User Time Use S Queue
------------------- ------------------- ------------------------ ----------------------------------
32699.torque svistunov1231 svistunov 00:01:18 R long
32697.torque svistunov1232 svistunov Q edu
Job id - Ідентифікатор завдання, отриманий при виконанні.
Name - Ім'я завдання. За замовчуванням складається з імені користувача і часу запуску програми.
User - Ім'я користувача запустив задачу.
Time Use - Процесорний час, витрачений завданням.
S (State) - Стан завдання: R - завдання виконується, Q - очікує в черзі.
Queue - черга.
У даному випадку користувачеві svistunov належать два завдання, одна з яких (32699.torque) виконується в довгій черзі, а друга (32697.torque) очікує в нічний черги.
Команда qstat з параметром -а дасть більш розширену інформацію про завдання.
[svistunov@clusterui test_sig] $ qstat -a
Виконання qstat з параметром -Q дасть коротку інформацію по всіх черг і завданням:
Рис.8 Виконання qstat з параметром -Q
Queue - назва черги;
Memory - максимально допустима пам'ять, використовувана завданнями черзі;
CPU Time - максимально допустиме процесорний час, що використовується завданнями черги;
Walltime - максимально допустиме реальний час, що використовується завданнями черзі;
Node - максимальна кількість нодів на задачу;
Run - кількість запущених завдань;
Que - кількість запланованих завдань;
Lm - максимальна кількість одночасно запущених завдань у черзі;
State - статус черги (Enabled/Disabled, Running/Stopped).
Отримання інформації про завдання інших користувачів неможливо, можна лише побачити загальне число запланованих і запущених завдань.
Виконання qstat з параметром -q дасть зведену статистику по всіх черг.
Зупинка програми проводиться командою qdel ідентіфікатор_задачі:
[svistunov@clusterui test_sig] $ qdel 32699.torque
Цією командою завдання, що стоїть у черзі, забирається з неї, а завдання, що виконується знімається з виконання. Далі почне виконуватися наступна по черзі і пріоритету завдання.
Завдання знімається в перебігу деякого часу т.ч. при виклику qstat безпосередньо після qdel віддаленe завдання все ще може бути відображенe в таблиці.
На кластері можна компілювати і виконувати звичайні непаралельні програми. При виконанні непараллельной програми виділяється один вузол кластера, який вибирає система. Запускати на кластері можна будь-які бінарно сумісні програми. Тип черзі вказується у відповідному полі скрипт-файлу
#PBS - q dque@clusterui, (тут dque - ідентифікатор черги за замовчуванням).
Компілювання програм безпосередньо на кластері здійснюється стандартними засобами: g++, GCC, g77 і т.д. аналогічно тому, як описано в розділі 4.3.
Нехай програма sample користувача svistunov знаходиться в папці /home/svistunov/dir_name. Тоді запуск цієї програми здійснюється командою:
[svistunov@clusterui svistunov ] $ qsub ./sample_job
де sample_job скрипт видy:
#
# Приклад скрипта sample_job для запуску непараллельной
# програми sample за допомогою qsub
#
# Вказівка скидання потоку виводу (о) і потоку помилок (е)
#PBS –k oe
# Необхідна кількість вузлів (для непараллельного завдання = 1)
#PBS -1 nodes=1
# Чи завдання є перезапускаємою (задачею з контрольними точками)
# y - є , n - не є
#PBS –r n
# Поштова адреса користувача
#PBS –M user@bitp.kiev.ua
# Які повідомлення відправляти на вказану адресу?
# a - помилка у виконанні завдання
# b - початок виконання
# e - завершення виконання
#PBS –m abe
# Ідентифікатор черги
#PBS –q long@clusterui
# Назва завдання
#PBS –N sample
# Вказівка необхідного командного інтерпретатора
#!/bin/sh
# Шлях до папки з програмою
export PATH=$PATH:/home/svistunov/dir_name
# Перехід в цю папку
cd /home/svistunov/dir_name
# Безпосередній запуск програми користувача
./sample
exit 0
sample_job являє собою звичайний скрипт командного інтерпретатора тобто в ньому допустимо використання змінних, циклів, умовних конструкцій і т.д. Відмінністю є передача параметрів системи диспетчеризації через коментарі особливого виду:
# PBS -параметр значення
Ці коментарі повинні розташовуватися на початку файлу до вказівки основного командного інтерпретатора.
Сайт кластера знаходиться за посиланням http://horst-7.bitp.kiev.ua.
Вибравши «Вхід до системи» відкриється вікно введення логіна і пароля користувача.
Після авторизації користувач потрапляє у свою домашню директорію.
Додаткова інформація щодо роботи з системою знаходиться на
http://horst-7.bitp.kiev.ua/management/