Ответ
 
Опции темы
Старый 07.11.2009, 18:52      #1
a2z
Супер-Модератор
 
Аватар для a2z
По умолчанию CUDA


NVIDIA CUDA™ — технология GPGPU, позволяющая программистам реализовывать на упрощённом языке программирования Си алгоритмы, выполнимые на графических процессорах ускорителей GeForce восьмого поколения и старше (GeForce 8 Series, GeForce 9 Series, GeForce 200 Series), Nvidia Quadro и Tesla компании Nvidia. Технология CUDA разработана компанией nVidia.

Немного истории
Устройства для превращения персональных компьютеров в маленькие суперкомпьютеры известны довольно давно. Ещё в 80-х годах прошлого века на рынке предлагались так называемые транспьютеры, которые вставлялись в распространенные тогда слоты расширения ISA. Первое время их производительность в соответствующих задачах впечатляла, но затем рост быстродействия универсальных процессоров ускорился, они усилили свои позиции в параллельных вычислениях, и смысла в транспьютерах не осталось. Хотя подобные устройства существуют и сейчас — это разнообразные специализированные ускорители. Но зачастую сфера их применения узка и особого распространения такие ускорители не получили.

Но в последнее время эстафета параллельных вычислений перешла к массовому рынку, так или иначе связанному с трёхмерными играми. Универсальные устройства с многоядерными процессорами для параллельных векторных вычислений, используемых в 3D-графике, достигают высокой пиковой производительности, которая универсальным процессорам не под силу. Конечно, максимальная скорость достигается лишь в ряде удобных задач и имеет некоторые ограничения, но такие устройства уже начали довольно широко применять в сферах, для которых они изначально и не предназначались. Отличным примером такого параллельного процессора является процессор Cell, разработанный альянсом Sony-Toshiba-IBM и применяемый в игровой приставке Sony PlayStation 3, а также и все современные видеокарты от лидеров рынка — компаний NVIDIA и AMD.


График производительности GPU по сравнению с CPU.

Cell мы трогать не будем, хоть он и появился раньше и является универсальным процессором с дополнительными векторными возможностями, речь сегодня не о нём. Для 3D видеоускорителей ещё несколько лет назад появились первые технологии неграфических расчётов общего назначения GPGPU (General-Purpose computation on GPUs). Ведь современные видеочипы содержат сотни математических исполнительных блоков, и эта мощь может использоваться для значительного ускорения множества вычислительно интенсивных приложений. И нынешние поколения GPU обладают достаточно гибкой архитектурой, что вместе с высокоуровневыми языками программирования и программно-аппаратными архитектурами, раскрывает эти возможности и делает их значительно более доступными.
Принцип работы
Современный центральный процессор заточен под получение максимальной производительности при обработке целочисленных данных и данных с плавающей запятой, особо не заботясь при этом о параллельной обработке информации. В то же время архитектура видеокарты позволяет быстро и без проблем «распараллелить» обработку данных. С одной стороны, идет обсчет полигонов (за счет 3D-конвейера), с другой – пиксельная обработка текстур. Т.е. происходит «слаженная разбивка» нагрузки в ядре карты. Кроме того, работа памяти и видеопроцессора оптимальнее, чем связка «ОЗУ-кэш-процессор». В тот момент, когда единица данных в видеокарте начинает обрабатываться одним потоковым процессором GPU, другая единица параллельно загружается в другой, и, в принципе, легко можно достичь загруженности графического процессора, сравнимой с пропускной способностью шины, однако для этого загрузка конвейеров должна осуществляться единообразно, без всяких условных переходов и ветвлений. Центральный же процессор в силу своей универсальности требует для своих процессорных нужд кэш, заполненный информацией.


На создание GPCPU разработчиков побудило появление достаточно быстрых и гибких шейдерных программ, которые способны исполнять современные видеочипы. Разработчики задумали сделать так, чтобы GPU рассчитывали не только изображение в 3D приложениях, но и применялись в других параллельных расчётах. В GPGPU для этого использовались графические API: OpenGL и Direct3D, когда данные к видеочипу передавались в виде текстур, а расчётные программы загружались в виде шейдеров. Недостатками такого метода является сравнительно высокая сложность программирования, низкая скорость обмена данными между CPU и GPU и некоторые другие ограничения.

Вычисления на GPU развивались и развиваются очень быстро. И в дальнейшем, два основных производителя видеочипов, NVIDIA и AMD, разработали и анонсировали соответствующие платформы под названием CUDA (Compute Unified Device Architecture) и CTM (Close To Metal или AMD Stream Computing), соответственно. В отличие от предыдущих моделей программирования GPU, эти были выполнены с учётом прямого доступа к аппаратным возможностям видеокарт. Платформы не совместимы между собой, CUDA — это расширение языка программирования C, а CTM — виртуальная машина, исполняющая ассемблерный код. Зато обе платформы ликвидировали некоторые из важных ограничений предыдущих моделей GPGPU, использующих традиционный графический конвейер и соответствующие интерфейсы Direct3D или OpenGL.

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

Именно поэтому компания NVIDIA выпустила платформу CUDA — C-подобный язык программирования со своим компилятором и библиотеками для вычислений на GPU. Конечно же, написание оптимального кода для видеочипов совсем не такое простое дело и эта задача нуждается в длительной ручной работе, но CUDA как раз и раскрывает все возможности и даёт программисту больший контроль над аппаратными возможностями GPU. Важно, что поддержка NVIDIA CUDA есть у чипов G8x, G9x и GT2xx, применяемых в видеокартах GeForce серий 8, 9 и 200, которые очень широко распространены. В настоящее время выпущена финальная версия CUDA 2.2, в которой появились некоторые новые возможности, например, поддержка расчётов с двойной точностью. CUDA доступна на 32-битных и 64-битных операционных системах Linux, Windows и MacOS X.
Перспективы
В мире уже установлены миллионы GPU с поддержкой CUDA, и тысячи программистов уже бесплатно пользуются инструментами CUDA для ускорения приложений – от кодирования видео и аудио до поисков нефти и газа, моделирования продуктов, вывода медицинских изображений и научных исследований. О преимуществах CUDA сказано не мало, но как всегда есть и ложечка дёгтя. Один из немногочисленных недостатков CUDA — слабая переносимость. Эта архитектура работает только на видеочипах этой компании, да ещё и не на всех, а начиная с серии GeForce 8 и 9 и соответствующих Quadro и Tesla. Да, таких решений в мире очень много, NVIDIA приводит цифру в 90 миллионов CUDA-совместимых видеочипов. Это просто отлично, но ведь конкуренты предлагают свои решения, отличные от CUDA. Так, у AMD есть Stream Computing, у Intel в будущем будет Ct.

Которая из технологий победит, станет распространённой и проживёт дольше остальных — покажет только время.
Вывод
Технология NVIDIA CUDA™ - это современная перспективная среда разработки на C, которая позволяет программистам и разработчикам писать программное обеспечение для решения сложных вычислительных задач за меньшее время благодаря многоядерной вычислительной мощности графических процессоров.
Официальный сайт: http://www.nvidia.ru/object/cuda_learn_ru.html | Форум

Дополнительно:
NVIDIA CUDA™ by Википедия
NVIDIA CUDA™ — неграфические вычисления на графических процессорах by iXBT.com
CUDA мы катимся: технология NVIDIA CUDA™ by Xakep Online
NVIDIA CUDA™: вычисления на видеокарте или смерть CPU? by Tom's Hardware Guide Russia
Технология NVIDIA CUDA™ by Высшая школа Информационных Технологий
Введение в технологию NVIDIA CUDA™ by СЖ "Компьютерная Графика и Мультимедиа"
Знакомство с NVIDIA CUDA™, параллельные вычисления с помощью GPU в CG by Render.ru
__________________
× Если вы нашли ошибку в моём сообщении, выделите её мышкой и нажмите Alt-F4 ×
× Twitter, LastFm, SCC, What.cd, Tapochek.net ×

Последний раз редактировалось MDM; 11.03.2010 в 08:14.
a2z вне форума Пол: Мужчина   Ответить с цитированием Вверх
Благодарности: 2
Andrew (07.11.2009), MDM (07.11.2009)
Ответ

Метки
cuda, nvidia, nvidia cuda


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с железом Slava Аппаратная 4227 20.11.2017 13:43
Unix news SoaT Программная - Linux 380 29.06.2017 18:18
Видеокарты на чипах AMD Radeon (ATI) AndyK Новости и обзоры 340 08.08.2016 12:58
Системные (Материнские) платы kellan Новости и обзоры 334 28.05.2011 19:09


Обратная связь
Текущее время: 12:11. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot