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