Загальні питання
- Що
таке кластер і навіщо він потрібен?
- Для
чого мені може знадобитись кластер?
- Які
конкретні приклади задач, що вимагають розрахунків на кластері?
- Чому
не наведено результати тестування кластера за HPL?
- Як
стати користувачем?
Використання кластеру
- Як
"зайти" на кластер?
- Як
запускати програми?
- Як
взнати iм'я вузла, на якому я знаходжусь?
- Мені
не вистачає місця на жорсткому диску, що робити?
- Як
запустити програму, щоб вона залишилась працювати пiсля закриття сесiї?
- Як
перейти на інший вузол кластеру?
- Яким
чином завантажити дані на кластер (з кластера) через Інтернет?
- Чи
можна на кластері запускати графічні програми?
- Як
оцінити час обрахунку моєї задачі?
- Як
оцінити необхідну кількість процесорів для моєї задачі?
- Чому
MPI програма на одному вузлі запускається, а на 2-х і більше - ні?
- Моя задача
довго стоїть в черзі і не
запускається, як прискорити запуск?
- Як правильно
вказати ресурси, щоб моя задача
запустилась негайно?
Що таке кластер і навіщо він потрібен?
Кластер - це декілька незалежних обчислювальних машин, що
використовуються спільно і працюють як одна система для вирішення тих
чи інших задач, наприклад, для підвищення продуктивності, забезпечення
надійності, спрощення адміністрування, тощо.
Обчислювальний кластер потрібен для збільшення швидкості обрахунків за
допомогою паралельних обчислень.
Для чого мені може знадобитись кластер?
Обчислювальний кластер, як і будь-яка система паралельних
обчислень, є ефективним, коли обчислювальна задача, яку необхідно
вирішити, принципово не може бути вирішена за допомогою комп'ютерів
широкого вжитку (наприклад, персональних комп'ютерів), або вирішення
задачі за допомогою поширених систем вимагає тривалого часу. До таких
задач належать:
- Задачі, що "не вміщуються" в оперативну пам'ять
(вимагають десятки гігабайт і більше)
- Обрахунки, що вимагають значної кількості операцій і
відповідно тривалого часу (дні, тижні, місяці)
- Коли необхідно обрахувати велику кількість задач
(десятки, сотні) за короткий проміжок часу
- Кластер є ефективним не для всіх задач. Якщо задача
ефективно вирішується за допомогою поширених систем, то використання
кластеру може бути не ефектиним.
Які конкретні приклади задач, що вимагають розрахунків на
кластері?
- Квантова хімія, розрахунок електронних структур
- Молекулярна динаміка
- Молекулярний докінг
- Моделювання методом Монте-Карло
- Криптоаналіз
- 3D рендеринг та анімація, обробка відео та аудіо
Більше прикладів доступно тут.
Чому не наведено результатів тестування кластера за HPL?
- Кластер постійно завантажений
роботою і зупиняти задачі користувачів лише для того, щоб
похвалитись потужністю за результатми тестів не є коректним, краще
нехай система працює за призначенням
- Кластер сильно гетерогенний і отримати гарні результати за
тестом HPL, який розрахований на гомогенні системи навряд чи вдасться,
у всякому разу потрібен тривалий час на підбір оптимальної схеми
запуску на вільному кластері (див. також 1)
- Тест HPL, як і будь-який інший тест продуктивності,
говорить лише про те на скільки кластер швидко здатен виконувати цей
тест (див. також 2). Для інших тестів можна отримати як значно кращі
так і значно гірші результати порівняно з HPL. Наприклад, задачі
квантової хімії, алгоритми яких масштабуються як O(N^4) чи швидше, або
задачі молекулярногого докінгу чи моделювання за методом Монте-Карло, у
яких відсутній обмін міх процесами паралельної програми, будуть
розпаралелюватись ефективніше і показувати більшу швидкість виконання,
ніж HPL.
- Тест HPL традиційно використовується top500
для порівняння продуктивності великих систем, щоб вказати чий
суперкомп'ютер "кращий". Кластер ІОЦ створювався для застосування в
наукових дослідженнях і навчальному процесі. Задача створити найбільшу,
найпотужнішу чи найдорожчу систему, яка при цьому лишається вимкнутою,
чи іншим чином не використовується, не ставилась, а отже і не ставилась
задача порівняння продуктивностей з іншими кластерами (див. також 1)
- Для тих, кого цікавить продуктивність кластера за HPL в
розділі результати
тестування наведено значення продуктивності отримане при одному запуску
тесту без підбору параметрів та схеми запуску. Однак, у зв'язку з тим,
що конфігурація кластера постійно змінюється, цей результат мало що
характеризує.
Як стати користувачем?
Для того, щоб отримати доступ до кластера, для співробітників
університету необхідно заповнити анкету
і вказати таку інформацію:
- Прізвище, ім'я та по-батькові
користувача;
- Організація, відділ/лабораторія, посада;
- Контактний телефон;
- E-mail користувача;
- IP-адреса комп'ютера, з якого
буде відбуватися доступ до кластера;
- Клас задач (числові
розрахунки, обробка зображень, тощо);
- Необхідні ресурси (об'єм
постійної дискової пам'яті, кількість процесорів);
- Ім'я користувача в системі (login).
Представники інших організацій направляють заявку з
пропозиціями на контактну адресу.
Як "зайти" на кластер?
Доступ до обчислювального кластера здійснюється через
"головний" сервер. Безпосередній термінальний доступ до вузлів кластеру
неможливий.
Для доступу необхідно використовувати протокол SSH, тобто на
UNIX вхід здійснюється командою: ssh -l username
cluster.univ.kiev.ua, де username - це зареєстроване
ім'я користувача. Номер порту SSH - 22.
Під MS Windows доцільно використовувати пакет
PuTTy
Як запускати програми?
Запуск задач виконується виключно з використанням інтерфейсу командного
рядка, що є найзручнішим на сьогодні способом. Тестові
запуски програм, відлагоджування, компіляція може виконуватись в
інтерактивному режимі на будь-якому вузлі кластера. Слід вибрати вузол
з найменшим завантаженням, щоб Ваша робота не заважала іншим
користувачам.
Розрахунки, особливо тривалі та ресурсоємні, слід запускати
лише з виокристанням пакетного
режиму за допомогою системи PBS, що дозволяє ефективно
планувати використання ресурсів кластера, запускати задачі по мірі
звільнення ресурсів, тощо.
Як дізнатися iм'я вузла, на якому я знаходжусь?
- Ця інфорація відображається у командному рядку в запрошенні
Приклад:
[saa@ss20-10 saa]$
означає, що Ви ззнаходитесь на вузлі з номером 10
- 2. Команда hostname показує
потрiбну iнформацiю.
Приклад:
bash-2.01# hostname
ss20-3.univ.kiev.ua
Мені не вистачає місця на жорсткому диску, що робити?
Перший спосіб: перейдіть
на інший вузол і знайдіть той вузол, де вистачає місця.
Команда df показує зайнятий дисковий
простір. На кожному вузлі користувачам доступні каталоги /home/<ім'я
користувача> та /mnt/work/<ім'я
користувача>.
Другий спосіб: каталог /net/<ім'я
вузла>/ автоматично приєднується до файлової
системи вказаного вузла. Зверніться до того вузла, де вистачає місця
Приклад:
[saa@cluster saa]$ ls /net/node10/home/saa
дозволяє надрукувати зміст каталогу /home/saa на вузлі 10
Як запустити програму, щоб вона продовжувала працювати пiсля
закриття сесiї?
Єдиним дозволеним
способом запуску розрахункових задач є використання системи пакетного
режиму. При цьому жодна програма не переривається в
результаті закриття сесії.
У випадку, коли Вам потрібно щоб сесія була доступна після
відключення від кластера при повторному приєднанні, допускається
використання програми screen.
Застосовувати vncserver чи інші засоби
віртуалізації сеансів без дозволу адміністрації заборонено, оскільки це
призводить до надмірного використання ресурсів.
Як перейти на інший вузол кластера?
Команда rsh <ім'я вузла вузла>
Приклад:
[saa@ss20-2 saa]$ rsh node1
Last login: Tue Mar 16 13:19:36 from ss20-2
You have new mail.
[saa@ss20-1 saa]$
Яким чином завантажити дані на кластер (з кластера) через
Інтернет?
Рекомендований спосіб - використовувати протокол ssh.
Під операційною системою UNIX(Linux) команда scp
Під операційною системою Windows - команда pscp
(Пакет Putty)
Приклад завантаження на кластер:
[saa@intel1 saa]$ scp chpox-single-0.4a.tar.gz
saa@cluster.univ.kiev.ua:~/
saa@cluster.univ.kiev.ua's password:
chpox-single-0.4a.tar.gz 100% 66KB 3.2MB/s 00:00
[saa@intel1 saa]$
Якщо ви користуєтесь програмою FAR, то можете також використати plugin WinSCP.
Його копію можна скачати або з сайта програми або звідси.
Інші Інтернет-служби на кластері відключені, однак, на кластері
встановлено різні інтернет-клієнти (ftp, ncftp, rsync, wget), які можна
використовувати.
Чи можна запускати на кластері графічні програми?
Принципова можливість є, на кластері встановлено велику
кількість графічних біоіліотек, проте це виправдано лише у випадку,
коли Ваша обчислювальна програма цього вимагає. Найкращим способом є
використання X11 forwarding протоколу ssh.
Пам'ятайте, що кластер на призначений для інтерактивної роботи
в графічному середовищі.
Як оцінити час обрахунку моєї задачі?
Для теоретичної оцінки часу роботи Вашої програми необхідно
знати приблизну кількість операцій N, які необхідно виконати . Для
цього зверніться до документації з теоретичних (чисельних) методів які
використовуються при розрахунках. Час розрахунку
T= N/v
де v - продуктивність процесорів, що використовуються при
розрахунках
Наприклад:
Метод Хартрі-Фока розрахунку електронних структур вимагає
порядку B^4 операцій для розрахунку енергії, де B - кількість базисних
функцій за якими розкладаються електронні хвильові функції. Для деякої
молекулярної структури і вибраного базису B=315, отже кількість
операцій розрахунку енергії N~10^10 операцій. Сучасний процесор має
продуктивність порядку 10^9 операцій з плаваючою точкою за секунду,
отже час однієї ітерації ~10 с. Для 100 ітерацій оптимізації геометрії
маємо близько 15 хвилин. При розпаралелюванні на P процесорів маємо
зменшення часу приблизно в P разів.
Слід пам'ятати, що при збільшенні кількості процесорів
ефективність розпаралелювання падає, а при збільшенні розмірності
задачі і кількості операцій - зростає. Крім цього об'єм даних не
повинен перевищувати об'єм оперативної пам'яті.
Варто трохи поекспериментувати і Ви зможете досить точно
передбачувати час обчислень.
Як оцінити оптимальну кількість процесорів для моєї задачі?
Для паралельної програми оптимальна кількість процесорів
Popt=T1/T∞, де T1 - час розхрахунку на одному процесорі, а
T∞ - час розрахунку на нескінченній кількості процесорів.
Для простих оцінок можна використати наближення, що час
передачі даних рівний часу процесорної обробки і перша величина
пропорційний кількості процесорів P, а друга - обернено пропорційна P,
що далеко не завжди так. При цьому P~
√[(NcpuVcpu)/(NnetVnet)], де
Ncpu - кількість процесорних операцій послідовного алгоритму,
Vcpu - продуктивність процесора, Nnet - кіькість операцій передачі
даних, Vnet - продуктивність каналів передачі даних
Приклад:
Для мережі Gigabit Ethernet швидкість передачі ~10^7 чисел з
плаваючою точкою за секунду. Сучасний процесор має продуктивність ~10^9
операцій з плаваючою точкою за секунду.
Розв'язання системи лінійних рівнянь ~N^3 процесорних
операцій, об'єм даних для передачі ~N^2, де N- розмірність матриці.
Кількість процесорів P~5 для матриці 1000х1000, P~15 для 10000х10000.
Для метода
Хартрі-Фока P~30. Ці значення близькі до реальності.
Ефективно розпаралелити задачу більше ніж на 8-16 процесорів
можна лише для деяких алгоритмів. Часто мінімальну кількість процесорів
чи вузлів можна вибрати з міркувань наявної оперативної пам'яті.
Найкращий спосіб - експериментувати
Чому MPI програма на одному вузлі запускається, а на двох і
більше - ні?
Для того, щоб MPI програма запустилась, на всіх вузлах, які
для неї виділені, повинні бути доступні виконувані файли та вхідні
дані. Для цього їх треба скопіювати на виділеніі вузли у вибрані вими
каталоги (наприклад, /mnt/work/$USER),
або використовувати розподілену файлову систему /home,
чи /net .
Моя задача довго стоїть у черзі і не запускається, як
прискорити запуск?
Планувальник запускає з черги задачу з максимальним
пріоритетом, коли для неї наявні ті ресурси, які вкзав користувач, або
задачу з малим пріоритетом, коли вона не завадить своєчасному запуску
високопріоритетної задачі. Щоб прискористи запуск необхідно правильно
вказати необхідні ресурси.
Команда showstart <номер задачі> показує час,
коли задача запуститься (якщо нічого не зміниться). Приклад:
[saa@s15 ~]$ showstart 7043.a4
job 7043 requires 26 procs for 2:12:00:00
Earliest start in 4:22:03:17 on Mon Dec 10 17:38:59
Earliest completion in 7:10:03:17 on Thu Dec 13 05:38:59
Best Partition: DEFAULT
Вказані раніше ресурси, для задачі, яка стоїть в черзі, можна
змінити командою qalter
Приклад: qalter -lnodes=10:ppn=2 7043.a4
Як вказати правильно ресурси, щоб моя задача запустилась
негайно?
Інтерфейс
планувальника показує які вузли і на який час будуть зайняті,
або вільні. Вкажіть ресурси (кількість вузлів, процесорів і пам'яті),
щоб вони булі вільні зараз і задача запуститься.
Команда showbf -n <кількість вузлів> -r
<кількість процесорів на вузол> -m <об'єм
пам'яті> показує який час вказані ресурси будуть доступні.
Наприклад:
[saa@s15 ~]$ showbf -n 15 -r 2
backfill window (user: 'saa' group: 'saa' partition: ALL) Wed Dec 5
19:43:15
no procs available
15 вузлів по 2 процесора наразі не доступні
[saa@s15 ~]$ showbf -n 13 -r 2
backfill window (user: 'saa' group: 'saa' partition: ALL) Wed Dec 5
19:43:42
38 procs available for 2:09:55:17
13 вузлів по 2 процесори на вузол будуть доступні найближчі 2
дні 9 годин 55 хвилин
Загальні питання
- Що
таке кластер і навіщо він потрібен?
- Для
чого мені може знадобитись кластер?
- Які
конкретні приклади задач, що вимагають розрахунків на кластері?
- Чому
не наведено результати тестування кластера за HPL?
- Як
стати користувачем?
Використання кластеру
- Як
"зайти" на кластер?
- Як
запускати програми?
- Як
взнати iм'я вузла, на якому я знаходжусь?
- Мені
не вистачає місця на жорсткому диску, що робити?
- Як
запустити програму, щоб вона залишилась працювати пiсля закриття сесiї?
- Як
перейти на інший вузол кластеру?
- Яким
чином завантажити дані на кластер (з кластера) через Інтернет?
- Чи
можна на кластері запускати графічні програми?
- Як
оцінити час обрахунку моєї задачі?
- Як
оцінити необхідну кількість процесорів для моєї задачі?
- Чому
MPI програма на одному вузлі запускається, а на 2-х і більше - ні?
- Моя задача довго стоїть в черзі і не
запускається, як прискорити запуск?
- Як правильно вказати ресурси, щоб моя задача
запустилась негайно?
Що таке кластер і навіщо він потрібен?
Кластер - це декілька незалежних обчислювальних машин, що
використовуються спільно і працюють як одна система для вирішення тих
чи інших задач, наприклад, для підвищення продуктивності, забезпечення
надійності, спрощення адміністрування, тощо.
Обчислювальний кластер потрібен для збільшення швидкості обрахунків за
допомогою паралельних обчислень.
Для чого мені може знадобитись кластер?
Обчислювальний кластер, як і будь-яка система паралельних
обчислень, є ефективним, коли обчислювальна задача, яку необхідно
вирішити, принципово не може бути вирішена за допомогою комп'ютерів
широкого вжитку (наприклад, персональних комп'ютерів), або вирішення
задачі за допомогою поширених систем вимагає тривалого часу. До таких
задач належать:
- Задачі, що "не вміщуються" в оперативну пам'ять
(вимагають десятки гігабайт і більше)
- Обрахунки, що вимагають значної кількості операцій і
відповідно тривалого часу (дні, тижні, місяці)
- Коли необхідно обрахувати велику кількість задач
(десятки, сотні) за короткий проміжок часу
- Кластер є ефективним не для всіх задач. Якщо задача
ефективно вирішується за допомогою поширених систем, то використання
кластеру може бути не ефектиним.
Які конкретні приклади задач, що вимагають розрахунків на
кластері?
- Квантова хімія, розрахунок електронних структур
- Молекулярна динаміка
- Молекулярний докінг
- Моделювання методом Монте-Карло
- Криптоаналіз
- 3D рендеринг та анімація, обробка відео та аудіо
Більше прикладів доступно тут.
Чому не наведено результатів тестування кластера за HPL?
- Кластер постійно завантажений
роботою і зупиняти задачі користувачів лише для того, щоб
похвалитись потужністю за результатми тестів не є коректним, краще
нехай система працює за призначенням
- Кластер сильно гетерогенний і отримати гарні результати за
тестом HPL, який розрахований на гомогенні системи навряд чи вдасться,
у всякому разу потрібен тривалий час на підбір оптимальної схеми
запуску на вільному кластері (див. також 1)
- Тест HPL, як і будь-який інший тест продуктивності,
говорить лише про те на скільки кластер швидко здатен виконувати цей
тест (див. також 2). Для інших тестів можна отримати як значно кращі
так і значно гірші результати порівняно з HPL. Наприклад, задачі
квантової хімії, алгоритми яких масштабуються як O(N^4) чи швидше, або
задачі молекулярногого докінгу чи моделювання за методом Монте-Карло, у
яких відсутній обмін міх процесами паралельної програми, будуть
розпаралелюватись ефективніше і показувати більшу швидкість виконання,
ніж HPL.
- Тест HPL традиційно використовується top500
для порівняння продуктивності великих систем, щоб вказати чий
суперкомп'ютер "кращий". Кластер ІОЦ створювався для застосування в
наукових дослідженнях і навчальному процесі. Задача створити найбільшу,
найпотужнішу чи найдорожчу систему, яка при цьому лишається вимкнутою,
чи іншим чином не використовується, не ставилась, а отже і не ставилась
задача порівняння продуктивностей з іншими кластерами (див. також 1)
- Для тих, кого цікавить продуктивність кластера за HPL в
розділі результати
тестування наведено значення продуктивності отримане при одному запуску
тесту без підбору параметрів та схеми запуску. Однак, у зв'язку з тим,
що конфігурація кластера постійно змінюється, цей результат мало що
характеризує.
Як стати користувачем?
Для того, щоб отримати доступ до кластера, для співробітників
університету необхідно заповнити анкету
і вказати таку інформацію:
- Прізвище, ім'я та по-батькові
користувача;
- Організація, відділ/лабораторія, посада;
- Контактний телефон;
- E-mail користувача;
- IP-адреса комп'ютера, з якого
буде відбуватися доступ до кластера;
- Клас задач (числові
розрахунки, обробка зображень, тощо);
- Необхідні ресурси (об'єм
постійної дискової пам'яті, кількість процесорів);
- Ім'я користувача в системі (login).
Представники інших організацій направляють заявку з
пропозиціями на контактну адресу.
Як "зайти" на кластер?
Доступ до обчислювального кластера здійснюється через
"головний" сервер. Безпосередній термінальний доступ до вузлів кластеру
неможливий.
Для доступу необхідно використовувати протокол SSH, тобто на
UNIX вхід здійснюється командою: ssh -l username
cluster.univ.kiev.ua, де username - це зареєстроване
ім'я користувача. Номер порту SSH - 22.
Під MS Windows доцільно використовувати пакет
PuTTy
Як запускати програми?
Запуск задач виконується виключно з використанням інтерфейсу командного
рядка, що є найзручнішим на сьогодні способом. Тестові
запуски програм, відлагоджування, компіляція може виконуватись в
інтерактивному режимі на будь-якому вузлі кластера. Слід вибрати вузол
з найменшим завантаженням, щоб Ваша робота не заважала іншим
користувачам.
Розрахунки, особливо тривалі та ресурсоємні, слід запускати
лише з виокристанням пакетного
режиму за допомогою системи PBS, що дозволяє ефективно
планувати використання ресурсів кластера, запускати задачі по мірі
звільнення ресурсів, тощо.
Як дізнатися iм'я вузла, на якому я знаходжусь?
- Ця інфорація відображається у командному рядку в запрошенні
Приклад:
[saa@ss20-10 saa]$
означає, що Ви ззнаходитесь на вузлі з номером 10
- 2. Команда hostname показує
потрiбну iнформацiю.
Приклад:
bash-2.01# hostname
ss20-3.univ.kiev.ua
Мені не вистачає місця на жорсткому диску, що робити?
Перший спосіб: перейдіть
на інший вузол і знайдіть той вузол, де вистачає місця.
Команда df показує зайнятий дисковий
простір. На кожному вузлі користувачам доступні каталоги /home/<ім'я
користувача> та /mnt/work/<ім'я
користувача>.
Другий спосіб: каталог /net/<ім'я
вузла>/ автоматично приєднується до файлової
системи вказаного вузла. Зверніться до того вузла, де вистачає місця
Приклад:
[saa@cluster saa]$ ls /net/node10/home/saa
дозволяє надрукувати зміст каталогу /home/saa на вузлі 10
Як запустити програму, щоб вона продовжувала працювати пiсля
закриття сесiї?
Єдиним дозволеним
способом запуску розрахункових задач є використання системи пакетного
режиму. При цьому жодна програма не переривається в
результаті закриття сесії.
У випадку, коли Вам потрібно щоб сесія була доступна після
відключення від кластера при повторному приєднанні, допускається
використання програми screen.
Застосовувати vncserver чи інші засоби
віртуалізації сеансів без дозволу адміністрації заборонено, оскільки це
призводить до надмірного використання ресурсів.
Як перейти на інший вузол кластера?
Команда rsh <ім'я вузла вузла>
Приклад:
[saa@ss20-2 saa]$ rsh node1
Last login: Tue Mar 16 13:19:36 from ss20-2
You have new mail.
[saa@ss20-1 saa]$
Яким чином завантажити дані на кластер (з кластера) через
Інтернет?
Рекомендований спосіб - використовувати протокол ssh.
Під операційною системою UNIX(Linux) команда scp
Під операційною системою Windows - команда pscp
(Пакет Putty)
Приклад завантаження на кластер:
[saa@intel1 saa]$ scp chpox-single-0.4a.tar.gz
saa@cluster.univ.kiev.ua:~/
saa@cluster.univ.kiev.ua's password:
chpox-single-0.4a.tar.gz 100% 66KB 3.2MB/s 00:00
[saa@intel1 saa]$
Якщо ви користуєтесь програмою FAR, то можете також використати plugin WinSCP.
Його копію можна скачати або з сайта програми або звідси.
Інші Інтернет-служби на кластері відключені, однак, на кластері
встановлено різні інтернет-клієнти (ftp, ncftp, rsync, wget), які можна
використовувати.
Чи можна запускати на кластері графічні програми?
Принципова можливість є, на кластері встановлено велику
кількість графічних біоіліотек, проте це виправдано лише у випадку,
коли Ваша обчислювальна програма цього вимагає. Найкращим способом є
використання X11 forwarding протоколу ssh.
Пам'ятайте, що кластер на призначений для інтерактивної роботи
в графічному середовищі.
Як оцінити час обрахунку моєї задачі?
Для теоретичної оцінки часу роботи Вашої програми необхідно
знати приблизну кількість операцій N, які необхідно виконати . Для
цього зверніться до документації з теоретичних (чисельних) методів які
використовуються при розрахунках. Час розрахунку
T= N/v
де v - продуктивність процесорів, що використовуються при
розрахунках
Наприклад:
Метод Хартрі-Фока розрахунку електронних структур вимагає
порядку B^4 операцій для розрахунку енергії, де B - кількість базисних
функцій за якими розкладаються електронні хвильові функції. Для деякої
молекулярної структури і вибраного базису B=315, отже кількість
операцій розрахунку енергії N~10^10 операцій. Сучасний процесор має
продуктивність порядку 10^9 операцій з плаваючою точкою за секунду,
отже час однієї ітерації ~10 с. Для 100 ітерацій оптимізації геометрії
маємо близько 15 хвилин. При розпаралелюванні на P процесорів маємо
зменшення часу приблизно в P разів.
Слід пам'ятати, що при збільшенні кількості процесорів
ефективність розпаралелювання падає, а при збільшенні розмірності
задачі і кількості операцій - зростає. Крім цього об'єм даних не
повинен перевищувати об'єм оперативної пам'яті.
Варто трохи поекспериментувати і Ви зможете досить точно
передбачувати час обчислень.
Як оцінити оптимальну кількість процесорів для моєї задачі?
Для паралельної програми оптимальна кількість процесорів
Popt=T1/T∞, де T1 - час розхрахунку на одному процесорі, а
T∞ - час розрахунку на нескінченній кількості процесорів.
Для простих оцінок можна використати наближення, що час
передачі даних рівний часу процесорної обробки і перша величина
пропорційний кількості процесорів P, а друга - обернено пропорційна P,
що далеко не завжди так. При цьому P~
√[(NcpuVcpu)/(NnetVnet)], де
Ncpu - кількість процесорних операцій послідовного алгоритму,
Vcpu - продуктивність процесора, Nnet - кіькість операцій передачі
даних, Vnet - продуктивність каналів передачі даних
Приклад:
Для мережі Gigabit Ethernet швидкість передачі ~10^7 чисел з
плаваючою точкою за секунду. Сучасний процесор має продуктивність ~10^9
операцій з плаваючою точкою за секунду.
Розв'язання системи лінійних рівнянь ~N^3 процесорних
операцій, об'єм даних для передачі ~N^2, де N- розмірність матриці.
Кількість процесорів P~5 для матриці 1000х1000, P~15 для 10000х10000.
Для метода
Хартрі-Фока P~30. Ці значення близькі до реальності.
Ефективно розпаралелити задачу більше ніж на 8-16 процесорів
можна лише для деяких алгоритмів. Часто мінімальну кількість процесорів
чи вузлів можна вибрати з міркувань наявної оперативної пам'яті.
Найкращий спосіб - експериментувати
Чому MPI програма на одному вузлі запускається, а на двох і
більше - ні?
Для того, щоб MPI програма запустилась, на всіх вузлах, які
для неї виділені, повинні бути доступні виконувані файли та вхідні
дані. Для цього їх треба скопіювати на виділеніі вузли у вибрані вими
каталоги (наприклад, /mnt/work/$USER),
або використовувати розподілену файлову систему /home,
чи /net .
Моя задача довго стоїть у черзі і не запускається, як
прискорити запуск?
Планувальник запускає з черги задачу з максимальним
пріоритетом, коли для неї наявні ті ресурси, які вкзав користувач, або
задачу з малим пріоритетом, коли вона не завадить своєчасному запуску
високопріоритетної задачі. Щоб прискористи запуск необхідно правильно
вказати необхідні ресурси.
Команда showstart <номер задачі> показує час,
коли задача запуститься (якщо нічого не зміниться). Приклад:
[saa@s15 ~]$ showstart 7043.a4
job 7043 requires 26 procs for 2:12:00:00
Earliest start in 4:22:03:17 on Mon Dec 10 17:38:59
Earliest completion in 7:10:03:17 on Thu Dec 13 05:38:59
Best Partition: DEFAULT
Вказані раніше ресурси, для задачі, яка стоїть в черзі, можна
змінити командою qalter
Приклад: qalter -lnodes=10:ppn=2 7043.a4
Як вказати правильно ресурси, щоб моя задача запустилась
негайно?
Інтерфейс
планувальника показує які вузли і на який час будуть зайняті,
або вільні. Вкажіть ресурси (кількість вузлів, процесорів і пам'яті),
щоб вони булі вільні зараз і задача запуститься.
Команда showbf -n <кількість вузлів> -r
<кількість процесорів на вузол> -m <об'єм
пам'яті> показує який час вказані ресурси будуть доступні.
Наприклад:
[saa@s15 ~]$ showbf -n 15 -r 2
backfill window (user: 'saa' group: 'saa' partition: ALL) Wed Dec 5
19:43:15
no procs available
15 вузлів по 2 процесора наразі не доступні
[saa@s15 ~]$ showbf -n 13 -r 2
backfill window (user: 'saa' group: 'saa' partition: ALL) Wed Dec 5
19:43:42
38 procs available for 2:09:55:17
13 вузлів по 2 процесори на вузол будуть доступні найближчі 2
дні 9 годин 55 хвилин