uzluga.ru
добавить свой файл
  1 2 3

Обзор технического инструментария


Параллельные вычисления и использование графического процессора

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

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

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

В настоящее время появилась тенденция использования ресурсов графических плат для решения вычислительных задач в разных областях знаний, таких как физика, квантовая механика, искусственный интеллект, криптография и распознавание образов. Эти задачи сложно решать в рамках графических API, таких как OpenGL или Direct X. Развитие программирования общего назначения на GPU (Graphical Processing Unit) привело к возникновению технологий, которые позволили преодолеть это препятствие. Компанией Nvidia была создана технология CUDA (Compute Unified Device Architecture) для проведения вычислений на графических картах производства Nvidia, а консорциумом Khronos Group был представлен набор библиотек OpenCL для проведения вычислений на CPU, GPU и других устройствах. OpenCL был позже поддержан Nvidia, AMD ATI и другими производителями, поэтому о нем можно говорить как о стандарте в данной области.

Графические процессоры в своей основе изначально имели гораздо большие вычислительные мощности из-за большого количества микропроцессоров, которые позволяли одновременно обрабатывать большее количество однообразных операций. В России подобные параллельные графические процессоры закладывались в архитектуру вычислительных комплексов ПС-2000 и во множество поколений мощных вычислительных комплексов Эльбрус. Современные решения на основе GPU технологий не уступают по вычислительной эффективности мощным многопроцессорным комплексам и несравнимы по распространенности и низкой стоимости.

OpenGL является одним из самых популярных прикладных программных интерфейсов (API – Application Programming Interface) для разработки приложений в области двумерной и трехмерной графики. Стандарт OpenGL (Open Graphics Library – открытая графическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc. Библиотека насчитывает около 120 различных команд, которые программист использует для задания объектов и операций, необходимых для написания интерактивных графических приложений. На сегодняшний день графическая система OpenGL поддерживается большинством производителей аппаратных и программных платформ. Эта система доступна тем, кто работает в среде Windows, пользователям компьютеров Apple. Свободно распространяемые коды системы Mesa (пакет API на базе OpenGL) можно компилировать в большинстве операционных систем, в том числе в Linux. Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:

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

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

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

Все функции OpenGL можно разделить на пять категорий:

Функции описания примитивов нижнего уровня иерархии, которые способна отображать графическая подсистема. В OpenGL в качестве примитивов выступают точки, линии, многоугольники и т. д.

Функции описания источников света служат для описания положения и параметров источников света, расположенных в трехмерной сцене.

Функции задания атрибутов. С помощью задания атрибутов программист определяет, как будут выглядеть на экране отображаемые объекты. В качестве атрибутов OpenGL позволяет задавать характеристики материала, текстуры, параметры освещения.

Функции визуализации позволяет задать положение наблюдателя в виртуальном пространстве, параметры объектива камеры. Зная эти параметры, система сможет не только правильно построить изображение, но и отсечь объекты, оказавшиеся вне поля зрения.

OpenGL может выполнять дополнительные операции, такие как использование сплайнов для построения линий и поверхностей, удаление невидимых фрагментов изображений, работа с изображениями на уровне пикселей и т. д.

OpenGL состоит из набора библиотек. Все базовые функции хранятся в основной библиотеке GL. В состав GLU (GL Utility) вошла реализация более сложных функций, таких как набор популярных геометрических примитивов (куб, шар, цилиндр, диск), функции построения сплайнов, реализация дополнительных операций над матрицами и т. п.

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

GLUT и freeGLUT

Наиболее популярной является библиотека GLUT (GL Utility Toolkit). GLUT предоставляет только минимально необходимый набор функций для создания OpenGL-приложения и берет на себя такие задачи, как: инициализация, обработка событий, управление окнами, управление перекрытием, регистрация вызываемых функций, отображение геометрических фигур.

GLUT создавался Марком Килгардом (Mark Kilgard) в качестве академического пакета при освоении OpenGL во время его работы в Silicon Graphics Inc. и не является свободно распространяемым продуктом, хотя в интернет опубликован вместе с исходными текстами программ. Сообществом разработчиков был предложен открытый вариант подобной библиотеки: FreeGlut – включающей большинство базовых функций Glut, и несколько расширенный для профессионального использования.

GLFW

GLFW – существенно более компактный API, позволяющий реализовать функции, относящиеся к операционной системе в рамках OpenGL программирования. GLFW предоставляет следующие дополнительные возможности для программиста: открытие и управление OpenGL окнами, поддержка многопоточности.

Основным отличием GLFW от подобных ему реализаций является наличие поддержки многопоточной обработки данных. Хотя многопоточность не имеет отношение к OpenGL напрямую, однако такие преимущества, как уменьшение времени ожидания и увеличение производительности позволяют создавать приложения более высокого качества с минимальным количеством усилий.

Заключение


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

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

Литература


  1. Кильчевский, Н. А. Элементы тензорного исчисления и его приложения в механике [Текст] / Н. А. Кильчевский. – М.: Государственное издательство технико-теоретической литературы, 1954. – 168 с.

  2. Фокс, А. Вычислительная геометрия (применение в проектировании и производстве) [Текст] / А. Фокс, М. Пратт. – М.: Мир, 1982. – 304 с.

  3. Храмушин, В. Н. Трехмерная тензорная математика вычислительных экспериментов в гидромеханике / В. Н. Храмушин. – Владивосток: ДВО РАН, 2005. – 212 с.

  4. Эйнджел, Э. Интерактивная компьютерная графика. Вводный курс на основе OpenGL [Текст] / Эдвард Эйнджел. – М.: изд. дом «Вильямс», 2001. – 592 с.

1 Масолов Алексей Владимирович, консультант по портфелю производственных приложений, «Сахалин Энерджи Инвестмент Компани, ЛТД», аспирант СахГУ.

2 Храмушин Василий Николаевич, к. т. н., доцент кафедры математики, зав. лаб. вычислительной гидромеханики и морских исследований СахГУ.

3 Шкичев Сергей Александрович, студент, гр. 431 СахГУ.



<< предыдущая страница