Программа Autoreg
01Перед вами исходный код программы, генерирующей взволнованную морскую поверхность с помощью авторегрессионной модели. В нем используются
- библиотека LAPACK для решения СЛАУ,
- библиотека BLAS для матричных операций (на которой основан LAPACK),
- библиотека Blitz для работы с многомерными массивами, имеющая похожий на Фортран синтаксис.
Исходный код исполняется в одном потоке, и вашей задачей будет ускорить его, используя различные приемы параллельного программирования и параллельные версии библиотек. Чтобы исключить влияние других процессов на производительность, программа запускается через систему очередей (команда 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 # запускаем