Валидация производилась с использованием модифицированной версии солвера, в которую кроме условий Дирихле так же передавались условия Неймана, что позволило численно решить задачу с существующим аналитическим решением.
В кубе
Аналитическое решение такой задачи находится с точностью до константы:
Однако если наложить дополнительное условие на внешние границы:
Получим аналитическое решение:
График 3: Зависимость погрешности решения от номера итерации. Сетка 129х129х129
Эту задачу удалось решить с помощью разработанного солвера. Зависимость погрешности решения от номера V-цикла отображена на графике 3.
Также была проверена работоспособность программы на системе с двумя графическими ускорителями: Nvidia Tesla K20c и Nvidia Tesla K40c - и замерена производительность.
На двух картах было получено более чем полуторакратное ускорение решения.
График 4: Время решения задачи в зависимости от невязки на GPU. Сетка 257x257x257
Так же удалось полностью промоделировать решение системы Навье-Стокса, а затем произвести рендеринг итогового изображения с использованием Blender Cycles. Результат представлен на рисунке 9.
Рисунок 9: Рендер симуляции дыма.
Результаты
Было разработано программное средство осуществляющее моделирование потоков дыма для систем компьютерной графики, позволяющее задействовать несколько графических ускорителей для наиболее ресурсоемкой части вычислений.
В частности, с помощью технологии Nvidia CUDA был реализован многосеточный решатель, осуществляющий этап проекции решения системы уравнений Навье-Стокса, в отличие от аналогов не ограниченный размером памяти лишь одного ускорителя, а эффективно задействующий все доступные системе устройства.
Полученный решатель был интегрирован в систему, реализующую полный цикл решения системы Навье-Стокса, позволяющую загружать данные о геометрии объектов, расположенных в моделируемой сцене, и выгружать данные о геометрии полученного дыма, что дало возможность встроить его в существующую систему рендеринга и получить итоговое изображение.
Список литературы
1. Lee V. W., Kim C., Chhugani J., Deisher M., Kim D., Nguyen A.D., Satish N., Smelyanskiy M., Chennupaty S., Hammarlund P., Singhal R. and Dubey P. Debunking the 100X GPU vs. CPU Myth: An Evaluation of Throughput Computing on CPU and GPU // Proceedings of the 37th annual international symposium on Computer architecture. Saint-Malo, France: 2010
2. Gardner G. Y. Visual Simulation of Clouds, Computer Graphics // SIGGRAPH 85 Conference Proceedings. 1985. P. 297–384.
3. Reeves W. Particle Systems - A Technique for Modeling a Class of Fuzzy Objects // ACM Transactions on Graphics. 1983. 2. 2. P. 91-108.
4. Dong W., Zhang X., Zhang C. Smoke Simulation Based on Particle System in Virtual Environments // International Conference on Multimedia Communications. 2010.
5. Foster N., Metaxas D. Realistic Animation of Liquids, Graphical Models and Image Processing // Graphical Models and Image Processing archive. 1996. 58(5), P. 471–483.
6. Stam J. Stable Fluids // SIGGRAPH 99 Conference Proceedings, Annual Conference Series, 1999. P. 121–128.
7. He S., Wong H., Pang W., Wong U. Real-time smoke simulation with improved turbulence by spatial adaptive vorticity confinement // Computer Animation & Virtual Worlds, Volume 22, Issue 2-3, 2011. P. 107–114.
8. Pfaff T., Thuerey N., Cohen J., Tariq S., Gross M. Scalable Fluid Simulation using Anisotropic Turbulence Particles // Proceedings of ACM SIGGRAPH Asia (Seoul, Korea, December 15-18, 2010), ACM Transactions on Graphics, vol. 29, no. 5, P. 174:1-174:8.
9. Fedkiw, R., Stam J., Jensen H. Visual Simulation of Smoke // In Proceedings of SIGGRAPH 2001, 2001. P. 15–22.
10. Harris M. Fast Fluid Dynamics Simulation on the GPU // GPU Gems: Programming Techniques
11. Fernando R. Tips and Tricks for Real-Time Graphics. Addison-Wesley, 2004, P. 637–665.
12. Crane K., Llamas I., Tariq S. Real-Time Simulation and Rendering of 3D Fluids // GPU Gems 3, Addison-Wesley, 2007. P. 633–675
13. Якобовский М. В. Введение в параллельные методы решения задач – М.: Издательство Московского университета, 2013.
14. Деммель Дж. Вычислительная линейная алгебра. Теория и приложения – М.: Мир, 2001
15. Мартыненко С.И. Многосеточная технология – М.: ФИЗМАТЛИТ, 2015
16. Данилкин Е.А. Распараллеливание явных и неявных разностных схем, эффективность параллельных и последовательных программ – Томск, 2014
17. Bridson R. Fluid Simulation for Computer Graphics - A K Peters, Ltd, 2008
18. Briggs W. L., Henson V. E., McCormick S. F. A Multigrid tutorial, Second Edition // Society for Industrial and Applied Mathematics Philadelphia, PA, USA
19. Strang G. - Mathematical Methods for Engineers II, Spring - MIT (OpenCourseWare: Massachusetts Institute of Technology), 2006
20. Sakharnykh N. High-Performance Geometric Multi-Grid with GPU Acceleration [HTML] (https://devblogs.nvidia.com/parallelforall/high-performance-geometric-multi-grid-gpu-acceleration/)
21. C Nvidia - NVIDIA CUDAToolkit Documentation [HTML] (https://docs.nvidia.com/cuda/)
22. Konstantinidis E., Cotronis Y. Accelerating the red/black SOR method using GPUs with CUDA // 9th International Conference on Parallel Processing and Applied Mathematics, 2011
23. McAdams A., Sifakis E., Teran J. A parallel multigrid Poisson solver for fluids simulation on large grids // ACM SIGGRAPH Symposium on Computer Animation, 2010
24. Gomez Y., Hincapi J., Osorio J., Vargas J. Semi-Lagrangian Implementation Method using GPU - Sirius HPC, UTP
25. Liu Y., Shi K., Deng H., Wu E. A Multi-GPU Based Semi-Lagrangian Fluid Solver // Proceedings of the 10th International Conference on Virtual Reality Continuum and Its Applications in Industry, 2011. P. 321-326
26. Zaspel P., Griebel M. Solving Incompressible Two-Phase Flows on Multi-GPU Clusters – 2011
27. Zaspel P., Griebel M. A multi-GPU accelerated solver for the three-dimensional two-phase incompressible Navier-Stokes equations - 2011