Моделирование качки судна в реальном времени с использованием вычислений общего назначения на графическом процессоре
|
Введение 3
1 Используемое программное обеспечение 10
1.1 OpenCL 10
1.2 OpenMP 12
2 Виртуальный полигон 13
2.1 Генератор волнистой поверхности 14
2.2 Потенциал скоростей 15
2.3 Сила давления воды 16
2.4 Вычисление производной функции 17
3 Итог проведенной работы 22
3.1 Рабочее окружение 22
3.2 Сравнение полученных результатов 23
4 Вывод 27
5 Заключение 28
Список литературы 29
1 Используемое программное обеспечение 10
1.1 OpenCL 10
1.2 OpenMP 12
2 Виртуальный полигон 13
2.1 Генератор волнистой поверхности 14
2.2 Потенциал скоростей 15
2.3 Сила давления воды 16
2.4 Вычисление производной функции 17
3 Итог проведенной работы 22
3.1 Рабочее окружение 22
3.2 Сравнение полученных результатов 23
4 Вывод 27
5 Заключение 28
Список литературы 29
До недавнего времени центральный процессор являлся единственным вычислительным элементом компьютера. Растущие потребности научного сообщества и индустрии вынудили производителей видеокарт предоставить сторонним разработчикам ПО возможность программировать шейдерные блоки под свои нужды. Эта возможность позволила увеличить производительность ПК, подключив к расчетам графическое устройство.
Эта работа проводилась в рамках проекта «Виртуальный полигон», целью которого является создание системы поддержки принятия решений для моделирования, прогнозирования и предотвращения опасных ситуаций, вызванных различными физическими явлениями. Ситуации могут включать в себя: затопление отсека, пожар в отсеке, потеря остойчивости корабля, большие морские волны и многие другие явления. Данная работа выделяется на фоне предшественников возможностью моделирования явлений и морских объектов в режиме реального времени, и в то же время обеспечивая высокую точность моделирования.
Система принятия решений получает данные в режиме реального времени с морских судов и моделирует их движение. Технология, которая обеспечивает производительность в режиме реального времени, - это GPGPU. Большинство вычислений в проекте включают в себя большое количество трансцендентных математических функций, линейный доступ к массивам и матрицам и отсутствие сложных зависимостей между этапами вычислений. Это позволяет эффективно использовать фреймворк OpenCL для действительно быстрых вычислений.
В нашем случае недостаточно просто переписать исходный код проекта для OpenCL. Чтобы повысить эффективность вычислений на GPU, нам потребовалось адаптировать алгоритмы и математические формулы к виду, оптимальному для графического процессора. Прежде всего был применен новый метод вычисления потенциала скорости, численно эквивалентный известным формулам из теории линейных волн, и использующий быстрое преобразование Фурье, для которого существует множество высокопроизводительных программных реализаций на GPU. Следующим этапом стало вычисление частной производной функции в многомерном пространстве, что позволило избавиться от многочисленных переносов данных из памяти процессора в память GPU. И наконец, последним шагом был реализован расчет основных математических функций на GPU.
Моделирование движения судна в океанских волнах выполняется различными компьютерными программами, которые отличаются тем, какие физические явления они моделируют (маневрирование в волнах, затопление отсека, регулярные и нерегулярные волны, ветер, моделирование в реальном времени и т. д.) и области применения (научные исследования, образование или развлечения). Эти программы являются виртуальными аналогами опытовых бассейнов, которые используются для моделирования характеристик и поведения корабля в определенных морских условиях. Преимущество использования виртуального опытового бассейна перед физическим состоит в том, что эксперименты проводятся в реальном пространственном и временном масштабе (с кораблями и океанскими волнами реальных размеров) и на персональном компьютере без необходимости доступа к высокотехнологичному оборудованию.
Хотя все численные эксперименты проводятся на ПК, один компьютер недостаточно силен для их быстрого выполнения. Часто эта проблема решается с помощью кластера компьютерных узлов или суперкомпьютера; однако суперкомпьютер или кластер — это еще одно высокотехнологичное средство, к которому должен получить доступ исследователь. В этом случае виртуальный опытовый бассейн имеет мало преимуществ перед физическим: исследования замедляются из-за бюрократической волокиты и вынужденного разделения вычислительных ресурсов между остальными участниками сообщества.
Одним из способов устранения этого барьера является использование графического ускорителя для увеличения производительности. В этом случае моделирование может быть выполнено на обычной рабочей станции, которая имеет дискретную видеокарту. Большинство исследователей используют графический процессор для визуализации в реальном времени, но он редко используется для ускорения частей моделирования, не говоря уже о всей программе. В [1] авторы используют графический процессор для ускорения расчета движения свободной поверхности внутри резервуара. В [2] авторы переписывают свой код с использованием быстрых преобразований Фурье и предлагают использовать GPU для увеличения производительности. В [3] авторы используют GPU для моделирования океанских волн. Тем не менее, наиболее эффективный способ использования графического процессора — использовать его как для вычислений, так и для визуализации: он позволяет минимизировать копирование данных между памятью процессора и графического процессора и использовать математические модели, структуры данных и численные методы, адаптированные для графических ускорителей.
Как уже было отмечено выше, Виртуальный полигон — один из первых проектов, в котором делается упор как на точность вычислений, не пренебрегая известными физическими законами, так и на высокую производительность.
Эта работа проводилась в рамках проекта «Виртуальный полигон», целью которого является создание системы поддержки принятия решений для моделирования, прогнозирования и предотвращения опасных ситуаций, вызванных различными физическими явлениями. Ситуации могут включать в себя: затопление отсека, пожар в отсеке, потеря остойчивости корабля, большие морские волны и многие другие явления. Данная работа выделяется на фоне предшественников возможностью моделирования явлений и морских объектов в режиме реального времени, и в то же время обеспечивая высокую точность моделирования.
Система принятия решений получает данные в режиме реального времени с морских судов и моделирует их движение. Технология, которая обеспечивает производительность в режиме реального времени, - это GPGPU. Большинство вычислений в проекте включают в себя большое количество трансцендентных математических функций, линейный доступ к массивам и матрицам и отсутствие сложных зависимостей между этапами вычислений. Это позволяет эффективно использовать фреймворк OpenCL для действительно быстрых вычислений.
В нашем случае недостаточно просто переписать исходный код проекта для OpenCL. Чтобы повысить эффективность вычислений на GPU, нам потребовалось адаптировать алгоритмы и математические формулы к виду, оптимальному для графического процессора. Прежде всего был применен новый метод вычисления потенциала скорости, численно эквивалентный известным формулам из теории линейных волн, и использующий быстрое преобразование Фурье, для которого существует множество высокопроизводительных программных реализаций на GPU. Следующим этапом стало вычисление частной производной функции в многомерном пространстве, что позволило избавиться от многочисленных переносов данных из памяти процессора в память GPU. И наконец, последним шагом был реализован расчет основных математических функций на GPU.
Моделирование движения судна в океанских волнах выполняется различными компьютерными программами, которые отличаются тем, какие физические явления они моделируют (маневрирование в волнах, затопление отсека, регулярные и нерегулярные волны, ветер, моделирование в реальном времени и т. д.) и области применения (научные исследования, образование или развлечения). Эти программы являются виртуальными аналогами опытовых бассейнов, которые используются для моделирования характеристик и поведения корабля в определенных морских условиях. Преимущество использования виртуального опытового бассейна перед физическим состоит в том, что эксперименты проводятся в реальном пространственном и временном масштабе (с кораблями и океанскими волнами реальных размеров) и на персональном компьютере без необходимости доступа к высокотехнологичному оборудованию.
Хотя все численные эксперименты проводятся на ПК, один компьютер недостаточно силен для их быстрого выполнения. Часто эта проблема решается с помощью кластера компьютерных узлов или суперкомпьютера; однако суперкомпьютер или кластер — это еще одно высокотехнологичное средство, к которому должен получить доступ исследователь. В этом случае виртуальный опытовый бассейн имеет мало преимуществ перед физическим: исследования замедляются из-за бюрократической волокиты и вынужденного разделения вычислительных ресурсов между остальными участниками сообщества.
Одним из способов устранения этого барьера является использование графического ускорителя для увеличения производительности. В этом случае моделирование может быть выполнено на обычной рабочей станции, которая имеет дискретную видеокарту. Большинство исследователей используют графический процессор для визуализации в реальном времени, но он редко используется для ускорения частей моделирования, не говоря уже о всей программе. В [1] авторы используют графический процессор для ускорения расчета движения свободной поверхности внутри резервуара. В [2] авторы переписывают свой код с использованием быстрых преобразований Фурье и предлагают использовать GPU для увеличения производительности. В [3] авторы используют GPU для моделирования океанских волн. Тем не менее, наиболее эффективный способ использования графического процессора — использовать его как для вычислений, так и для визуализации: он позволяет минимизировать копирование данных между памятью процессора и графического процессора и использовать математические модели, структуры данных и численные методы, адаптированные для графических ускорителей.
Как уже было отмечено выше, Виртуальный полигон — один из первых проектов, в котором делается упор как на точность вычислений, не пренебрегая известными физическими законами, так и на высокую производительность.
В работе был рассмотрен Виртуальный полигон, целью которого является создание системы поддержки принятия решений для моделирования, прогнозирования и предотвращения опасных ситуаций на судне в море. Его основной особенностью является возможность моделирования положения корабля в режиме реального времени. Это достигается за счет подключения к вычислениям видеокарты и использования технологии GPGPU. Описана структура этого приложения, его отличительные черты и различные модули. В ходе работы подверглись анализу различные модули программы на предмет возможности применений технологий GPGPU для увеличения производительности. После этого, было произведено сравнение двух версий этого приложения: выполняемой на центральном процессоре, и на графическом ускорителе.
Содержание бакалаврской работы – Моделирование качки судна в реальном времени с использованием вычислений общего назначения на графическом процессоре
Выдержки из бакалаврской работы – Моделирование качки судна в реальном времени с использованием вычислений общего назначения на графическом процессоре



