Лучший способ использовать графический процессор - PullRequest
0 голосов
/ 28 августа 2018

У меня есть относительно небольшая часть кода, которая имеет дело с огромными наборами данных, которые я уже распараллелил с использованием openmp, и я стремлюсь еще больше повысить производительность с помощью графического процессора. Программа на C ++, разработанная в рамках VS2015, работает исключительно на Windows и должна поддерживать 64-разрядные версии от 7 и выше на самых разнообразных графических процессорах, насколько это возможно. Технологии, которые я изучал до сих пор, включают AMP, OpenCL, HLSL и CUDA. Уже заданные вопросы, такие как с информативным ответом Эде Миллер , заставляют меня задаться вопросом, является ли AMP подходом, хотя он выглядит как самый простой вариант. Я отказываюсь от CUDA, так как он ограничивает меня в плане поддерживаемого оборудования, и я склоняюсь к OpenCL, в настоящее время прорабатывая следующую книгу . Поэтому у меня есть следующие вопросы:

Является ли OpenCL хорошим подходом здесь, поскольку другие посты предполагают, что он также может быть в пути?

Если я выберу OpenCL, желая поддерживать самый широкий спектр графических процессоров, лучше ли мне использовать версию OpenCL 1.x? Причина, по которой я спрашиваю это, заключается в том, что OpenCL.DLL, загруженная с последней версией CUDA SDK, составляет 1.9. Мне пришлось скачать Intel SDK для OpenCL, чтобы получить версию 2.x.

Если я перейду с OpenCL, что мне нужно распространять вместе с моим приложением (при условии, что OpenCL.DLL будет как минимум) и есть ли проблемы с лицензированием? Будут ли драйверы по умолчанию для большинства карт поддерживать OpenCL и, если да, то какие версии?

Что касается вышесказанного, действительно ли мне лучше с AMP, так как он работает с чем-либо, имеющим DirectX 11 или лучше?

(Прошу прощения, если вышеизложенное немного не по теме, если кто-то считает, что, возможно, они могут указать мне лучший форум, чтобы задать эти вопросы)

1 Ответ

0 голосов
/ 29 августа 2018

Является ли OpenCL хорошим подходом здесь, поскольку другие посты предполагают, что он также может быть в пути?

OpenCL - наиболее широко поддерживаемая вычислительная платформа для графических процессоров. Поддерживается nVidia, AMD и Intel. Работает также на большинстве мобильных платформ. Также доступен большой набор библиотек: ViennaCL, clBLast, clBlast, Boost-Compute и т. Д.

Если я выберу OpenCL, желая поддерживать самый широкий спектр графических процессоров, лучше ли мне использовать версию OpenCL 1.x?

Да, в настоящее время самым безопасным является придерживаться 1.2 - и на самом деле этого более чем достаточно.

Все основные производители графических процессоров для настольных ПК (Intel, AMD, nVidia) поддерживают как минимум OpenCL 1.2. Фактически, только nVidia не выпустила официальную поддержку 2.0 - она ​​все еще находится в стадии бета-тестирования.

Также обратите внимание, что некоторые старые графические процессоры будут поддерживать только OpenCL 1.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...