Проект

Общее

Профиль

Руководство пользователя вычислительной системы с гибридной архитектурой

Описание системы

Вычислительная система с гибридной архитектурой состоит из двух вычислительных узлов. Первый из них (proxima1) включает в себя два шестидесятичетырехядерных процессора AMD EPYC 7742 с максимальной частотой 3,4 ГГц, 2 ТБ DDR4 ОЗУ и восемь сопроцессоров NVIDIA A100 GPU 40 ГБ, объединенных сетью NVLink. Второй узел (proxima2) содержит два двадцатичетырехядерных процессора AMD EPYC 7402 с максимальной частотой 3,35 ГГц, 2 ТБ DDR4 ОЗУ, четыре сопроцессора NVIDIA A800 GPU 80 ГБ и два сопроцессора NVIDIA A2 GPU 16 ГБ. Для хранения пользовательских данных доступно дисковое хранилище объемом 28 ТБ, построенное на основе накопителей NVMe. В качестве сети хранения данных используется сеть EDR InfiniBand с пропускной способностью в 100 Гбит/с.

Регистрация

Регистрация пользователей происходит через систему ЦКП http://ckp.ccfebras.ru.

Вход в систему

Для работы с системой пользователь должен иметь свою учетную запись. Регистрация пользователя происходит в соответствии с предыдущей частью руководства. После регистрации пользователь получает свое имя (логин), пароль и домашнюю директорию. Если имя пользователя, например, будет user, то домашняя папка находится в /home/user.

При первом входе в систему предлагается сменить пароль. Требования к новому паролю: он должен быть достаточной длины, содержать хотя бы 1 цифру и 1 заглавную букву.

Пользователи имеют возможность работать на вычислительной системе с любой машины, находящейся в сети института и интернет. Для входа в систему пользователю необходим адрес сервера (jupiter.febras.net), порт подключения (2020), а также имя и пароль, полученные при регистрации.

Вход с Windows-машины

Работа с системой осуществляется по безопасному протоколу SSH при помощи какого-либо ssh-клиента. Клиент должен поддерживать протокол версии 2. Рекомендуется использовать PuTTY. Эта программа является свободно распространяемой и проста в использовании.

После запуска программы пользователь должен выбрать протокол ssh, в поле «Host Name (or IP address)» указать адрес сервера, а в поле «Port» - номер используемого порта. Нажатие на «Open» приведет к отправке запроса на подключение. В случае успешного подключения к серверу будет предложено ввести имя (логин), а затем и пароль.

При вводе пароля символы на экране не отображаются. Если все введено правильно, то пользователь автоматически окажется в своей домашней директории.

Работа в ssh-сессии происходит в терминальном (текстовом, консольном) режиме. Необходимо помнить, что консоль Linux, в отличии от Windows, различает регистр вводимых символов, то есть mydoc.txt и mydoc.TXT не одно и то же. После входа на экране отображается консоль командного интерпретатора в формате имя_пользователя@машина текущий_каталог:

[user@proxima1 ~]$

Вход с терминала Linux

В любой дистрибутив ОС Linux входит терминальный ssh-клиент (обычно OpenSSH). Минимальный формат команды для подключения к кластеру таков:

[user@localhost ~]$ ssh -p 2020 jupiter.febras.net -l имя_пользователя

NVIDIA GPU Cloud

В качестве основного источника прикладного программного обеспечения для вычислительной системы используется реестр контейнеров NGC. Просмотреть список доступных пакетов и подробную информацию о каждом из них можно непосредственно на сайте NGC (https://catalog.ngc.nvidia.com/), а также при помощи интерфейса командой строки. Например, для поиска фреймворка TensorFlow необходимо ввести команду:

user@proxima1:~$ ngc registry image list --format_type csv |grep TensorFlow

В результате её выполнения будет выведен список контейнеров, в описании которых содержится подстрока “TensorFlow”. При этом каждая строка вывода соответствует отдельному контейнеру, содержащемуся в реестре. Название контейнера содержится во второй колонке каждой строки (в качестве разделителя используется запятая). Третья колонка содержит версию контейнера, используемую по умолчанию. В последней колонке указывается, является ли контейнер доступным для анонимного пользователя (unlocked), либо для его использования необходима регистрация в NGC (locked). По умолчанию в вычислительной системе доступно использование контейнеров первого типа.

Для получения подробной информации о контейнере, включающей список всех доступных версий, можно использовать команду:

user@proxima1:~$ ngc registry image info nvidia/tensorflow

Локальное программное обеспечение

Помимо контейнеризированного программного обеспечения в вычислительной системе доступно программное обеспечение, установленное локально. Его неполный список представлен в таблице 1.

Таблица 1. Локальное программное обеспечение

Пакет Компонент Версия Модуль
GNU Compiler Collection Компилятор C 11.4.0 -
Компилятор C++ 11.4.0 -
Компилятор Fortran 11.4.0 -
NVIDIA CUDA Toolkit - 12.4 -
NVIDIA HPC SDK - 24.3 nvhpc-openmpi3/24.3
Intel oneAPI Toolkit Компилятор C/C++ 2024.1.0 compiler/2024.1.0
Компилятор Fortran 2024.1.0 ifort/2024.1.0
Библиотека MKL 2024.1 mkl/2024.1
Библиотека MPI 2021.12 mpi/2021.12
Advisor 2024.1 advisor/2024.1
VTune 2024.1 vtune/2024.1

Программное обеспечение, для которого в колонке "Модуль" указан прочерк, не требует настройки перед использованием. Остальное программное обеспечение требует предварительной загрузки соответствующего модуля с использованием команды:

user@proxima1:~$ module load имя_модуля

Список всех загруженных модулей может быть получен при помощи команды:

user@proxima1:~$ module list

Все доступные в системе модули можно вывести командой:

user@proxima1:~$ module avail

Компиляция MPI программ

В вычислительной системе доступны следующие реализации библиотеки MPI:

Библиотеки MPI
Библиотека MPI Компилятор Модуль
OpenMPI 3.1.5 NVIDIA C/C++/Fortran nvhpc-openmpi3/24.3
Intel MPI 2021.12 Intel C/C++/Fortran mpi/2021.12
GNU C/C++/Fortran

Для использования OpenMPI с компиляторами из состава NVIDIA HPC SDK достаточно загрузить модуль "nvhpc-openmpi3/24.3". Перед компиляцией программ компиляторами Intel с применением библиотеки Intel MPI необходимо загрузить два модуля: "compiler/2024.1.0" и "mpi/2021.12". Модуль с компиляторами Intel можно не загружать, если вы планируете использовать библиотеку Intel MPI с компиляторами GNU. В связи с тем, что все реализации MPI конфликтуют между собой, перед загрузкой нового модуля необходимо выгружать текущий:

user@proxima1:~$ module unload nvhpc-openmpi3/24.3
user@proxima1:~$ module load compiler/2024.1.0 mpi/2021.12

После подключения нужного модуля, пути к данной библиотеке добавляются в переменные среды «PATH» и «LD_LIBRARY_PATH».

Для компиляции mpi программ лучше всего использовать обёртки к компиляторам, чем вручную прописывать для этого специальные флаги. Так, например, чтобы скомпилировать mpi программу, написанную на языке Fortran, нужно воспользоваться оберткой mpifort. Данная команда вызовет компилятор NVIDIA Fortran (при условии, что подключен модуль "nvhpc-openmpi3/24.3"), с указанием всех необходимых флагов.

Распишем соответствие между обертками и соответствующими им компиляторами:

Соответствие между обертками MPI и компиляторами
Обертка NVIDIA Intel
mpicc nvc gcc
mpifort nvfortran -
mpif77 nvfortran gfortran
mpif90 nvfortran gfortran
mpic++ nvc++ -
mpicxx nvc++ g++
mpiicx - icx
mpiifx - ifx
mpiicpx - icpx

Для того, чтобы посмотреть какие опции компилятора указываются при вызове обертки, можно воспользоваться следующей командой:

user@proxima1:~$ mpicc -show
nvc -I/opt/nvidia/hpc_sdk/Linux_x86_64/24.3/comm_libs/openmpi/openmpi-3.1.5/include
-Wl,-rpath -Wl,$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../lib:$ORIGIN/../../../compilers/lib:$ORIGIN/../../../../compilers/lib:$ORIGIN/../../../../../compilers/lib
-Wl,-rpath -Wl,/opt/nvidia/hpc_sdk/Linux_x86_64/24.3/comm_libs/openmpi/openmpi-3.1.5/lib -L/opt/nvidia/hpc_sdk/Linux_x86_64/24.3/comm_libs/openmpi/openmpi-3.1.5/lib -lmpi

Как видно из данного вывода, единственными опциями, которые может потребоваться указать при вызове компилятора, могут оказаться опции оптимизации.

Запуск заданий

Для запуска расчетов в вычислительной системе используется система диспетчеризации заданий Slurm (https://slurm.schedmd.com/quickstart.html). Она позволяет запускать задания в интерактивном режиме, а также помещать их в очередь для последующего исполнения.

Интерактивный режим работы реализуется при помощи команды “srun”. Ниже представлен пример запуска интерпретатора Python из контейнера “nvidia/tensorflow” версии “22.01-tf1-py3”.

user@proxima1:~$ srun --ntasks=1 --gres=gpu:a100:2 --cpus-per-gpu=1 --mem-per-gpu=16G --container-image=nvcr.io\#nvidia/tensorflow:22.01-tf1-py3 python -c 'import tensorflow ; print(tensorflow.__version__)'

Указанная команда предоставляет пользователю 2 GPU NVIDIA A100, каждому из которых дополнительно выделяется по 1 процессорному ядру и 16 ГБ оперативной памяти, после чего запускает исполняемый файл python на указанных ресурсах. Выбор типа используемых сопроцессоров осуществляется путем указания его идентификатора вторым аргументом в опции --gres=gpu:a100:2. Перечень доступных графических ускорителей с их идентификаторами приводится в таблице 2.

Таблица 2. Перечень доступных сопроцессоров

Наименование Объем видеопамяти, ГБ Количество Тип
NVIDIA A100 40 8 a100
NVIDIA A800 80 4 a800
NVIDIA A2 16 2 a2

Используемый контейнер задается при помощи опции “--container-image=nvcr.io\#nvidia/tensorflow:22.01-tf1-py3”. Имя контейнера имеет вид “реестр#имя_контейнера:версия_контейнера”. При использовании в качестве источника контейнеров облака NGC в качестве реестра необходимо указать “nvcr.io”. В отсутствии имени реестра контейнеры будут загружаться из реестра Docker Hub. Подробная инструкция по запуску контейнеров в Slurm доступна по адресу: https://github.com/NVIDIA/pyxis/wiki/Usage.

При необходимости задачи могут быть помещены в очередь заданий, из которой они будут передаваться на исполнение по мере освобождении запрошенных ресурсов. Сделать это можно при помощи команды “sbatch имя_скрипта”. Здесь имени скрипта соответствует имя специальным образом подготовленного скрипта командной оболочки, содержащего опции системы диспетчеризации заданий, описание запрашиваемых ресурсов и последовательность выполняемых в задании команд. Пример такого скрипта, сохраненного в файле “tensorflow.slurm”, представлен в листинге 1.

#!/bin/bash
#SBATCH --mail-user=user@mail.com
#SBATCH --mail-type=ALL
#SBATCH --ntasks=1
#SBATCH --cpus-per-gpu=1
#SBATCH --gres=gpu:a100:2
#SBATCH --mem-per-gpu=16G
#SBATCH --container-image=nvcr.io\#nvidia/tensorflow:22.01-tf1-py3
#SBATCH --time=0-00:15:00
#SBATCH --job-name=tensorflow_job

python -c 'import tensorflow ; print(tensorflow.__version__)'

Листинг 1. Содержимое файла “tensorflow.slurm

В первой строке скрипта указан используемый для его выполнения интерпретатор. Далее следуют опции диспетчера управления заданиями, начинающиеся с подстроки “#SBATCH”. Большинство из них имеют то же назначение, что и опции команды “srun” из приведенного ранее примера. Назначение дополнительных опций, содержащихся в файле “tensorflow.slurm”, представлено в таблице 3. С полным списком опций можно ознакомиться по адресу https://slurm.schedmd.com/sbatch.html. Все остальные строки скрипта, не начинающиеся с символа комментария “#”, являются его полезной нагрузкой. Они содержат команды, выполняющиеся на целевой системе.

Таблица 3. Назначение некоторых опций скрипта описания заданий Slurm

Опция Назначение
--mail-user=user@mail.com Адрес электронной почты пользователя, на который отправляются сообщения при изменении статуса задания
--mail-type=ALL Тип отправляемых сообщений (“ALL” соответствует всем доступным типам)
--time=0-00:15:00 Запрашиваемое время выполнения задания (Д-ЧЧ:ММ:СС)
--job-name=tensorflow_job Имя задания, отображаемое в выводе команд

Для помещения задания, описанного в скрипте “tensorflow.slurm” в очередь на исполнение, необходимо использовать команду “sbatch ./tensorflow.slurm”. Подразумевается, что команда запускается из директории, в которой находится скрипт. В противном случае необходимо передать команде “sbatch” полный путь к соответствующему скрипту. При успешном выполнении команды на консоль будет выведена строка, содержащая номер задания. Получить список всех заданий, помещенных в очередь на исполнение, можно с использованием команды “squeue”.

Вывод всех команд, записанных в скрипте описания задания, сохраняется в директории, из которой вызывалась команда “sbatch” под именем “slurm-номер_задания.out”.

В обоих вариантах запуска задания домашняя директория пользователя автоматически монтируется внутрь контейнера.

Запуск заданий с использованием локальных контейнеров

Запуск заданий с использованием ссылок на контейнеры в удаленных реестрах, как это делалось в разделе 2 настоящего руководства, подразумевает предварительную автоматическую загрузку и конвертацию образов контейнеров. Это приводит к значительным временным издержкам. Поэтому для ускорения работы с контейнерами рекомендуется сохранять их локальные копии. Для этого можно использовать приведенную ниже команду, в которой опция “--container-name=имя-контейнера” задает имя локального контейнера.

user@proxima1:~$ srun --ntasks=1 --mem-per-cpu=32G --container-image=nvcr.io\#nvidia/tensorflow:22.01-tf1-py3 --container-name=имя-контенера true

При необходимости можно выполнить модификацию сохраняемого образа. В этом случае вместо указанной выше команды необходимо использовать следующую:
user@proxima1:~$ srun --ntasks=1 --mem-per-cpu=32G --container-image=nvcr.io\#nvidia/tensorflow:22.01-tf1-py3 --container-name=имя-контейнера --container-remap-root --container-writable --pty bash

В результате внутри контейнера будет запущена командная оболочка с привилегиями суперпользователя, после выхода из которой все необходимые изменения будут записаны в его локальной копии. Аналогичную процедуру можно произвести и с уже сохраненным образом:
user@proxima1:~$ srun --ntasks=1 --mem-per-cpu=32G --container-name=имя-контейнера --container-remap-root --container-writable --pty bash

Имя получившегося контейнера можно использовать вместо ссылки на оригинальный контейнер при запуске заданий:

user@proxima1:~$ srun --ntasks=1 --gres=gpu:a100:2 --cpus-per-gpu=1 --mem-per-gpu=16G --container-name=имя-контейнера python -c 'import tensorflow ; print(tensorflow.__version__)'

Аналогичным образом можно указать имя контейнера и при постановке заданий в очередь на исполнение (листинг 2).
#!/bin/bash
#SBATCH --mail-user=user@mail.com
#SBATCH --mail-type=ALL
#SBATCH --ntasks=1
#SBATCH --cpus-per-gpu=1
#SBATCH --gres=gpu:a100:2
#SBATCH --mem-per-gpu=16G
#SBATCH --container-name=имя-контейнера
#SBATCH --time=0-00:15:00
#SBATCH --job-name=tensorflow_job

python -c 'import tensorflow ; print(tensorflow.__version__)'

Листинг 2. Содержимое файла описания задания при использовании локального образа контейнера

Список локальных контейнеров можно получить с использованием команды "enroot list":

user@proxima1:~$ enroot list
pyxis_имя-контейнера

В её выводе у всех локальных контейнеров, сохраненных с использованием команды "srun", будет указан префикс "pyxis_". Указанное имя с префиксом используется для удаления ненужного образа при помощи команды "enroot remove pyxis_имя-контейнера".

При необходимости можно сохранить контейнер в файл формата "sqsh", что позволит перенести его на свою локальную машину. Применяемая для этого команда приводится ниже.

user@proxima1:~$ srun --ntasks=1 --container-name=имя-контейнера --container-save=/путь/к/файлу/контейнера.sqsh true

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

user@proxima1:~$ srun --ntasks=1 --mem-per-cpu=32G --container-image=/путь/к/файлу/контейнера.sqsh --container-name=имя-контейнера true

Запуск задания в локальном окружении

Для запуска задания в локальном окружении (без использования контейнера) необходимо убрать опцию “--container-image” из командной строки или скрипта. При этом остальные опции остаются без изменений.

Запуск MPI заданий

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

user@proxima1:~$ cd /home/user/app_dir
user@proxima1:~$ module add nvhpc-openmpi3/24.3
user@proxima1:~$ srun --mpi=pmix --nodes=1 --ntasks=8 --cpus-per-task=2 --mem-per-cpu=1GB --time=0-05:00:00 app_name

Здесь опция "--ntasks" задает количество запускаемых MPI процессов, опция "--cpus-per-task" - количество аппаратных потоков, приходящихся на один MPI процесс, а опция "--mem-per-cpu" - объем оперативной памяти, выделяемой каждому аппаратному потоку. Запуск параллельной программы выполняется командой "srun". Скрипт, предназначенный для постановки в очередь аналогичного задания, представлен ниже.

#!/bin/bash
#SBATCH --mail-user=user@mail.com
#SBATCH --mail-type=ALL
#SBATCH --nodes=1
#SBATCH --ntasks=8
#SBATCH --cpus-per-task=2
#SBATCH --mem-per-cpu=1GB
#SBATCH --time=0-05:00:00
#SBATCH --job-name=mpi_job

module add nvhpc-openmpi3/24.3

cd /home/user/app_dir

srun --mpi=pmix app_name

При использовании библиотеки Intel MPI вместо модуля "nvhpc-openmpi3/24.3" необходимо загружать модуль "mpi/2021.12".

Мониторинг заданий

Мониторинг заданий, помещенных в очередь на исполнение, выполняется командой "squeue":

user@proxima1:~$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
               480     workq     job3    user2 PD       0:00      1 (Resources)
               481     workq     job4    user1 PD       0:00      1 (Priority)
               471     workq     job2    user2  R 1-00:34:36      1 proxima1
               438     workq     job1    user1  R   13:50:46      1 proxima1

Здесь в колонке "JOBID" приводится идентификатор задания, в колонке "PARTITION" - раздел вычислительной системы, в колонке "NAME" - имя задания, в колонке "USER" - имя пользователя, запустившего задание, в колонке "ST" - статус задания ("R" - задание выполняется, "PD" - задание ожидает начала выполнения), в колонке "TIME" - время выполнения задания, в колонке "NODES" - число узлов, на котором выполняется задание, а в колонке "NODELIST(REASON)" - имена узлов, на которых выполняется задание (в скобках - причина того, что задание не выполняется).

Сузить список выводимых заданий до заданий конкретного пользователя можно при помощи опции "--user":

user@proxima1:~$ squeue --user=user1
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
               481     workq     job4    user1 PD       0:00      1 (Priority)
               438     workq     job1    user1  R   13:50:46      1 proxima1

Команда "squeue" также поддерживает широкие возможность по модификации формата вывода. Например, для просмотра информации по заказанным заданиями ресурсам (числе процессорных ядер на задание и графических ускорителей на узел) используйте опцию "-O jobid,name,username,maxcpus,tres-per-node":

user@proxima1:~$ squeue -O jobid,name,username,maxcpus,tres-per-node
JOBID               NAME                USER                MAX_CPUS            TRES_PER_NODE
595                 job                 user                8                   gres:gpu:a100:8

Для получения подробной информации о задании можно также воспользоваться командой "scontrol", указав в её опциях "show job идентификатор_задания":

user@proxima1:~$ scontrol show job 760 -d
JobId=760 JobName=job
   UserId=user(1004) GroupId=user(1004) MCS_label=N/A
   Priority=4294901356 Nice=0 Account=account_name QOS=normal
   JobState=RUNNING Reason=None Dependency=(null)
   Requeue=1 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0
   DerivedExitCode=0:0
   RunTime=00:02:55 TimeLimit=00:15:00 TimeMin=N/A
   SubmitTime=2022-06-15T18:10:28 EligibleTime=2022-06-15T18:10:28
   AccrueTime=2022-06-15T18:10:28
   StartTime=2022-06-15T18:10:38 EndTime=2022-06-15T18:25:38 Deadline=N/A
   SuspendTime=None SecsPreSuspend=0 LastSchedEval=2022-06-15T18:10:38 Scheduler=Backfill
   Partition=workq AllocNode:Sid=proxima1:1138711
   ReqNodeList=(null) ExcNodeList=(null)
   NodeList=proxima1
   BatchHost=proxima1
   NumNodes=1 NumCPUs=2 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*
   TRES=cpu=2,mem=1G,node=1,billing=2,gres/gpu=1
   Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*
   JOB_GRES=gpu:a100:1
     Nodes=proxima1 CPU_IDs=0-1 Mem=1024 GRES=gpu:a100:1(IDX:0)
   MinCPUsNode=1 MinMemoryNode=0 MinTmpDiskNode=0
   Features=(null) DelayBoot=00:00:00
   OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
   Command=./job.slurm
   WorkDir=/home/user
   StdErr=/home/user/slurm-760.out
   StdIn=/dev/null
   StdOut=/home/user/slurm-760.out
   Power=
   CpusPerTres=gres:gpu:2
   MemPerTres=gres:gpu:1024
   TresPerNode=gres/gpu:a100:1
   MailUser=user@mail.com MailType=INVALID_DEPEND,BEGIN,END,FAIL,REQUEUE,STAGE_OUT

Указанная команда применяется и для получения информации о имеющихся вычислительных ресурсах. Для этого используется опция "show node имя_узла" (при отсутствии имени узла выводится информация по всем доступным узлам):

user@proxima1:~$ scontrol show node
NodeName=proxima1 Arch=x86_64 CoresPerSocket=64
   CPUAlloc=2 CPUEfctv=256 CPUTot=256 CPULoad=0.78
   AvailableFeatures=(null)
   ActiveFeatures=(null)
   Gres=gpu:a100:8(S:0-1)
   NodeAddr=proxima1 NodeHostName=proxima1 Version=23.11.5
   OS=Linux 5.15.0-1047-nvidia #47-Ubuntu SMP Tue Mar 12 21:08:43 UTC 2024
   RealMemory=2064000 AllocMem=51200 FreeMem=120410 Sockets=2 Boards=1
   State=MIXED ThreadsPerCore=2 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
   Partitions=workq
   BootTime=2024-04-12T16:58:35 SlurmdStartTime=2024-04-12T17:00:43
   LastBusyTime=2024-04-18T00:43:13 ResumeAfterTime=None
   CfgTRES=cpu=256,mem=2064000M,billing=256,gres/gpu=8
   AllocTRES=cpu=2,mem=50G,gres/gpu=1
   CapWatts=n/a
   CurrentWatts=0 AveWatts=0
   ExtSensorsJoules=n/a ExtSensorsWatts=0 ExtSensorsTemp=n/a

   NodeName=proxima2 Arch=x86_64 CoresPerSocket=24
   CPUAlloc=0 CPUEfctv=96 CPUTot=96 CPULoad=0.00
   AvailableFeatures=(null)
   ActiveFeatures=(null)
   Gres=gpu:a800:4(S:0-1),gpu:a2:2(S:0-1)
   NodeAddr=proxima2 NodeHostName=proxima2 Version=23.11.5
   OS=Linux 5.15.0-102-generic #112-Ubuntu SMP Tue Mar 5 16:50:32 UTC 2024
   RealMemory=2052000 AllocMem=0 FreeMem=2045570 Sockets=2 Boards=1
   State=IDLE ThreadsPerCore=2 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
   Partitions=workq
   BootTime=2024-04-12T21:20:36 SlurmdStartTime=2024-04-12T21:23:03
   LastBusyTime=2024-04-16T09:41:40 ResumeAfterTime=None
   CfgTRES=cpu=96,mem=2052000M,billing=96,gres/gpu=6
   AllocTRES=
   CapWatts=n/a
   CurrentWatts=0 AveWatts=0
   ExtSensorsJoules=n/a ExtSensorsWatts=0 ExtSensorsTemp=n/a

Приведенный вывод команды показывает, что вычислительная система состоит из двух узлов: "proxima1" и "proxima2". На первом из имеющихся 256 аппаратных потоков, 2 ТБ оперативной памяти и 8 графических ускорителей (CfgTRES=cpu=256,mem=2064000M,billing=256,gres/gpu=8) задействовано 2 аппаратных потока, 50 ГБ оперативной памяти и 1 графический ускоритель (AllocTRES=cpu=2,mem=50G,gres/gpu=1). При этом на втором узле доступны все имеющиеся ресурсы.

Принудительное завершение задания

Для принудительного завершения задания используйте команду "scancel идентификатор_задания":

user@proxima1:~$ scancel 595

Снимаемое задание может как исполняться, так и находится в очереди на выполнение.

Прекращение выполнения задания, запущенного командой "srun", осуществляется аналогично прекращению выполнения любого консольного приложения.