headerphoto

Вы находитесь в разделе "База знаний"

Здесь вы найдете полезную информацию об использовании кластера СКИФ Урал, очереди задач PBS/Torque, использовании программного пакета моделирования WIEN2k и о многом другом.



Запуск задач на СКИФ Урале (qjob)

Вчера обновил скрипт для генерации job-файлов для запуска задач на кластере для всех наших учетных записей (max, ursaeva, ruzanova). Раньше было много разных qjob_*, сейчас я оставил только один скрипт qjob, который я переименовал из qjob_mpi_all. Изменились опции для генерирования job-файла. Опишу, как пользоваться.

У скрипта есть хелп, там я постарался достаточно подробно изложить, какие опции можно использовать. Вызывается так:
qjob -h
Все опции имеют короткое и длинное имя (например, -n и -nodes). Хелп можно вызвать и так: qjob -help, или даже так: qjob --help. Их можно использовать совместно или отдельно в любом порядке. Если что-то не указываете, используются значения по умолчанию.

1) Чтобы создать job-файл для обычного расчета (runsp) достаточно просто набрать 'qjob' в папке расчета. Будут использованы все параметры по умолчанию (1 узел, 8 ядер, 500 часов, стандартная строка запуска runsp ..., lapw0 не в параллельном режиме).

2) Изменить параметы для узлов можно с помощью опции -n (или -nodes). Чтобы запросить 10 узлов с 8 ядрами на каждом и временем расчета 300 часов, достаточно набрать команду:
qjob -n 10:8:300
3) Добавить инициализацию расчета позволяет опция -i (или -init). Параметры инициализации по умолчанию -  Vxc=13, Ecut=-7.0, RKmax=10.0, numk=64. Если хотите задать следующие параметры - Vxc=13 (PBE), Ecut=-6.0, RKmax=7.0, 27 k-точки, то нужно запустить следующую команду:
qjob -i 13:-6.0:7.0:27
Она создаст следующую строку в job-файле:
init_lapw -red 0 -vxc 13 -ecut -6.0 -rkmax 7.0 -numk 27 -b -sp -nosgroup >> init.log
Виеновский скрипт init_lapw я поправил для учетной записи ruzanova, Gmax там всегда выставляется в 20.0, структурный файл без sgroup. Вывод инициализации можно будет посмотреть в дальнейшем в файле init.log.

4) Задать тип расчета (обычный SCF-цикл, минимизация, объемная оптимизация) можно опцией -s (или -scf). Возможные значения: r / run / runsp - будет сгенерирована команда runsp, m / min / minimization - команда min, v / vol / volopt - команда для запуска объемной оптимизации (необходим файл имя_папки.job в папке с расчетом). Примеры есть в хелпе, повторяться не буду.

5) Режим расчета lapw0. WIEN2k_10.1 я скомпиллировал с возможностью запуска lapw0_mpi в параллельном режиме, время выолнения сокращается заметно. Для включения/выключения этой возможности есть опция -l0 (или -lapw0). Возможные значения: s / ser / serial - для запуска в серийном режиме (под учетной записью ursaeva), p / para / parallel - в параллельном режиме. Примеры также есть в хелпе.

6) Возможность запуска задачи после ее генерации дает опция -q (или -qsub).

Вот рекомендуемые команды запуска под записью ruzanova (для Fe54):
qjob -n 8:8:500 -i 13:-7.0:10.0:64 -s runsp -l0 para
под учетной записью ursaeva:
qjob -n 8:8:500 -i 13:-7.0:10.0:64 -s runsp -l0 ser
Измените это строку для ваших параметров. Если инициализуцию делаете вручную, то -i 13:-7.0:10.0:64 можно убрать.

Замечания:
Если количество узлов больше одного, то будет сгенерирован job-файл, который при запуске создаст файл .machines со следующим содержанием (пример из реального расчета /home/ruzanova/calc/test/Fe54_4nodes):
1:node-04-09 node-04-09 node-04-09 node-04-09 node-04-09 node-04-09 node-04-09 node-04-09
1:node-05-01 node-05-01 node-05-01 node-05-01 node-05-01 node-05-01 node-05-01 node-05-01
1:node-05-02 node-05-02 node-05-02 node-05-02 node-05-02 node-05-02 node-05-02 node-05-02
1:node-05-03 node-05-03 node-05-03 node-05-03 node-05-03 node-05-03 node-05-03 node-05-03
Т.е. весь список k-точек (32 неэквивалентных точки) будет разбит на 4 части по 8 точек в каждой, затем каждый блок точек будет просчитываться на соответствующих узлах (точки с 1-й по 8-ю - на node-04-09, c 9-й по 16-ю - на node-05-01, с 17-й по 24-ю - на node-05-02, и с 25-й по 32-ю - на node-05-03) в mpi-параллельном режиме. Это дает реальное ускорение при расчетах, т.к. на каждый узел приходится меньшая нагрузка. При увеличении количества узлов в 2 раза, время расчета сокращается в 2 раза, т.е. тут зависимость пропорциональная, а это мечта любого расчетчика. Я провел серию тестовых расчетов, вот статистика:

Количество узлов/ядер Продолжительность расчета, мин
1/8 106.3
2/16 53.7
4/32 27.3
8/64 15.2
16/128 7.9
32/256 4.9

Единственное условие - нужно, чтобы количество ваших неэквивалентных k-точек нацело делилось на количество узлов (не процессоров). Это должно работать и для WIEN2k 8-й и 9-й версий.



Использование репозиториев SVN

Для того, чтобы начать пользоваться репозиторием, его нужно создать. Все примеры буду приводить для директории репозитория $HOME/repo/public_html. Рабочей копией будет $HOME/public_html.

Для создания репозитория используется следующая команда:

svnadmin create $HOME/repo/public_html

Эта команда создаст пустой репозиторий $HOME/repo/public_html. В этот репозиторий импортируем содержимое папки $HOME/public_html (папка содержала нужные файлы до введения системы контроля версий) следующей командой:

svn import $HOME/public_html/ file://$HOME/repo/public_html/ -m "Initial import"

Теперь все файлы этой папки находятся в репозитории. Чтобы получить к нему доступ, нужно сделать checkout для создания рабочей копии в нужной директории:

svn co file://$HOME/repo/public_html

Если необходимо создать рабочую копию в домашней директории, где уже имеется папка public_html, то эту папку вначале нужно переместить (например, в $HOME/tmp).

Если нужно получить рабочую копию по протоколу ssh, нужно использовать следующую команду:

svn co svn+ssh://username@server/home/username/repo/public_html

Если нужно изменить URL репозитория, следует использовать следующую команду (взято здесь):

svn switch --relocate

Пример:

svn switch --relocate file:///mnt/skif-ural/max/repo/skif-bin svn+ssh://max@skif-ural.susu.ac.ru/home/max/repo/skif-bin

Более подробная информация находится по адресу: http://svnbook.red-bean.com/en/1.0/re12.html


ѐא֐Րސ֐Ӑޑе кґґ валґ в РеҐࠑблике ѐѐؐёґан