КАТЕГОРИИ: Архитектура-(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; Просмотров: 588; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |