Преподаватели, научные сотрудники и студенты СПбГТИ(ТУ) могут выполнять научные расчеты на кластере высокопроизводительных вычислений (High-Performance Computing)
Общая информация
Кластер высокопроизводительных вычислений СПбГТИ(ТУ) имеет в составе 30 узлов, сгруппированных в разделы:
Раздел | Узлы | ЦП | ОЗУ | Локальное хранилище |
Максимальное время выполнения задачи |
---|---|---|---|---|---|
normal | 0, 6-29 | 2 x 12-ядерных Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20ГГц | 128 ГБ DDR4 | 2 х 2ТБ НМЖД (SAS RAID0) | 90 дней |
highmem | 1-3 | 2 x 12-ядерных Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20ГГц | 768 ГБ DDR4 | 2 х 2ТБ НМЖД (SAS RAID0) | 90 дней |
debug | 4-5 | 2 x 12-ядерных Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20ГГц | 128 ГБ DDR4 | 2 х 2ТБ НМЖД (SAS RAID0) | 5 минут |
Кластер управляется планировщиком SLURM, используется тонкий провижнинг - загрузка всех узлов осуществляется по сети с master-ноды node0 и занимает в среднем не более 3х минут - время, установленное в качестве задержки перед выполнением задачи, в случае, если назначенные узлы выключены.На узлах раздела highmem (node[1-3]) смонтирована файловая система tmpfs /mnt/ramdisk объемом 680ГБ
В целях энергосбережения, вычислительные узлы включаются или выключаются по мере необходимости.
Система хранения и структура папок
Каждый вычислительный узел имеет по сети 10Гбит/с доступ к сетевым файловым системам (NFS):
node0:/opt - прикладное ПО (gaussian 9 и 16, cfour, ORCA gromacs)
node0:/home - домашние папки пользователей
Для хранения временных файлов прикладного ПО на каждом вычислительном узле смонтирован scratch-диск /scr0 (2х2ТБ SAS в RAID-0)
Для хранения пользовательских данных предусмотрена NFS-папка /home/<имя_пользователя>, доступная на всех узлах.
Внимание! Данная папка не должна использоваться в качестве scratch для расчетных задач, поэтому для запуска задач настоятельно рекомендуется использовать пакетные файлы, приведенные в настоящем руководстве
Конфигурация сети
Все вычислительные узлы Кластера подключены к высокоростной сети стандарта 10 Gigabit Ethernet с поддержкой технологии удаленного прямого доступа к памяти (RDMA) и передачи данных с минимальной задержкой. При размещении задачи планировщик по возможности выбирает для задачи узлы, подключенные к одному коммутатору.
Доступ к кластеру
Для доступа к Кластеру по протоколу SSH из сети Института или через VPN используйте адрес:
login.hpc.ti.local
В качестве клиента ОС Windows рекомендуется использовать свободно-распостраняемые программы PuTTY и WinSCP. Доступ клиентов ОС Linux может осуществляться с помощью встроенных команд ssh и scp.
Логин и пароль - выданные Вам сотрудниками управления информационных технологий (отличные от имени входа в корпоративный домен TI.local). Имеется возможность не вводить пароль и авторизоваться по RSA-ключу.
Просмотр состояния узлов (нод)
[user@node0 ~]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
normal* up 90-00:00:0 2 drain node[0,8]
normal* up 90-00:00:0 3 alloc node[6-7,9]
normal* up 90-00:00:0 20 idle node[10-29]
highmem up 90-00:00:0 3 alloc node[1-3]
debug up 15:00 2 down* node[4-5]
alloc (ALLOCATED) - узел занят задачей
down (DOWN) - узел выключен
idle (IDLE) - узел простаивает
drain (DRAIN) - узел выведен из эксплуатации администратором или планировщиком
Просмотр очереди задач
[user@node0 ~]$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
XX normal XXXXX XXX R 20:02:58 3 node[6-7,9]
XX highmem XXXXX XXX R 5:19:55 3 node[1-3]
Модули окружения
HPC-кластер использует модульную среду для предоставления доступа к приложениям, инструментам и библиотекам. Модули позволяют нам предоставлять несколько версий приложений и библиотек, не вызывая конфликтов. Загружая модуль, ваша среда настраивается так, чтобы вы могли использовать выбранное приложение, устанавливая необходимые пути и переменные среды. Модули можно загружать и выгружать динамически, что дает вам полный контроль над вашей рабочей средой.
module avail
Чтобы просмотреть полный список приложений и библиотек, доступных для использования в Viper, запустите модуль avail, как показано ниже (показаны лишь некоторые из доступных модулей):
[root@node0 ~]# module avail
-------------------------- /opt/ohpc/pub/modulefiles ---------------------------
advisor/latest hpcx/2.2.0/hpcx-ompi-3.1.3
advisor/2021.4.0 (D) hpcx/2.2.0/hpcx-prof-ompi
ccl/latest hpcx/2.2.0/hpcx-prof
ccl/2021.4.0 (D) hpcx/2.2.0/hpcx-stack
cfour/2.0beta-icc-2018-ompi hpcx/2.2.0/hpcx (D)
cfour/2.1-icc-2018-ompi hpcx/2.3.0/hpcx-cuda-ompi
cfour/2.1.09-icc-1api-ompi hpcx/2.3.0/hpcx-cuda
cfour/2.1.0921-omp (D) hpcx/2.3.0/hpcx-mt-ompi
clck/latest hpcx/2.3.0/hpcx-mt
clck/2021.4.0 (D) hpcx/2.3.0/hpcx-ompi
clustershell/1.8 hpcx/2.3.0/hpcx-prof-ompi
cmake/3.10.2 hpcx/2.3.0/hpcx-prof
compiler-rt/latest hpcx/2.3.0/hpcx-stack
compiler-rt/2021.4.0 (D) hpcx/2.3.0/hpcx (D)
compiler-rt32/latest icc/latest
compiler-rt32/2021.4.0 (D) icc/2021.4.0 (D)
compiler/latest icc32/latest
compiler/2021.4.0 (D) icc32/2021.4.0 (D)
compiler32/latest init_opencl/latest
compiler32/2021.4.0 (D) init_opencl/2021.4.0 (D)
dal/latest inspector/latest
dal/2021.4.0 (D) inspector/2021.4.0 (D)
debugger/latest intel_ipp_ia32/latest
debugger/10.2.4 (D) intel_ipp_ia32/2021.4.0 (D)
dev-utilities/latest intel_ipp_intel64/latest
dev-utilities/2021.4.0 (D) intel_ipp_intel64/2021.4.0 (D)
dnnl-cpu-gomp/latest intel_ippcp_ia32/latest
dnnl-cpu-gomp/2021.4.0 (D) intel_ippcp_ia32/2021.4.0 (D)
dnnl-cpu-iomp/latest intel_ippcp_intel64/latest
dnnl-cpu-iomp/2021.4.0 (D) intel_ippcp_intel64/2021.4.0 (D)
dnnl-cpu-tbb/latest itac/latest
dnnl-cpu-tbb/2021.4.0 (D) itac/2021.4.0 (D)
dnnl/latest mkl/latest
dnnl/2021.4.0 (D) mkl/2021.4.0 (D)
dpct/latest mkl32/latest
dpct/2021.4.0 (D) mkl32/2021.4.0 (D)
dpl/latest mpi/latest
dpl/2021.5.0 (D) mpi/2021.4.0 (D)
gaussian/g09.a02 oclfpga/latest
gaussian/g09.d01.linda oclfpga/2021.4.0 (D)
gaussian/g09.d01 orca/4.1.1
gaussian/g09.d02 orca/4.1.2
gaussian/g09.e01 orca/5.0.1 (D)
gaussian/g16.a03 pmix/2.1.1
gaussian/g16.c01 (D) tbb/latest
hpcx/2.0.0/hpcx-ompi-icc tbb/2021.4.0 (D)
hpcx/2.0.0/hpcx-ompi-v3.0.x tbb32/latest
hpcx/2.0.0/hpcx-stack tbb32/2021.4.0 (D)
hpcx/2.0.0/hpcx (D) turbomole/7.1
hpcx/2.2.0/hpcx-cuda-ompi turbomole/7.3 (D)
hpcx/2.2.0/hpcx-cuda vpl/latest
hpcx/2.2.0/hpcx-mt-ompi vpl/2021.6.0 (D)
hpcx/2.2.0/hpcx-mt vtune/latest
hpcx/2.2.0/hpcx-ompi vtune/2021.7.1 (D)
hpcx/2.2.0/hpcx-ompi-1api
Скрипты запуска для различных пакетов
Gaussian 16
#!/bin/bash -l
#SBATCH -J g16-linda
# Max run time (3 months)
#SBATCH -t 90-00:00:00
#
# 1 linda worker per server
#SBATCH --ntasks-per-node=1
#SBATCH -c 24
# Specify slurm partition
#SBATCH --partition=normal
# Errors
#SBATCH --error=Job.%J.stderr
# Standard Output
#SBATCH --output=Job.%J.out
# Run using a group account
#SBATCH -A gaussian
# E-mail settings
#SBATCH --mail-type=ALL
#SBATCH --mail-user=user@domain.tld
JobFile=${1}
# Remove options for parallel run
sed -i '/NProcShared/Id; /NProcLinda/Id; /LindaWorkers/Id' ${1}
# Load the environment module
module load gaussian/g16.c01
# Recommended somewhere
export OMP_NUM_THREADS=1
# Next lines are there for linda to know what nodes to run on (and we'd like to run it over 10GbE network)
NodeList="$(srun hostname -s | sed -e 's/$/-bond0/' | sort -u | xargs)"
export GAUSS_LFLAGS='-nodelist "'$NodeList'" -opt "Tsnet.Node.lindarsharg: ssh"'
export GAUSS_SCRDIR=${GAUSS_SCRDIR}/${USER}/${SLURM_JOBID}
mkdir -p $GAUSS_SCRDIR
ParOptions="%NProcLinda=${SLURM_NNODES}\n%NProcShared=${SLURM_CPUS_PER_TASK}"
# Write number of Linda Workers to a Job file
echo -e "${ParOptions}\n$(cat $JobFile)\n" > $JobFile
sed -i -e "/link[0-9]/Ia ${ParOptions}" $JobFile
TASK_NAME=$(echo ${1%.*})
time $g16root/g16/g16 ${JobFile} Job.${SLURM_JOBID}.${TASK_NAME}.log
Gaussian 09
#!/bin/bash -l
#SBATCH -J g09-linda
# Max run time (3 months)
#SBATCH -t 90-00:00:00
#
# 1 linda worker per server
#SBATCH --ntasks-per-node=1
#SBATCH -c 24
# Specify slurm partition
#SBATCH --partition=normal
# Errors
#SBATCH --error=Job.%J.stderr
# Standard Output
#SBATCH --output=Job.%J.out
# Run using a group account
#SBATCH -A gaussian
# E-mail settings
#SBATCH --mail-type=ALL
#SBATCH --mail-user=user@domain.tld
JobFile=${1}
# Remove options for parallel run
sed -i '/NProcShared/Id; /NProcLinda/Id; /LindaWorkers/Id' ${1}
# Load the environment module
module load gaussian/g09.e01
# Recommended somewhere
export OMP_NUM_THREADS=1
# Next lines are there for linda to know what nodes to run on (and we'd like to run it over 10GbE network)
NodeList="$(srun hostname -s | sed -e 's/$/-bond0/' | sort -u | xargs)"
export GAUSS_LFLAGS='-nodelist "'$NodeList'" -opt "Tsnet.Node.lindarsharg: ssh"'
export GAUSS_SCRDIR=${GAUSS_SCRDIR}/${USER}/${SLURM_JOBID}
mkdir -p $GAUSS_SCRDIR
ParOptions="%NProcLinda=${SLURM_NNODES}\n%NProcShared=${SLURM_CPUS_PER_TASK}"
# Write number of Linda Workers to a Job file
echo -e "${ParOptions}\n$(cat $JobFile)\n" > $JobFile
sed -i -e "/link[0-9]/Ia ${ParOptions}" $JobFile
TASK_NAME=$(echo ${1%.*})
time $g09root/g09/g09 ${JobFile} Job.${SLURM_JOBID}.${TASK_NAME}.log
ORCA 5.0.1
#SBATCH --output=Job.%J.out
# Run using a group account
#SBATCH -A orca
# E-mail settings
#SBATCH --mail-type=ALL
#SBATCH --mail-user=user@domain.tld
# Load the appropriate modules
module load hpcx/2.2.0/hpcx-ompi-3.1.3
module load orca/5.0.1
# Use all cores
export OMP_NUM_THREADS=1
# Suppress MXM warnings
export MXM_LOG_LEVEL=error
# Remove PAL option (if exists) and insert the new one
sed -i "/%pal/,+2d;/\!/ a %pal\nnproc ${SLURM_NTASKS}\nend" ${1}
# Create Temporary dir and copy input file on nodes
export TDIR=/scr0/${USER}/${SLURM_JOBID}
TASK_NAME=$(echo ${1%.*})
srun mkdir -p ${TDIR}
sbcast ${1} ${TDIR}/${1}
sbcast ${TASK_NAME}.gbw ${TDIR}/${TASK_NAME}.gbw
#sbcast ${TASK_NAME}.xyz ${TDIR}/${TASK_NAME}.xyz
for FILE_NAME in *.xyz; do sbcast ${FILE_NAME}.xyz ${TDIR}/${FILE_NAME}.xyz; done
export TMPDIR=${TDIR}
export RSH_COMMAND="/usr/bin/ssh -x"
echo "module load hpcx/2.2.0/hpcx-ompi-3.1.3" >> ~/.bashrc
set -e
${ORCA_PATH}/orca ${TDIR}/${1} > Job.${SLURM_JOBID}.${TASK_NAME}.log
sed -i '/hpcx-ompi-3.1.3/d' ~/.bashrc
# Copy back the results
export RESULTS_DIR=${SLURM_SUBMIT_DIR}/Job.${SLURM_JOBID}.${TASK_NAME}.results
mkdir -p ${RESULTS_DIR}
#for FILE_NAME in ${TDIR}/*.xyz ${TDIR}/*.gbw ${TDIR}/*.trj;
#do yes | cp -rf ${FILE_NAME} ${RESULTS_DIR}/; done
srun cp -rf ${TDIR}/{*.xyz,*.gbw,*.trj,*.hess} ${RESULTS_DIR}/ 2>/dev/null || :
#srun cp -rf ${TDIR}/*.gbw ${RESULTS_DIR}/ 2>/dev/null || :
#srun cp -rf ${TDIR}/*.trj ${RESULTS_DIR}/ 2>/dev/null || :
CFOUR 2.00b
#!/bin/bash -l
#SBATCH -J cfour
# Max run time (3 months)
#SBATCH -t 90-00:00:00
#
# 8 cfour worker per server
#SBATCH --ntasks-per-node=8
# Specify slurm partition
#SBATCH --partition=highmem
# Errors
#SBATCH --error=Job.%J.stderr
# Standard Output
#SBATCH --output=Job.%J.out
# Run using a group account
#SBATCH -A cfour
# E-mail settings
#SBATCH --mail-type=END
#SBATCH --mail-user=user@domain.tld
JobFile=${1}
module load cfour/2.1-icc-2018-ompi
export PATH=/opt/hpcx-v2.2.0/ompi-3.1.3-icc/bin/:$PATH
# Recommended somethere
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
export CFOUR_NUM_CORES=${SLURM_NTASKS}
# Copy files to scratch on nodes
sbcast ${1} $CFOUR_SCRDIR/ZMAT
sbcast ${CFOUR_ROOT}/basis/GENBAS $CFOUR_SCRDIR/GENBAS
cd $CFOUR_SCRDIR
xcfour > ${SLURM_SUBMIT_DIR}/Job.${SLURM_JOB_ID}.log
turbomole 7.3
#!/bin/bash -l
#SBATCH -J tm73
# Max run time (3 months)
#SBATCH -t 90-00:00:00
# Specify slurm partition
#SBATCH --partition=normal
# Tasks per node
#SBATCH --ntasks-per-node=24
# Errors
#SBATCH --error=Job.%J.stderr
# Standard Output
#SBATCH --output=Job.%J.out
# Run using a group account
#SBATCH -A turbomole
# E-mail settings
#SBATCH --mail-type=ALL
#SBATCH --mail-user=user@domain.tld
# Set the temp dir
export TURBOTMPDIR=/scr0/${USER}/${SLURM_JOBID}/
srun mkdir -p ${TURBOTMPDIR}
# Use all cores
export PAR_NODES=$SLURM_NTASKS
# Load the environment module
module load turbomole/7.3
# Go to the Job Dir and Run
chmod +x ${1}/start-job
cd ${1} && ./start-job