ЩО, ДЕ, ЯК?
Інструкція з запуску завдань на кластері ГАО
Для того, щоб поставити задачу на виконання, потрібно підготувати скрипт запуску, або зробити це в інтерактивному режимі. Задача компілюється, потім ставиться в чергу за допомогою програми qsub (man qsub).
Приклади запуску серійної задачі:
a)
~$ echo "sleep 1m" | qsub
b) за допомогою сценарію:
створюється скрипт запуску задачі run.sh:
~$ cat run.sh
#PBS -k oe
#PBS -m abe
#PBS -N run
#!/bin/sh
cd $PBS_O_WORKDIR
export PATH=$PATH:$PBS_O_WORKDIR
sleep 1m
exit 0
~$
Запуск скрипта:
~$ qsub -V run.sh
(обов'язково потрібно вказати опцію -V).
Для компіляції та запуску паралельних задач на кластері можна використовувати компілятори GNU або Intel. Вибір компілятора здійснюється за допомогою команд mpi-selector та mpi-selector-menu.
Переглянути список доступних реалізацій MPI можна за допомогою команди:
~$ mpi-selector --list
openmpi-1.4.3
openmpi-1.4.3-intel
~$
На даний час встановлено дві реалізації OpenMPI: openmpi-1.4.3 (GNU) і openmpi-1.4.3-intel (Intel).
Дізнатись, яку реалізацію MPI ви використовуєте, можна за допомогою команди:
~$ mpi-selector --query
default:openmpi-1.4.3
level:user
~$
Змінити реалізацію MPI можна за допомогою команди:
~$ mpi-selector-menu
Current system default: openmpi-1.4.3
Current user default: openmpi-1.4.3
"u" and "s" modifiers can be added to numeric and "U"
commands to specify "user" or "system-wide".
1. openmpi-1.4.3
2. openmpi-1.4.3-intel
U. Unset default
Q. Quit
Selection (1-2[us], U[us], Q): 1u
Defaults already exist; overwrite them? (Y/N) y
Current system default: openmpi-1.4.3
Current user default: openmpi-1.4.3
"u" and "s" modifiers can be added to numeric and "U"
commands to specify "user" or "system-wide".
1. openmpi-1.4.3
2. openmpi-1.4.3-intel
U. Unset default
Q. Quit
Selection (1-2[us], U[us], Q): Q
~$
mpi-selector-menu змінює системні змінні PATH та MANPATH лише при наступному вході користувача у shell. Тому після виконання команди mpi-selector-menu необхідно виконати команду bash -l чи відкрити новий shell.
Приклад запуску паралельних програм:
Компілюється програма, написана з використанням MPI-бібліотеки:
якщо це C-програма:
~$ mpicc -o your_program.exe your_program.c -lm
якщо це програма на Fortran-і:
~$ mpif77 -o your_program.exe your_program.f -lm
Створюється скрипт запуску задачі run-mpi.sh:
~$ cat run-mpi.sh
#PBS -N run-mpi
#PBS -k oe
#PBS -m abe
#PBS -l nodes=8
#!/bin/sh
cd $PBS_O_WORKDIR
export PATH=$PATH:$PBS_O_WORKDIR
mpiexec -n 8 ./your_program.exe
exit 0
~$
Задати чергу, у яку буде запущена задача, можна шляхом додавання у скрипт рядка:
#PBS -q cpu_8x6
Черга cpu_8x6 призначена для запуску CPU-задач, черги gpu_1 і gpu_2 − для запуску GPU-задач.
Запуск скрипта:
~$ qsub -V run-mpi.sh
(обов'язково потрібно вказати опцію -V).
В даному випадку задачу запущено на 8 CPU, це вказується в параметрі -n 8 програми mpiexec та параметрі #PBS -l nodes=8.
Більш докладно про описані опції і програми − man qsub, man mpiexec.
Опції в скрипті PBS:
-k: зберегти стандартне виведення (stdout) та стандартне виведення помилок (stderr).
-m: послати e-mail повідомлення у разі, якщо задача припинена batch-системою, коли задача почала виконуватись та коли виконалась.
-N: назва задачі в системі batch.
Подивитись на стан черги та чи запущена задача на виконання можна за допомогою команди:
~$ qstat
(більш докладно − man qstat).