Русская Википедия: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, предоставившей доступ к вычислениям общего назначения на графических процессорах (Шаблон:Lang-en).[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 может использоваться и в игровой графике. Так, он может использоваться при рендеринге теней, рендеринге полупрозрачных поверхностей без предварительной сортировки (Шаблон:Lang-en) и некоторых других областях. Также 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]

Существует специальный бенчмарк, тестирующий DirectCompute.[6][7]

Примечания

Шаблон:Примечания

Ссылки

  1. Шаблон:Cite web
  2. 2,0 2,1 2,2 2,3 Ошибка цитирования Неверный тег <ref>; для сносок ixbt_article не указан текст
  3. Шаблон:Cite web
  4. Шаблон:Cite web
  5. Шаблон:Cite web
  6. Шаблон:Cite web
  7. напр., ComputeMark