|
|
## 1. Настройки среды на кластере
|
|
|
### 1.1 Загрузка модулей
|
|
|
Для работы с ParCS нужно загрузить модули ```intel``` (компиляторы) и ```impi``` (intel MPI library) для этого нужно выполнить команду
|
|
|
```shell
|
|
|
module load intel impi
|
|
|
```
|
|
|
Чтобы не выполнять эту команду каждый раз после входа на кластер, можно добавить ее в конец файла ```.bashrc```.
|
|
|
|
|
|
### 1.2 Установка FoBiS.py
|
|
|
FoBiS.py ([github](https://github.com/szaghi/FoBiS)) - утилита для сборки проектов на языке Фортран. В ParCS она используется как генератор Makefile-ов. Установить FoBiS можно стандартным способом
|
|
|
```shell
|
|
|
pip install FoBiS
|
|
|
```
|
|
|
### 1.3 Grads
|
|
|
[Grads](http://cola.gmu.edu/grads/) (ссылка доступна под vpn) - удобное средство для визулизации геофизических полей. Grads уже установлен на кластере, чтобы получить к нему доступ, нужно в ```.bashrc``` добавить следующие строки
|
|
|
```shell
|
|
|
export PATH=${PATH}":/data4t/tolstykh/grads-2.0.2/bin"
|
|
|
GADDIR=/home/users/vshashkin/soft/grads/data
|
|
|
GASCRP=/home/users/vshashkin/soft/grads
|
|
|
GAUDPT=/usr/share/grads/udpt
|
|
|
export GASCRP
|
|
|
export GADDIR
|
|
|
export GAUDPT
|
|
|
```
|
|
|
запуск градс - командой ```grads``` на кластере. Если ваша домашняя машина под ОС Windows нужно установить [Xming](https://sourceforge.net/projects/xming/) и запустить его перед подключение на кластер по ```ssh```. На линукс машинах достаточно подключаться по ssh с опцией -X:
|
|
|
```shell
|
|
|
ssh -X cluster2.inm.ras.ru
|
|
|
```
|
|
|
|
|
|
## 2. Клонирование, компиляция, запуск
|
|
|
### 2.1 Скопировать репозиторий модели на кластер можно командой
|
|
|
```shell
|
|
|
git clone https://gitlab.inm.ras.ru/vshashkin/ParCS.git
|
|
|
```
|
|
|
|
|
|
### 2.2 Компиляция
|
|
|
В появившейся папке ParCS нужно выполнить команду
|
|
|
```shell
|
|
|
./genMakefile.sh
|
|
|
```
|
|
|
которая сгенерирует (или обновит) Makefile-ы модели. Процесс сборки запускается командой
|
|
|
```shell
|
|
|
make NH_MAIN
|
|
|
```
|
|
|
или
|
|
|
```shell
|
|
|
make -f Makefile.opt NH_MAIN
|
|
|
```
|
|
|
Если процесс сборки прошел успешно, то должен появиться (обновиться) файл ```NH_MAIN```, что можно проверить выполнив ```ls -ltr```, последней строчкой должен быть файл ```NH_MAIN```
|
|
|
|
|
|
Первая команда собирает модель в отладочном (медленном варианте), вторая - в оптимизированном. После внесения изменений в код рекомендуется собрать отладочный вариант и расчитать несколько шагов. Если все в порядке - собрать оптимизированный вариант и запускать эксперименты.
|
|
|
|
|
|
### 2.3 Запуск расчетов
|
|
|
#### Основные сведения
|
|
|
На кластере ИВМ работает система очередей Slurm. Есть две очереди ```normal``` и ```short```. Последняя - 48 ядер для коротких отладочных расчетов длительностью до 1 часа (как раз для базовых экспериментов с моделью).
|
|
|
|
|
|
Загрузку кластера можно посмотреть выполнив команду ```slurmtop```. Примерный вывод команды:
|
|
|
Свободным вычислительным ядрам соответствуют точки. На картинке выше свободно 32 ядра на узлах n37 и n38 (это очередь short).
|
|
|
|
|
|
#### Запуск модели
|
|
|
В папке модели рекомендуется создать папку для запусков run ```mkdir run```. Перейдите в нее ```cd run``` и создайте в ней скрипт запуска ```run.qs``` следующего вида:
|
|
|
```shell
|
|
|
#!/bin/bash
|
|
|
|
|
|
#SBATCH --job-name=NH_model
|
|
|
#SBATCH --output=nh.out
|
|
|
#SBATCH --partition=short
|
|
|
#SBATCH --time=01:00:00
|
|
|
|
|
|
####### number of MPI ranks
|
|
|
#SBATCH --ntasks=24
|
|
|
|
|
|
####### number of OMP threads per MPI rank
|
|
|
#SBATCH --cpus-per-task=1
|
|
|
|
|
|
## set number of OMP thread to the value of --cpus-per-task
|
|
|
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
|
|
|
|
|
|
export KMP_STACKSIZE=3600m
|
|
|
export MPI_OPENMP_INTEROP=yes
|
|
|
export MKL_SERIAL=YES
|
|
|
export I_MPI_PIN_DOMAIN=auto
|
|
|
ulimit -s 3600000
|
|
|
|
|
|
#change folder to model run folder:
|
|
|
WDIR=/home/username/ParCS/run
|
|
|
cd $WDIR
|
|
|
|
|
|
date > nh.out
|
|
|
mpirun -n $SLURM_NTASKS ../NH_MAIN ../namelist_Schar3d >> nh.out
|
|
|
date >> nh.out
|
|
|
```
|
|
|
В этом шаблоне нужно изменить следующие вещи:
|
|
|
1. Число ядер ```#SBATCH --ntasks=24``` - выбирайте в зависимости от доступных ресурсов и необходимой скорости расчетов.
|
|
|
2. Имя папки, где будут происходить расчеты ```WDIR=/home/username/ParCS/run```
|
|
|
3. Имя конфигурационного файла модели ```../namelist_Schar3d``` (см. стандартные эксперименты, чтобы узнать какие файлы конфигурации можно использовать)
|
|
|
|
|
|
Также, возможно потребуется изменить следующие строки скрипта:
|
|
|
1. Очередь: ```#SBATCH --partition=short``` - для длительных расчетов потребуется очередь ```normal```.
|
|
|
2. Ограничение по времени ```#SBATCH --time=01:00:00```
|
|
|
|
|
|
Постановка задачи в очередь - командой ```sbatch run.qs```, если все прошло нормально, то задача должна появиться в выводе команды ```squeue``` и в ```slurmtop```. Статус задачи R говорит о том, что она считается, PD - в очереди. Если после команды ```sbatch``` задача не появилась в очереди, посмотрите файл nh.out, там должны появиться сообщения об ошибках запуска.
|
|
|
|
|
|
Лог расчета выводится в файл ```nh.out``` наблюдать процесс разчета можнос помощью команды ```tail -f nh.out`` которая будет примерно 1 раз в 30 секунд выводить последние строки записанные в этот файл.
|
|
|
|
|
|
***Отменить*** задачу можно командой ```scancel JOBID```, где JOBID - идентификатор задачи, указанный в соответствующей колонке таблицы, выдаваемой ```squeue``` или ```slurmtop```.
|
|
|
|
|
|
## 3. Стандартные эксперименты |