Информация

Конкурс проводится при помощи разработанной в лаборатории DISLab автоматической системы HPCjudge, которая позволяет быстро получить ssh-доступ на вычислительные ресурсы, протестировать решение на корректность, оценить производительность, а также отправить с кластера или вычислительного узла полученный результат в общую таблицу результатов конкурса.

Автоматическая система начнет работать одновременно со стартом конкурса.

Регистрация и профиль

Для того, чтобы принять участие в конкурсе GraphHPC, участник должен зарегистрироваться и заполнить профиль. После этого участник может запрашивать ssh-доступ на предоставляемые вычислительные ресурсы или отправлять результаты, полученные на других HPC-системах (вне конкурса).

Для регистрации на сайте необходимо ввести адрес электронной почты, которая потом будет использоваться для дальнейшего взаимодействия.

При заполнении профиля необходимо ввести фамилию, имя и отчество, название организации (место учебы или работы), должность на месте работы или указать, например, «студент», «аспирант». Номер мобильного телефона необходим для связи в экстренных случаях и служит скорее демонстрацией добрых намерений участника конкурса. В случае необходимости получить ssh-доступ на предоставляемые вычислительные ресурсы нужно ввести желаемый логин и открытый ключ, который будет использоваться для ssh-доступа. Ssh-доступ осуществляется только по ключу, пароли использоваться не будут. Доступны инструкции по созданию ключей для Windows и Linux. Большинство полей необходимо заполнить на двух языках, если английский вариант не будет заполнен, будет произведена транслитерация.

Профиль нельзя будет изменить после того, как будет произведен запрос на ssh-доступ. Изменения возможны только при помощи Организационного комитета, просьба писать по адресу contest@dislab.org.

SSH-доступ

  • Мощный гибридный узел: 2x Intel Xeon E5-2683v3 2.00 ГГц (в сумме 28 ядер или 56 аппаратных потоков), NVIDIA GPU K20x, в узле 64 ГБ памяти.
  • 36-узловой кластер "Ангара-К1", узлы которого объединены сетью Ангара с топологией 3D-тор.

После того, как профиль заполнен, можно отправлять запрос ssh-доступа на вычислительный узел. По предоставленной в профиле информации Организационный комитет конференции GraphHPC принимает решение о предоставлении ssh-доступа. Организационный комитет оставляет за собой право отказать в ssh-доступе, если возникают сомнения о правдивости предоставленной информации. Решение о предоставлении ssh-доступа принимается как можно быстрее, однако возможны технические задержки.

Для получения ssh-доступа на многоузловой кластер просьба получить доступ на вычислительный узел, после этого необходимо написать письменный запрос по адресу contest@dislab.org.

Работа на вычислительном узле

Работа на вычислительном узле организована при помощи вспомогательного узла access-node, на который участники попадают при помощи ssh извне, и основного узла gpu-node, характеристики которого приведены выше. Прямой доступ на основной узел gpu-node запрещен. Участники конкурса должны выполнять все действия по сборке и отправке решений на управляющем узле access-node. Такая организация необходима для того, чтобы во время тестирования производительности решений не мешала работа других программ.

Программное обеспечение

На вычислительном узле установлено следующее программное обеспечение:

  • Компилятор icc 17.0.1
  • Компилятор gcc 4.8.3
  • CUDA Toolkit 8.0 для работы с GPU, на GPU отключен ECC
  • Установлена очередь заданий slurm.

Инструкция по работе для отладки решений

  1. Компиляция и сборка. Необходимо использовать icc, gcc, nvcc, ... .

  2. Запуск решений для отладки необходимо производить только с помощью очереди заданий slurm, так как прямой доступ на основной узел gpu-node запрещен.

    a) Первый способ. Команда для запуска отладки решений в интерактивном режиме (вывод результата в консоль):

    srun <исполняемый файл> <аргументы программы>
    

    b) Второй способ. Для отладки решений можно ставить задачи в очередь:

    sbatch
        -o <файл вывода> 
        -t <время в минутах>
        -J <имя задачи>
        --wrap "<исполняемый файл> <аргументы программы>"
    

    Посмотреть задачи в очереди:

    squeue
    

    Завершить задачу в очереди:

    scancel <идентификатор задачи>
    

Отправка решения в общую таблицу результатов конкурса

Чтобы отправить решение в таблицу результатов конкурса, необходимо воспользоваться скриптом для отправки.

Один вычислительный узел:

GraphHPC-submit
    --scale SCALE, -s SCALE
    --path [path]
    --system single

Кластер:

GraphHPC-submit
    --scale SCALE, -s SCALE
    --path [path]
    --system cluster
    --nodes NODES
    --ntasks-per-node PPN

Скрипт отправляет директорию path с решением на тестирование. Указанная директория должна содержать Makefile для сборки решения. Считается, что в решение входят все файлы внутри директории, файлы *.dyn, *.dpi. Бинарные файлы, файлы *.out, *.vinfo, *.res, а также директории .git, .svn, t не включаются в отправку. Файлы больше 150 КБ будут исключены из отправки.

В процессе сборки решения на одном узле выполняется команда make solution, на кластере выполняется команда make solution_mpi. Соответствено, запускаются исполняемые файлы solution и solution_mpi. Для использовании скриптов для запуска цели Makefile должны собирать исполняемые файлы с другими именами.

У всех скриптов есть параметры -h и --help, с помощью которых можно получить информацию о всех аргументах. Тестирование на производительность будет произведено на секретных графах, количество вершин у которых составляет 2^SCALE.

На кластере имеют значение также следующие аргументы: NODES — количество вычислительных узлов кластера, на которых будет запущено решение, PPN — количество MPI-процессов, которые будут создаваться на каждом узле (PPN часто указывают равным количеству ядер процессора). Также, на кластере запуск происходит обязательно с использованием скрипта solution_mpi (который должен быть в отправке), внутри которого происходит запуск исполняемого файла. Исполняемый файл должен при сборке получить другое имя. Простейшее содержимое скрипта solution_mpi имеет вид:

#!/bin/bash
srun ./solution_mpi_ $@

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

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

Общие советы по оптимизации

Советы по оптимизации и управлению OpenMP-нитями можно прочитать на странице Управление привязкой и переменные окружения.

Вопросы

Если у вас возникли какие-то вопросы, просьба писать по адресу contest@dislab.org.