Центр колективного користування
«Ресурсний центр для грід- та хмарних технологій»
Інституту теоретичної фізики ім.М.М.Боголюбова НАН України
Обчислювальний грід-кластер

Wolfram Mathematica

Даний документ описує роботу з програмою для розрахунків Mathematica у пакетному режимі. На відміну від інтерактивного режиму, що вимагає постійної присутності користувача для послідовного введення команд та перегляду результатів їх виконання, пакетний режим дозволяє автоматично оброблювати наперед задану у файлі послідовність команд і виводити результати до файлу. Користувач при цьому повинен виконати лише одну або декілька команд для початку обробки (при цьому створення файлу з послідовністю команд також є обов'язком користувача), після чого необхідність у його присутності зникає. По завершенню роботи програми, користувач може забрати файл з результатами в будь-який час.

Даний документ розрахований на користувачів кластеру Інституту теоретичної фізики ім. М.М.Боголюбова НАНУ, які мають досвід роботи з програмою Mathematica у інтерактивному режимі, і, таким чином, знайомі з її командами. Доступ до програми Mathematica можуть отримати лише користувачі кластеру ІТФ, за виключенням випадку, коли доступ до Mathematica відбувається через grid (див. відповідний розділ).

Користувачі, що не знайомі з програмою Mathematica, для набуття базових знань про неї можуть скористатися документацією на сайті розробника.

В разі виявлення помилок у роботі описаних у даному документі спеціальних команд для подання задач прохання повідомити про це  (pelyh@grid.bitp.kiev.ua, alitovchenko@bitp.kiev.ua, svistunov@bitp.kiev.ua).

Зміст

1. Загальні положення
2. Вхідні та вихідні файли пакетного режиму
3. Пакетна обробка вручну
4. Пакетна обробка через систему PBSPro
5. Розпаралелення пакетної обробки через систему PBSPro з використанням Parallel Computing Toolkit
6. Mathematica через grid
7. Mathematica у графічному режимі

1. Загальні положення

Інститут теоретичної фізики має право на одночасне використання 9 екземплярів програми Mathematica. Один екземпляр встановлено на вхідному вузлі кластеру clusterui.bitp.kiev.ua, до якого користувачі кластеру мають доступ. Таким чином, будь-який користувач кластеру може працювати з програмою на вказаному вузлі як у пакетному, так і у звичному інтерактивному режимі (звичайно, за умови, що наявний екземпляр програми на даний момент не використовується іншим користувачем). Інші екземпляри встановлено на внутрішніх вузлах кластеру, і робота з ними можлива лише у пакетному режимі через локальну систему керування ресурсами PBSPro.

Для ознайомлення з програмою Mathematica рекомендується використовувати екземпляр, встановлений на вузлі clusterui.bitp.kiev.ua. Після оволодіння навичками використання програми у пакетному режимі для проведення необхідних розрахунків рекомендується використовувати екземпляри на внутрішніх вузлах кластеру (див. розділ 4), оскільки наявність 8 встановлених екземплярів значно зменшує ймовірність простою задачі користувача при одночасній роботі з програмою декількох науковців.

Поверх Mathematica на вузлах кластеру встановлено спеціальний додатковий пакет Parallel Computing Toolkit, щo дозволяє розпаралелювати розрахунки і використовувати декілька вузлів замість одного. Створення вхідних файлів для нього та робота з ним у пакетному режимі мають свої особливості і відрізняються від пакетного режиму для звичайних, не розпаралелених задач, і тому описані окремо у розділі 5.

Для початку роботи з програмою у інтерактивному режимі слід зайти на вузол clusterui.bitp.kiev.ua та виконати команду math. Робота у пакетному режимі описана нижче у відповідних розділах.

2. Вхідні та вихідні файли пакетного режиму

Вхідний файл для пакетної обробки представляє собою просту послідовність команд програми, записаних до файлу. Кожна команда повинна починатися з нового рядка. Допускаються порожні рядки у файлі. Найпростіший вхідний файл для пакетної обробки може мати наступний вигляд:

 a=2*2 
 b=a-2 
 
 c=b*a 


Вихідний файл пакетного режиму містить результати виконання кожної з команд, що задана у вхідному файлі. Наприклад, результатом пакетної обробки вищезазначеного вхідного файлу буде файл вигляду:

 4 
 2 
 8 

При необхідності продублювати вміст вхідного файлу у вихідному, слід на початку вхідного файлу розмістити команду AppendTo[$Echo,"stdout"]. За допомогою даної команди перед кожним рядком вихідного файлу буде розміщений відповідний йому рядок вхідного. Наприклад, даний вхідний файл

 AppendTo[$Echo,"stdout"] 
 a=2*2 
 b=a-2 
 c=b*a 


призведе до наступного вихідного

 ("stdout") 
 a=2*2 
 4 
 b=a-2 
 2 
 c=b*a 
 8 

3. Пакетна обробка вручну

Користувачі можуть вручну запускати програму у пакетному режимі лише на вузлі clusterui.bitp.kiev.ua, до якого вони мають доступ. Для цього необхідно виконати наступні дії.

1. Підготувати вхідний файл (див. попередній розділ) та розмістити його на вузлі clusterui.bitp.kiev.ua (бажано у своєму домашньому каталозі).

2. Зайшовши на вузол clusterui.bitp.kiev.ua, виконати наступну команду:

nohup nice math -noinit -batchinput -batchoutput < "шлях_до_вхідного_файлу" > "ім'я_вихідного_файлу" 2>&1 &

Наприклад:

[user@clusterui ~]$ nohup nice math -noinit -batchinput -batchoutput < math.input > math.output 2>&1 &


Команда nohup забезпечить продовження виконання програми навіть у випадку, коли користувач завершує сеанс роботи на кластері. Отже, виконавши вказані команди, користувач може взагалі покинути кластер, і повернутися на нього в будь-який час для перевірки статусу завдання або для перегляду чи забирання результатів. Без використання цієї команди користувач повинен чекати, поки програма завершить свою роботу, не перериваючи сеанс зв'язку з кластером.

Команда nice забезпечить виконання програми з більш низьким пріоритетом, що дозволить їй виконуватися параллельно з усіма іншими процесами на вузлі, не створюючи значного навантаження на систему. Ця команда є обов'язковою, оскільки на даному вузлі одночасно і постійно виконуються процеси, стабільної роботи яких вимагає увесь кластер у цілому.

Після виконання даної послідовності команд програма розпочне роботу над вказаним вхідним файлом у пакетному режимі. При цьому робота програми буде проходити у фоновому режимі, тобто процес ніяк не буде сигналізувати про хід роботи та своє завершення. Для того, щоб дізнатися, чи завершила свою роботу програма, слід виконати команду jobs. Результатом виконання даної команди є список усіх процесів, що користувач запустив у фоновому режимі. Ознакою того, що програма завершила свою роботу, буде статус Done відповідного процесу. Наприклад:

[user@clusterui ~]$ jobs
[1]+  Done     nohup nice math -noinit -batchinput -batchoutput < math.input > math.output 2>&1
[user@clusterui ~]$


Статус Running сигналізує про те, що процес все ще виконує роботу. Відсутність програми у списку процесів сигналізує про те, що з якихось причин процес аварійно завершився. В такому разі слід заново запустити режим пакетної обробки за допомогою вищевказаних команд.

По завершенню роботи програми результати будуть знаходитися у вихідному файлі, ім'я якого користувач задає при запуску пакетного режиму. Слід зазначити, що вищевказані команди запуску змушують програму заносити усю інформацію про помилки, що сталися в процесі роботи, до вихідного файлу. Таким чином, користувач має змогу дізнатися про усі збої, що виникли під час спроби обробити вхідний файл, та виправити некоректну інформацію перед повторним запуском пакетної обробки.

4. Пакетна обробка через систему PBSPro

Для запуску програми у пакетному режимі користувачі повинні виконати наступні дії:

1. Підготувати вхідний файл (див. розділ 2) та розмістити його на вузлі clusterui.bitp.kiev.ua (бажано у своєму домашньому каталозі).

2. Зайшовши на вузол clusterui.bitp.kiev.ua, виконати наступну команду:

mathbatch submit "шлях_до_вхідного_файлу"

Наприклад:

[user@clusterui ~]$ mathbatch submit math.input


Якщо завдання було успішно подане на пакетну обробку, команда видасть наступний рядок:

Batch submitted with ID "Ідентифікатор"

Наприклад:

Batch submitted with ID 128.clusterui.bitp.kiev.ua


Вказаний ідентифікатор обов'язково потрібен для того, щоб дізнатися стан відправленого завдання. Усі ідентифікатори поточних завдань користувача разом із часом їх відправлення заносяться до файлу mathematica.jobs у домашньому каталозі користувача.

В разі виникнення збоїв при спробі розпочати пакетну обробку команда повідомить про це. Якщо користувач не в змозі вирішити вказану проблему самотужки, слід звернутися до адміністратора. Слід зазначити, що вказана команда повідомляє лише про помилки при спробі запустити програму Mathematica через систему PBSPro. Інформація про помилки, зв'язані з роботою власне Mathematica, буде занесена до вихідного файлу (див. нижче).

Після виконання даної команди програма розпочне роботу над вказаним вхідним файлом у пакетному режимі. Для того, щоб дізнатися, чи завершила свою роботу програма, слід виконати наступну команду:

mathbatch check "Ідентифікатор"

Наприклад:

[user@clusterui ~]$ mathbatch check 128.clusterui.bitp.kiev.ua


Команда видасть інформацію про те, завершилася задача, чи ще виконується. Якщо задача завершилася, у тому ж каталозі, де знаходиться вхідний файл, що був поданий на обробку, з'явиться вихідний файл з ім'ям, аналогічним вхідному файлу, але з додатковим розширенням .out. Наприклад, для вказаної вище команди mathbatch submit таким файлом буде math.input.out. У разі виникнення проблем із запитом статусу завдання команда виведе відповідне повідомлення.

5. Розпаралелення пакетної обробки через систему PBSPro з використанням Parallel Computing Toolkit

У зв'язку з модернізацією кластера ІТФ та переносом його серверів на даний момент автоматична паралельна пакетна обробка даних у Mathematica неможлива. Можливість паралельної обробки даних буде повернута у квітні, тоді ж тут з'явиться і вся необхідна документація.

Якщо існує крайня необхідність паралельної обробки даних у Mathematica, надішліть лист за однією з адресс pelyh@grid.bitp.kiev.ua, alitovchenko@bitp.kiev.ua чи svistunov@bitp.kiev.ua.

6. Mathematica через grid

Користувачі grid-сегменту НАНУ мають змогу використовувати Mathematica для пакетної обробки своїх даних, надіславши відповідним чином оформлену grid-задачу. Для цього слід:

1. Підготувати вхідні файли (див. відповідний розділ).

2. Підготувати виконуємий файл, в якому для кожного запуску Mathematica використовується наступна команда
math -noinit -batchinput -batchoutput < "шлях_до_вхідного_файлу" > "ім'я_вихідного_файлу" 2>&1

3. Підготувати опис grid-задачі мовою xrsl, обов'язково включивши до нього наступний атрибут:

(runTimeEnvironment="MATHEMATICA-6")

Крім того, усі вхідні файли потрібно в описі задачі описати за допомогою атрибуту inputFiles, а всі вихідні -- в атрибуті outputFiles.

Після чого подати опис задачі на виконання командою ngsub з будь-якої точки, де встановлено та налаштовано grid-клієнт для сегменту НАНУ.

Для прикладу розглянемо ситуацію, коли у користувача є два заздалегідь підготовлених вхідних файли: math.input.1 та math.input.2. Тоді виконуємий файл може мати ім'я math.sh та виглядати наступним чином:

 #!/bin/bash 
 echo -n "Computing the first input file with Mathematica\n" 
 math -noinit -batchinput -batchoutput < math.input.1 > math.output.1 2>&1 
 echo -n "The first file's computing is finished\n" 
 echo -n "Computing the second input file\n" 
 math -noinit -batchinput -batchoutput < math.input.2 > math.output.2 2>&1 
 echo -n "All files are computed\n" 


Опис задачі може мати ім'я math.xrsl та виглядати наступним чином:

 & 
 (executable="math.sh") 
 (inputFiles=("math.input.1" "") ("math.input.2" "")) 
 (outputFiles=("math.output.1" "") ("math.output.2" "")) 
 (stdout="output") 
 (stderr="error") 
 (runTimeEnvironment="MATHEMATICA-6") 


Створивши ці файли, користувач може відправити задачу на виконання:

[user@nordug ~]$ ngsub math.xrsl
Job submitted with jobid: gsiftp://nordug.bitp.kiev.ua:2811/jobs/2494012391286502018445874
[user@nordug ~]$


А після її завершення забрати результати на будь-який комп'ютер, на якому встановлено налаштований grid-клієнт для сегменту НАНУ:

[user@nordug ~]$ ngget gsiftp://nordug.bitp.kiev.ua:2811/jobs/2494012391286502018445874
Results stored at /home/user/2494012391286502018445874
Jobs processed: 1, successfuly downloaded: 1
[user@nordug ~]$ cd 2494012391286502018445874/
[user@nordug 2494012391286502018445874]$ cat math.output.1
4
16
[user@nordug 2494012391286502018445874]$

 

7. Mathematica у графічному режимі

Основна інструкція по використанню пакетів з графічним інтерфейсом на кластері ІТФ знаходиться тут.

1. X-forward

При запуску Mathematica через x-forward ви можете зіткнутися з проблемою відсутності шрифтів. Щоб її обійти запускайте Mathematica з ключом "-defaultvisual":

  • [user@clusterui ~] mathematica -defaultvisual

2.VNC

Mathematica працює у vnc-сервері без відомих проблем.