DirectCompute
DirectCompute — интерфейс программирования приложений (API), который входит в состав DirectX (набора API от Microsoft), который предназначен для работы на IBM PC-совместимых компьютерах под управлением операционных систем семейства Microsoft Windows. DirectCompute предназначен для выполнения вычислений общего назначения на графических процессорах, являясь реализацией концепции GPGPU, наряду с программными интерфейсами CUDA, ATI Stream и OpenCL[1].
Изначально DirectCompute был опубликован в составе DirectX 11, однако позже стал доступен и для DirectX 10 и DirectX 10.1.
Технологическое описание
DirectCompute, впервые появившись в составе DirectX 11, стал одним из важнейших его нововведений, первой технологией в составе DirectX, предоставившей доступ к вычислениям общего назначения на графических процессорах (англ. GPU).[2]
DirectCompute присутствует в трёх версиях:[2]
- DirectCompute 10 для GPU, которые поддерживают Direct3D 10;
- DirectCompute 10.1 для GPU, которые поддерживают Direct3D 10.1;
- DirectCompute 11 для GPU, которые поддерживают Direct3D 11.
Если версии DirectCompute 10 и DirectCompute 10.1 почти одинаковы по функциональным возможностям, то DirectCompute 11 предоставляет существенно больше функций[2]:
- 3D Thread Dispatch предоставляет возможность при помощи одного трёхмерного потока массива заменить несколько двумерных;
- Максимальное количество потоков по сравнению с DirectCompute 10/10.1 увеличено на 33 %: с 768 до 1024;
- Объём памяти, выделяемый на группу потоков, был увеличен с 16 Кб до 32 Кб;
- Улучшен доступ к памяти: если для DirectCompute 10/10.1 возможность чтения и записи были возможны лишь в область памяти размером 256 Кб, то в DirectCompute 11 этот размер уменьшен до 32 Кб;
- Появились т. н. атомарные операции, которые дали возможность каждому потоку использовать защищенные области памяти;
- добавлены вычисления с двойной точностью;
- добавлена Gather4 — выборка из графической памяти, скорость работы которой при определённых условиях может в четыре раза превышать скорость предыдущих выборок.
Использование и поддержка
Несмотря на нацеленность на неграфические вычисления общего назначения, DirectCompute может использоваться и в игровой графике. Так, он может использоваться при рендеринге теней, рендеринге полупрозрачных поверхностей без предварительной сортировки (англ. order independent transparency) и некоторых других областях. Также DirectCompute может использоваться для трассировки лучей, обработке и фильтрации цифровых изображений, просчёте алгоритмов игрового искусственного интеллекта и для других задач.[2]
Особенный интерес DirectCompute вызывает при просчёте алгоритмов физических движков. С помощью DirectCompute можно обрабатывать механику твёрдых тел, физику тканей и гидрогазодинамику. Компания AMD активно работает с DirectCompute в рамках проекта Open Physics Initiative.[3]
DirectCompute поддерживается всеми основными компаниями на рынке производства графических процессоров: AMD и nVidia.
- На графических процессорах производства AMD, технология DirectCompute работает «поверх» AMD FireStream. AMD в сотрудничестве с Pixelux Entertainment и Эрвином Кумансом в рамках проекта Open Physics Initiative работает над переносом физических вычислений на GPU. Кроме этого, в сотрудничестве с компанией CyberLink AMD работает над «переносом» на DirectCompute алгоритмов кодирования и декодирования видеоданных, редактирования видео, распознавания лиц.[4]
- На графических процессорах производства nVidia DirectCompute работает «поверх» CUDA. На Game Developers Conference 2009 nVidia показала свои первые три технологические демонстрации DirectCompute, которые выполнялись на GeForce GTX 280.[5]
Существует специальный бенчмарк, тестирующий DirectCompute.[6][7]
Примечания
- DirectCompute
- Андрей Воробьев, Алексей Берилло. ATI RADEON HD 5870 1024MB PCI-E . iXBT.com (23 сентября 2009). Дата обращения: 20 октября 2010.
- Gus Class. DirectCompute Lecture Series 230: GPU Accelerated Physics (англ.). MSDN (11 августа 2010). Дата обращения: 20 октября 2010. Архивировано 3 июля 2012 года.
- AMD. AMD and CyberLink Accelerate Video Applications with Windows 7 DirectX 11 DirectCompute (англ.). BmR (9 октября 2009). Дата обращения: 20 октября 2010. Архивировано 3 июля 2012 года.
- DirectCompute (англ.). Официальный сайт nVidia. Дата обращения: 20 октября 2010. Архивировано 20 октября 2010 года.
- Regeneration. First DirectCompute Benchmark Released (англ.). NGOHQ (4 ноября 2009). Дата обращения: 20 октября 2010. Архивировано 3 июля 2012 года.
- напр., ComputeMark
Ссылки
- Ian McNaughton. DirectX 11 – What to expect! (англ.). Официальный сайт AMD (9 сентября 2009). Дата обращения: 20 октября 2010. Архивировано 28 февраля 2012 года.
- Редакция THG. Что технология DirectCompute значит для геймеров? . Tom's Hardware (24 апреля 2012). Дата обращения: 24 апреля 2012.