Программа Autoreg

01Перед вами исходный код программы, генерирующей взволнованную морскую поверхность с помощью авторегрессионной модели. В нем используются

Исходный код исполняется в одном потоке, и вашей задачей будет ускорить его, используя различные приемы параллельного программирования и параллельные версии библиотек. Чтобы исключить влияние других процессов на производительность, программа запускается через систему очередей (команда sbatch). В качестве параллельной технологии используется OpenMP.

Исходный код

02Инструкции по сборке, запуску и визуализации находятся в файле README.md. Для того чтобы начать работу с программой, необходимо скопировать исходный код в домашнюю директорию и собрать его с помощью следующих команд.

module load hpc-2022 # подключаем зависимости
# копируем исходный код в текущую директорию
git clone https://courses.igankevich.com/high-performance-computing/autoreg.git
cd autoreg         # переходим в директорию с исходным кодом
make               # собираем основную программу
make visual        # собираем программу для визуализации
./autoreg          # запускаем основную программу
ls -l zeta         # при успешном выполнении должен появиться файл zeta в текущей директории

Запуск через планировщик

03Для запуска задачи через планировщик, необходимо написать скрипт job.sh следующего вида.

#!/bin/sh
export OMP_NUM_THREADS=8
cd /path/to/directory/with/autoreg
./autoreg

Затем сделать его исполняемым и отправить в очередь на исполнение.

chmod +x job.sh
sbatch job.sh

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

Визуализация

04Для визуализации поверхности необходимо зайти на машину с видеокартой (gpulab1 или capybara1) с графическим интерфейсом. После этого необходимо пересобрать программу visual на этой машине, чтобы она использовала правильные библиотеки. Далее запускаем эту программу через команду vglrun:

rm -f visual            # удаляем старую программу
make visual             # собираем новую
export LD_LIBRARY_PATH=$LIBRARY_PATH # устанавливаем переменную среды, без которой ничего не работает
vglrun ./visual zeta    # запускаем
Окно программы.
Окно программы.
Командная строка.
Графический интерфейс.