Преподаватели, научные сотрудники и студенты СПбГТИ(ТУ) могут выполнять научные расчеты на кластере высокопроизводительных вычислений (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