DirectCompute против OpenCL для программирования на GPU?

У меня есть некоторые (финансовые) задачи, которые должны хорошо соответствовать вычислениям на GPU, но я не совсем уверен, стоит ли мне использовать OpenCL или DirectCompute. Я занимался на GPU, но это было очень давно (3 года). Я сделал это через OpenGL, так как тогда не было никакой альтернативы.

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

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

Итак, вы использовали кого-нибудь из этих двух? Особенно DirectCompute? Как это по сравнению с OpenCL (и CUDA)?

3 ответа

Решение

Учитывая, что вы ищете неграфические вычисления, я бы посоветовал вам предпочесть OpenCL, а не DirectCompute, так как вы, скорее всего, найдете больше в помощи сообщества.

Учитывая, что вы уже определили, что переход от одного к другому относительно прост, то есть, когда вы уже выполнили работу по распараллеливанию вашего приложения, вы также можете рассмотреть CUDA как для OpenCL, так и для DirectCompute по той же причине.

Вы работали в OpenGL раньше; любой из них должен быть восхитительным в использовании по сравнению с этим!

Я изучаю OpenCL. Когда я принимал подобное решение, самое большое преимущество OpenCL для меня - гетерогенная среда (в отличие от CUDA и других решений). Я имею в виду не только аппаратное обеспечение, но и ОС. OpenCL гораздо более бесплатный стандарт, чем, например, CUDA.

Написание кода - дорогостоящая задача. Я хотел бы иметь возможность использовать мой код gpgpu в будущем, без каких-либо ограничений: на многих параллельных процессорах, на устройствах того или иного поставщика или другой операционной системы. Я могу вычислять на моем компьютере небольшие задачи, в то время как на более крупной машине в Univesity с большим количеством процессоров больше задач, аналогичных задачам, в то время как на других - с Tesla, когда больше задач по обработке данных. OpenCL дает такое повторное использование кода на различных аппаратных средствах и ОС.

Другим вариантом является C++ AMP, который также нацелен на графические процессоры и имеет резервный многоядерный процессор и цель инструкций SIMD. Это позволит вам сосредоточиться на вычислениях, и если вам действительно нужно интегрироваться с графикой, для этого также есть уровень взаимодействия. Через открытую спецификацию мы должны увидеть реализации для других операционных систем в какой-то момент. Пожалуйста, перейдите по ссылкам отсюда для получения дополнительной информации и не стесняйтесь размещать вопросы по мере их возникновения: http://blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp-in-a-nutshell.aspx

Другие вопросы по тегам