Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Средства программирования графических процессоров




Проблема одинарной точности

Как отмечено выше, шейдеры модели 3.0 могут работать только с вещественными числами одинарной (32-битной) точности, содержащими 7-8 значащих цифр. В некоторых задачах, включая молекулярную динамику, это приводит к недопустимому накоплению погрешности округления. Эта проблема решается, если удаётся выделить критичные участки алгоритма, на которых необходимы высокая производительность и распараллеливание вычислений, при сравнительно больших допустимых погрешностях округления.

Наши исследования показали, что в молекулярной динамике на GPU c одинарной точностью можно рассчитывать силы, действующие на каждую из частиц, тогда как интегрирование уравнений движения (которое на порядки менее ресурсоёмко, но более критично к накоплению погрешности округле­ния) проводить на CPU с двойной точностью. При этом оказывается, что результаты вычислений мало отличаются от результатов, получающихся при проведении всех расчётов с двойной точностью (64-битные числа, 15-16 значащих цифр).

4.4.1. Общая структура программы для физического модели­рования на графическом процессоре

Для того чтобы графический процессор мог исполнить программу, она должна быть откомпилирована в машинные коды и записана в оперативную память компьютера, откуда драйвер графического процессора передаёт её на исполнение. Для шейдеров модели 3.0 существуют языки программирования высокого уровня (Cg, HLSL, GLSL), на этих языках программы можно писать в форме текстовых файлов, которые затем компилируются в машинные коды автоматически. Примеры шейдеров, приведённые ниже, будут написаны на языке HLSL.

Вместе с тем, шейдерная модель 3.0 не позволяет создавать для графических процессоров полнофункциональные программы, которые включали бы в себя загрузку данных из оперативной памяти компьютера или с дисковых накопителей, а также обеспечивали бы пользовательский интерфейс. Эти задачи, а также те компоненты вычислительного алгоритма, где нет поточно-параллельных расчётов, должен исполнять центральный процессор ПК, для чего необходима программа на «обычном» языке высокого уровня (C#, C++, Visual Basic и др.).

Для того чтобы из программы, написанной на «обычном» языке высокого уровня, было проще прямо обращаться к драйверу видеокарты (а через него – к графическому процессору) существуют стандартные библиотеки специальных процедур, наиболее распространённые из которых - API DirectX и OpenGL. Процедуры из этих библиотек обеспечивают такие операции, как

· Выделение памяти для массива вершин треугольников, образующих 3D-сцену (при программировании графики) либо задающих границы циклов (при математическом моделировании);

· Загрузка файла с текстом программы для GPU (на языке HLSL или подобном), компиляция этого файла и запись кода программы в память ПК;

· Выбор той «техники» (откомпилированная программа для GPU может содержать несколько «техник» - процедур, вызываемых внешними программами), которую должен будет выполнить графический процессор;

· Копирование исходных данных для графического процессора в видеопамять;

· Запуск выбранной «техники» на исполнение;

· Выделение памяти ПК для рендер-цели, в которую драйвер видеокарты будет записывать результаты расчётов. Получение этих результатов из рендер-цели.

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

Рис. 4.10. Структура программы физического моделирования, использующей графический процессор

К процедурам DirectX и OpenGL можно обращаться напрямую, но всё же они имеют сравнительно «низкий» уровень – требуют специальных знаний и много рутинного программирования. Существуют дополнительные библиотеки, являющиеся надстройками над DirectX и OpenGL, которые упрощают программирование. В дальнейших примерах мы будем использовать такую библиотеку, а именно Microsoft XNA Game Studio Express 2.0 (XNA2).




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 324; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.