Запрос через PBS графических ускорителей

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

Используемые в ИВЦ НГУ сервера с графическими ускорителями имеют по несколько GPU каждый, что позволяет одновременно работать на каждом сервере нескольким задачам. При этом необходимо, чтобы разные задачи использовали разные ускорители и не мешали друг-другу.

Для запроса у планировщика задач необходимого задаче количества ускорителей используется ресурс 'ngpus'. Например, так:

#PBS -l select=1:ncpus=1:mem=2gb:ngpus=1


Altair PBS предоставляет два способа управления доступом к графическим ускорителям. В каждом из них физические ресурсы сервера логически делятся на несколько частей, называемых 'виртуальный узел' (virtual node, vnode). Термин 'виртуальный' не подразумевает обязательного использования какого-либо механизма виртуализации и означает только логическое выделение части ресурсов физического узла в отдельный виртуальный объект. В нашем центре ресурсы каждого сервера деляться на равные виртуальные узлы.

  1. Для очереди teslaq из серверов HP SL390s G7 используется более старый способ:
    • Каждый из серверов делится на три виртуальных узла, каждый из которых содержит один графический ускоритель, 4 процессорных ядра и 32 ГБ ОЗУ.
    • После запуска задача должна узнать, какой виртуальный узел (или узлы) ей выделен планировщиком, из его названия понять порядковый номер ускорителя, который она должна использовать, и затем как-то самостоятельно обеспечить, чтобы приложение задействовало именно этот ускоритель, а не какой-то другой.
    • Никакого контроля со стороны планировщика нет, задача может задействовать любой другой ещё не используемый ускоритель и помешать последующему запуску задач на этом сервере.

  2. Для очереди a6500g10q с сервером HPE Apollo 6500 Gen10 используется более современный способ, основанный на механизме 'контрольных групп' ядра Linux (cgroups), позволяющем ограничить доступ процессу (и его дочерним процессам) к ресурсам сервера.