Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Специальные средства программирования GPU SM4. CUDA




Совместимость с шейдерной моделью 3.0

Средства высокоуровневого программирования GPU шейдерной модели 4.0

Как мы уже отметили выше, GPU SM4 могут исполнять программы, написанные для GPU SM3, причём в эти программы не потребуется вносить никаких изменений. Такими средствами программирования, как язык HLSL, библиотеки DirectX, XNA и OpenGL по-прежнему можно пользоваться для написания новых программ для GPU SM4.

Графические библиотеки, подобные DirectX и OpenGL, позво­ляют работать с GPU всех известных производителей, так что програм­мы, напи­сан­ные на основе таких библиотек, будут исполняться независимо от выбора GPU, и даже на GPU SM3, если не используют специфических для 4-й модели возможностей.

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

Шейдерная модель 4.0 разрабатывалась уже с учётом того, что новые процессоры будут широко использоваться как параллельные вычислитель­ные системы общего назначения. Соответственно, разработчиками этих гра­фических процессоров (NVIDIA, AMD/ATI) созданы новые высоко­уровне­вые средства программирования таких процессоров для максимального использования их возможностей. Ниже мы кратко рассмотрим программиро­вание GPU в рамках программно-аппаратной платформы CUDA, разрабаты­ваемой компанией NVIDIA.

Компания NVIDIA весь свой комплекс современных программных и аппаратных решений для графических процессоров объединяет общей аббре­виатурой CUDA - Compute Unified Device Architecture, что означает Архи­тектура Объединённого Вычислительного Устройства. Из расшифровки оче­видна ориентация NVIDIA на производство процессоров, эффективно испол­няющих как поточно-параллельные вычисления, так и сложные алго­ритмы обработки информации.

В рамках этого комплекса разработана система программирования CUDA (современная версия - NVIDIA CUDA 2.0), основанная на расширении языка C добавлением в него новых типов данных и процедур для управления графическим процессором. CUDA включает в себя возможности как языков, предназ­наченных для написания вычислительного ядра (HLSL), так и графических библиотек (DirectX, XNA, OpenGL), обеспечивающих взаимо­действие между центральным и графическим процессорами. В том числе:

· операции выделения памяти GPU для внесения данных, операции записи данных в память и удаления из памяти (выполняются центральным процессором);

· операторы описания типов переменных, используемых в програм­ме;

· Операторы и функции для математических вычислений на GPU;

· средства для запуска параллельных расчётов на исполнение.

Практически, программирование на CUDA сводится к использованию новых операций, процедур и типов данных в «обычных» программах на языках C и C++. Для этого нужно иметь специальные библиотеки CUDA, разработанные компанией NVIDIA. Эти библиотеки распространяются сво­бодно и бесплатно доступны в Интер­нете.

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

· __global__ - функция, вызываемая центральным процессором, но исполняемая на графическом процессоре, то есть - вычислительное ядро;

· __device__ - функция, исполняемая на GPU b вызываемая только другими функциями, исполняемыми на GPU, то есть – из вычислительного ядра. Не может вызываться центральным процессором;

· __host__ - функция, вызываемая и исполняемая центральным про­цессором, без использования GPU;

· __host__ and __device__ - функция, которая может исполняться либо на центральном, либо на графическом процессорах (применяется, например, при «перегрузке» операторов).




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


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


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



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




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