Новые возможности DirectX 11: вычислительный шейдер

Напечатать страницу
21.11.2008 10:00 | deeper2k

Вчера в интервью немецкому сетевому изданию PCGamesHardware Бен Базарик (Ben Basaric), продукт-менеджер Windows, сообщил, что вряд ли в состав финальной версии Windows 7 войдет DirectX 11, хотя на текущий момент, по его же словам, это стоит расценивать лишь в качестве слухов. Однако, эти слухи не помешают нам продолжить рассказ о том, что сулит DirectX 11 для игроков и обычных компьютерных пользователей.

В сегодняшней статье речь пойдет о так называемом вычислительном шейдере (с англ. compute shader). По своей сути, компьютерный шейдер не является чем-то кардинально новым - это просто формализация тех идей, о которых AMD и Nvidia говорят на протяжении последних нескольких лет. В частности, Nvidia усердно пытается ввести в использование платформу CUDA, начиная с выпуска GeForce 8800 GTX в ноябре 2006 года - эта платформа наиболее близка к тому, что мы сегодня понимаем под массивными параллельными вычислениями. Здесь стоит сказать о скудности сегоднящней кросс-платформенной совместимости, которая может помешать CUDA получить более широкое распространение на рынке. Таким образом, пока что подобные технологии не развиваются в нужном направлении.

Сегодня ясно только то, что в платформе CUDA инженерам Nvidia удалось превратить GPU из куска кремния, который мог выполнять только графические задачи, в нечто, что может ускорить работу широко распараллеленных приложений общего назначения. Главные приложения, использующие ускорение CUDA, уже начинают появляться на рынке, так что теперь даже Intel начинает делать себе заметки.





AMD занимается тем же самым со своей разработкой Stream Computing и скоро на рынке должны появится пользовательские приложения, которые будут ускоряться графикой ATI Radeon. Интересно, что причины, по которым Microsoft включает вычислительный шейдер в DirectX 11, больше ориентированы на игровую сторону вопроса, нежели выполнение общих задач средствами GPU. Однако, согласно информации, полученной из разговоров с некоторыми значимыми для индустрии людьми, новый шейдер, скорее всего, будет использоваться для более широкого круга задач, нежели просто для решения некоторых проблем отдельных игровых разработчиков.

Многое из того, о чем Гии рассказывал во время его презентации на Nvision, было для меня не ново, однако это было новым для DirectX. Такие вещи, как возможность создания кода для общих задач без использования треугольников, распределение данных между потоками и обработка произвольных операций записи возможны и в Stream от AMD, и в компиляторе CUDA от Nvidia, но ни у одной из этих технологий на данный момент нет широкой аппаратной совместимости. Microsoft собирается предоставить эти новые расширения процесса кодирования и средства синтаксиса в обновленной версии HLSL (High Level Shading Language).





Благодаря этому графический конвейер сможет генерировать структуры данных, традиционно ассоциируемые с общими вычислительными задачами, обрабатываемыми на CPU. Используя вычислительный шейдер, эти задачи смогут масштабировать под n ядер, количество которых может увеличиваться до тех пор, пока приложение сможет обеспечивать параллельное выполнение потоков. Согласно Microsoft, основные целевые приложения для вычислительного шейдера включают в себя пост-процессовую обработку, физику, AI и некоторые другие. К числу этих других задач Гии отнес и трассировку лучей.

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





PhysX ускоряется только на GPU, поддерживающих Nvidia CUDA, но выполняется на CPU, тогда как Havok в скором времени сможет ускоряться на GPU от AMD и снизить свою производительность на CPU. Наконец, написание своего собственного физического движка требует больших усилий, и если вы - разработчик, то скорее всего выберете для этих целей центральный процессор, потому что каждая система, на которой будет работать ваша игра, будет иметь сходный набор функций. Сегодня это не совсем просто, как в случае с GPU, поскольку это сходство ограничивается совместимостью API. Благодаря вычислительному шейдеру (или OpenCL) - у разработчиков перестанет болеть по этому поводу голова и они смогут сосредоточиться на том, как реализовать игровую физику.

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


Источник: http://www.bit-tech.net
Перевод: Dazila

Комментарии

Не в сети

Про возможность использования сверх мощного ГПУ как второго процессора говорили давно.
Очень логично и правильно. Например задачи мс оффиса и воспроизведения видео. Есть в них часть кода выполняемая видеокартой,
а часть - CPU. Причем на современных моделях загрузка и CPU и GPU при этих задачах пара процентов. Вполне возможно переложить
приложения вроде Word и Media Player на плечи мощного GPU. Ведь он, если сравнивать, работает на уровне P3-P4, равда с заточкой под
графику.
В Win7 мы не увидим нативной и полноценной поддержки этой технологии. Это как с USB драйвами и win98. Вроде и заявлена поддержка,
а все не так просто как это стало в ХР. Будем ждать Windows Eight

Единственный минус который видится - как в любой много процессорной системе -а GPU будет использоватся с многоядерным процессором,
проблемы оптимизации кода, проблемы с разной скоростью памяти - на видюхах DDR4 уже будет, а на матплате хорошо если DDR3,
проблема со скоростью передачи данных по шине - PCIEX, вот еслибы доработали Hyper Trnsport....

21.11.08 12:19
0
Не в сети

В Win7 мы не увидим нативной и полноценной поддержки этой технологии.

Увидим. Будет как в ХР - сначала поддерживал только 8 директ, а после установки свежего директа или установки сервис-пака, подерживал и 9 версию. аналогично и Виста и Seven будут поддерживать 11 версию директа. Поправьте, если ошибаюсь.

21.11.08 14:54
0
Не в сети

К сожалению, текущая война стандартов просто пугает. Хочется переждать, пока всё утихомирится и уляжется. Хотя, производители карт и Микрософтовский DX наверняка, спустя пол годика, подложат пользователям свинью в виде DX11.1 или 11.2. Как я скучаю по тем временам, когда всё проходило тихо и мирно. И новый DX ставился также просто и без проблем, как флешевский плагин в браузере. Поставил - и забыл. А здесь, блин, такую вонь развели, что просто уже неприязнь вместо интереса появляется. Ведь каждому понятно, что если прежде новый DX - это просто очередной апдейт, то сейчас - концептуальная замена железа. Грязно это стало и неприятно.

21.11.08 17:28
0
Не в сети

проблемы с разной скоростью памяти - на видюхах DDR4 уже будет, а на матплате хорошо если DDR3,


и? GDDR3 != DDR3, GDDR4 != DDR4. Ставятся на видеокарты именно GDDR память. Советую почитать стандарты на нее, прежде чем проводить аналогию.

проблема со скоростью передачи данных по шине - PCIEX, вот еслибы доработали Hyper Trnsport....


В каком смысле доработали? Да и с чего это HT могла бы заменить PCIe?

22.11.08 08:25
0
Не в сети

22.11.08 17:24
0
Не в сети

В каком смысле доработали? Да и с чего это HT могла бы заменить PCIe?



в моем доке на nnm.ru
я публиковал цикл статей про многоядерные процессоры, и в этой стаье я писал и про HT:

В принципе технология могла бы с легкостью занять место PCI Express. Этому мешает только неудобство протоколов передачи, которые, вообще говоря, можно было бы и перекрыть вышележащими протоколами, - но Intel предложила свою, совершенно иную альтернативу, а на разработку собственной шины общего назначения (3GIO) на базе HT у AMD, видимо, не хватило ресурсов.

Однажды разработанный мост PCI-HyperTransport позволяет взаимодействовать любому процессору, поддерживающиму шину HyperTransport и любому устройству шины PCI. Для примера, NVIDIA nForce чипсет использует шину HyperTransport для соединения между северным и южным мостами



Советую почитать стандарты на нее, прежде чем проводить аналогию.


зачем так агрессивно, аналогий не проводилось, имелись в виду, разные скорости работы памяти, GDDR4 и DDR3 и возникающие в связи с этим проблемы связанные с возникновением "затора" - очереди и падение производительности.

22.11.08 19:48
0
Не в сети

Увидим. Будет как в ХР - сначала поддерживал только 8 директ, а после установки свежего директа или установки сервис-пака, подерживал и 9 версию. аналогично и Виста и Seven будут поддерживать 11 версию директа. Поправьте, если ошибаюсь.



Технология использования постороннего оборудования в роли запасного CPU слишком сложна, дабы ее можно было внедрить простым Service Pack. Это полная переработка ядра ОС,
если читали книги по API или например Windows Internal, вы читали про различные команды ядра и тд, так вот необходимо научить и GPU и ядро системы сосуществовать, а
ведь различные CPU и GPU имеют разные количество регистров, конвееров, разную длинну очереди и тд.
Если привети более простой пример: Поменяв процессор AMD на Intel вы как минимум вынуждены заменить ядро ОС, в WinXP например это hal.dll - а представьте сколько необходимо
версий hal.dll для всех возможных версий GPU и их сочетания с CPU различных производителей.
Возможно эту проблему решат через виртуализацию GPU, но это создаст проблемы с производительностью.
Не будет полноценной поддержки этой технологии в Семерке. Пожалуйста, если есть что возразить аргументированно, возразите, если есть только желание спорить не флудите плиз,
смысл фраз - нет будет поддержка, я так хочу....
Вот Daniel Korenev я думаю мог бы сказать пару слов по этому вопросу аргументированно и профессианально.

22.11.08 19:59
0
Не в сети

я публиковал цикл статей про многоядерные процессоры, и в этой стаье я писал и про HT:


Как бы их цель разная изначально была. Нельзя сделать нечто универсальное. Есть ряд технологических особенностей, снижающих эффективность HT как шины для устройств - а именно размеры пакетов и их колличество - чем меньше размер, тем меньше подходит шина для интенсивного обмена данных (эффективность ниже). Опять же сложность для конечных девелоперов. Конечно писать костыли это здорово, но не выход. Костыль он и есть костыль, как его не назови. Опять-же PCIe привлекательна тем, что создавалась с оглядкой на PCI.

разные скорости работы памяти, GDDR4 и DDR3 и возникающие в связи с этим проблемы связанные с возникновением "затора" - очереди и падение производительности.


Но вот время доступа к GDDR выше заметно. Раплата за высокую пропускную способность. Ну и цена + сложность разводки.

22.11.08 21:58
0
В сети

Но вот время доступа к GDDR выше заметно.

Для графических процессоров это не важно. Они работают с большими объемами данных (текстурами).
HT и PCIe работают на одних и тех же принципах. Это высокоскоростная последовательная шина с топологией точка-точка. Это немного разные реализации одного и того же алгоритма.

22.11.08 23:28
0
Не в сети

Но вот время доступа к GDDR выше заметно. Раплата за высокую пропускную способность. Ну и цена + сложность разводки.

все так. Но как это будет работать ? Быстрый GPU+быстрая память на борту + не самый быстрый процессор от например амд+ ддр2....
разница в скоростях обмена, съест все плюсы от дополнительных вычислительных мощностей- вот что я хотел сказать.

22.11.08 23:38
0
Не в сети

Для графических процессоров это не важно. Они работают с большими объемами данных (текстурами).


Да, но для оперативной памяти это очень даже имеет значение.

HT и PCIe работают на одних и тех же принципах. Это высокоскоростная последовательная шина с топологией точка-точка. Это немного разные реализации одного и того же алгоритма.


Про принципы никто не спорит. Спорят именно про частности. Заточенность под определенные задачи сказывается. Опять-же см. выше.

22.11.08 23:47
0
Не в сети

Быстрый GPU+быстрая память на борту + не самый быстрый процессор от например амд+ ддр2....
разница в скоростях обмена, съест все плюсы от дополнительных вычислительных мощностей- вот что я хотел сказать.


Зависит от конкретных алгоритмов и задач. Где-то - да, критично, а где-то то же время доступа к видеопамяти будет решающим.

22.11.08 23:54
0
Не в сети

ок.
но мы обсуждаем конкретную стаью и конкретную технологию.
Думаю мы все едины в том что реализация такой технологии очень перспективна и заманчива.
Никто не откажется от такого бонуса.
Но конкретно я высказал предположение, что в Семерке небдет нативной поддержки этой технологии.
зачем говорить банальности- "все зависит от задач и случая", понятно что всегда всё - дело случая,
но варианта всего два:
1) В семерке не будет нативной поддержки и все прелести второго процессора из видеокарты отложатся на потом.
2) майкрософт возмет на себя все тяготы продвижения стандарта и реализует API и прочие стандартизационные услуги за свой счет, причем все это успеет за один
год, как раз к выходу Семерки.

И что вам кажется наиболее вероятным?

23.11.08 00:25
0
Не в сети

GDDR3 и GDDR5. GDDR4 была переходным (уже) недолгим этапом.
Поддержка появится в API DirectX. Это важно, в первую очередь, для приложений, а не для самой системы. Те приложения, которые смогут под свои задачи использовать вычислительные шейдеры, проверят версию DirectX или его возможности и через API DirectX 11+ (а не системное) смогут выполнять параллельные вычисления, реализованные на стандартном MS HLSL. Или использовать OpenCL в качестве API.
Сама разработка и реализация такого API - очень трудоемкая задача. Наверняка доведут до ума только к 11.1, учитывая массовый опыт использования релизной 11-й версии и нарекания на неё. К тому же, производителям графических карт придётся подгонять своё железо к требованиям API (довольно отличным от обычных, рассчитанных на использование железа только для рендеринга графики).
После реализации и обкатки (а так же распространения совместимого железа) можно будет уже реализовывать и системные библиотеки и компоненты, использующие вычислительные шейдеры. Будет это не очень скоро, по моему мнению. Использовать что-либо подобное в Win7 RTM никому в голову не придёт - слишком рано.
Та же тесселяция появилась у ATI несколько лет назад, но более-менее использовать её на платформе PC начинают только сейчас (начиная с DX10 и старше).

23.11.08 01:28
0
Не в сети

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


А что Вы понимаете под нативной поддержкой?
К тому-же "вычислительные шейдеры" это к DirectX'у, который по традиции далеко за грани игрушек не выходит. Хотите общего назначения - смотрите в сторону рассчитанных на это API (которые к тому же открыты и как следствие легче создавать нечто кроссплатфомренное, что важно в ряде задач). В игры сие будет приличным образом использоваться не раньше чем появятся первые разработанные под DX11, т.е. этак через год-полтора после выхода оного. Так уже повелось.

23.11.08 12:27
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
-0
Акции торгуются с 17:30 до 00:00 по Москве
Мы на Facebook
Мы ВКонтакте
В сервисе IPANN.NET купить прокси для SEO и SMM
Все права принадлежат © MSInsider.ru (ex TheVista.ru), 2019
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.171 секунд (Общее время SQL: 0.057 секунд - SQL запросов: 62 - Среднее время SQL: 0.00092 секунд))