§ 5. Гидродинамика сглаженных частиц на видеокарте
Задания
- Напишите программу, которая симулирует поведение жидкости на видеокарте.
Основные функции программы (
compute_density_and_pressure
,compute_forces
,compute_positions
) должны быть реализованы на видеокарте с помощью OpenCL. Также должны быть соблюдены условия ниже. - Измерьте время работы кода (колонка
Frame duration
) на видеокарте и на процессоре и постройте таблицу или график зависимости времени работы основного цикла от количества частиц.
Условия
- Картинка OpenCL похожа на картинку OpenMP.
- Время работы OpenCL (колонка "Frame duration") меньше по сравнению со временем работы на OpenMP (колонка "Frame duration").
- Исходный код написан на C/C++.
- Код собирается с максимальной оптимизацией (флаги компилятора
-O3 -march=native
).
Исходный код
module load gpc-2021 git clone https://courses.igankevich.com/gpu-programming/sph.git cd sph make cd build ./sph No. of particles: 340 Frame duration Frames per second 0.00617959 161.823 0.00322922 309.672 0.00646235 154.743 0.00603049 165.824 0.00380451 262.846 0.00424613 235.509 0.00601255 166.319 0.00448213 223.108 ... ... 0.0043504 229.864 ./sph gpu GPU version is not implemented! # запуск без монитора (на кластере) Xvfb :123 -screen 0 800x600x24 & env DISPLAY=:123 ./sph # запуск с графическим интерфейсом на кластере env LD_LIBRARY_PATH=$LIBRARY_PATH vglrun ./sph
Для запуска на кластере вам понадобится графический интерфейс. После его настройки просто введите команду make vglrun
.