Руководство пользователя вычислительной системы с гибридной архитектурой¶
- Руководство пользователя вычислительной системы с гибридной архитектурой
Описание системы¶
Вычислительная система с гибридной архитектурой состоит из двух вычислительных узлов. Первый из них (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", осуществляется аналогично прекращению выполнения любого консольного приложения.