Курсовая работа (т): Моделирование распространения воздушных потоков и дыма с помощью графического процессора

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

.        В остальных случаях узел считается выколотым (твердое тело).

Такой подход хорош тем, что на грубых сетках процент выколотых областей будет уменьшаться, а расчётных - увеличиваться (см. Рисунок 9). Это позволяет производить вычисления вплоть до самого грубого уровня.

Рисунок 9. Внешний вид маски расчётной области на сетках 129*129*129, 65*65*65 и 33*33*33 соответственно. Синим обозначены рабочие узлы, зеленым узлы с нулевыми граничными условиями Дирихле, красным - твердый объект с условиями Неймана на границе

сглаживание линеаризация двумерный массив

Взаимодействие между несколькими GPU.

До этого речь шла о расчётах только на одном графическом ускорителе, однако разработанное средство способно производить решение и на нескольких GPU.

Для этого используется технологияCUDAUnifiedVirtualAddressing. Начиная с версии 4.0 в CUDA появилась возможность создавать общее адресное пространство для всех вычислительных устройств в системе, то есть для того, чтобы скопировать данные с одного устройства на другое не нужно хранить информацию о том, что это за устройства, достаточно лишь знать указатели на источник и приемник данных, а функций cudaMemcpy сама понимает, как производить копирование. Более того, начиная с CUDA 6.0 и поколения Kepler, cudaMemcpy научилась при возможности автоматически использовать режим Peer-to-peer для прямого копирования данных с одного GPU на другой, избегая передачи данных через центральный процессор. Для активации этой возможности достаточно лишь включить в коде режим Peer-to-peer для каждого из используемых GPU. Именно этот механизм использован в данной работе.

Все данные равномерно распределяются между графическими ускорителями, при этом часть данных перекрывается двумя соседними GPU - у каждой пары соседних карт есть по два общих слоя данных (Рисунок 7).В сглаживателе каждый из ускорителей сначала производит вычисление тех значений, которые потребуются соседним ускорителям на следующих итерациях. Затем все невыколотые узлы упаковываются в буфер, размер которого равен максимально возможной длине пересылаемых данных. Так как маски общих узлов доступны каждому из соседних ускорителей, при обмене данным сосед легко может распаковать полученные данные.

Рисунок 10. Распределение данных между GPU. Синим обозначены данные на GPU0, зелёным - на GPU1, серым - выколотая область, а красным - область в которой постоянно происходит обмен данными между ускорителями

Выполняется асинхронный обмен данными с помощью функции cudaMemcpyAsync(). Пока происходит обмен данными, ускорители рассчитывают области, выделенные для них монопольно.

При использовании операторов огрубления и пролонгации, а также расчёта невязки вышеупомянутые буферы используются для хранения недостающих данных. Так, если одному из ускорителей требуется три слоя данных, а доступно только два, то недостающий слой записывается в буфер. Если доступен только один слой, то расчёты не производятся, так как их произведёт соседний ускоритель.

Результаты тестирования и валидации.

Валидация производилась с использованием модифицированной версии солвера, в которую кроме условий Дирихле так же передавались условия Неймана, что позволило численно решить задачу с существующим аналитическим решением.


В кубе

Аналитическое решение такой задачи находится с точностью до константы:


Однако если наложить дополнительное условие на внешние границы:


Получим аналитическое решение:


Рисунок 11. Зависимость погрешности решения от номера итерации. Сетка 129х129х129

Эту задачу удалось решить с помощью разработанного солвера. Зависимость погрешности решения от номера V-цикла отображена на Рисунке 11.

Также была проверена работоспособность программы на системе с двумя графическими ускорителями: NvidiaTeslaK20c и NvidiaTeslaK40c - и замерена производительность.

На двух картах было получено более чем полуторакратное ускорение решения.

Рисунок 12. Время решения задачи в зависимости от невязки на GPU. Сетка 257x257x257

Так же удалось полностью промоделировать решение системы Навье-Стокса, а затем произвести рендеринг итогового изображения с использованием BlenderCycles. Результат представлен на рисунке 13.

Рисунок 13. Рендер симуляции дыма

Заключение

Было разработано программное средство осуществляющее моделирование потоков дыма для систем компьютерной рисунков, позволяющее задействовать несколько графических ускорителей для наиболее ресурсоемкой части вычислений.

В частности, с помощью технологии NvidiaCUDA был реализован многосеточный решатель, осуществляющий этап проекции решения системы уравнений Навье-Стокса, в отличие от аналогов не ограниченный размером памяти лишь одного ускорителя, а эффективно задействующий все доступные системе устройства.

Полученный решатель был интегрирован в систему, реализующую полный цикл решения системы Навье-Стокса, позволяющую загружать данные о геометрии объектов, расположенных в моделируемой сцене, и выгружать данные о геометрии полученного дыма, что дало возможность встроить его в существующую систему рендеринга и получить итоговое изображение.

Литература

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.

.        Gardner G.Y. Visual Simulation of Clouds, Computer Graphics // SIGGRAPH 85 Conference Proceedings. 1985. P. 297-384.

.        Reeves W. Particle Systems - A Technique for Modeling a Class of Fuzzy Objects // ACM Transactions on Graphics.1983. 2. 2. P. 91-108.

.        Dong W., Zhang X., Zhang C. Smoke Simulation Based on Particle System in Virtual Environments //International Conference on Multimedia Communications. 2010.

.        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.

.        Stam J. Stable Fluids // SIGGRAPH 99 Conference Proceedings, Annual Conference Series,1999. P. 121-128.

.        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.

.        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.

.        Fedkiw, R., Stam J., Jensen H. Visual Simulation of Smoke // In Proceedings of SIGGRAPH 2001, 2001.P. 15-22.

Источник: https://www.bibliofond.ru/detail.aspx?id=896676