Свертки на GPU: Какой язык (HLSL / Cuda и т. Д.) Будет иметь самый длинный срок поддержки? - PullRequest
1 голос
/ 09 августа 2011

В настоящее время я пишу автоматизированную систему контроля, которая использует масштабное представление для определения гребней и кромок. В настоящее время у него есть программная реализация, но я думаю, что GPU - это путь. Мой алгоритм представляет собой серию сверток различных ядер.

Тем не менее, моя компания ранее все делала на процессоре (и это очень много для автоматического осмотра), поэтому мне будет трудно убедить моего босса, что это необходимо, и поддержка / долголетие - большая часть этого. Мы будем поддерживать эти вещи около 10 лет, по всей вероятности.

Так какой язык имеет лучшие гарантии поддержки?

Ps. Мы запускаем окна на все.

Ответы [ 3 ]

3 голосов
/ 09 августа 2011

Ни у кого нет никаких гарантий!

Это зависит от того, что вы подразумеваете под 'поддержкой'

  • Запускает ли новое оборудование код - поскольку драйвер преобразует код cuda в инструкции hw, тогда должно быть легко поддерживать хотя бы часть из них на новых графических процессорах, пока NVidia остается в бизнесе. Конечно, многие компании, выпускающие видеокарты, сейчас ушли, и игровой бизнес не так фанатичен в отношении обратной совместимости, как Microsoft. Таким образом, OpenCL может быть более безопасной ставкой.

  • Предлагает ли производитель техническую поддержку - если это стандарт, то поддержка будет. SGI давно нет, но OpenGL по-прежнему хорошо поддерживается.

  • Можете ли вы разработать код на новом оборудовании - опять же, поскольку существует слой байт-кода, это не так плохо, как попытка найти платформу разработки MIPS для разработки кода MIPs.

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

В целом, я подозреваю, что CUDA / OpenCL будет лучшей долгосрочной ставкой, чем ручная настройка кода SSE2 для текущего поколения процессоров Intel или использование какого-либо специального решения DSP / FPGA.

10 лет на самом деле не так долго, как вы думаете, в мире программного обеспечения, многие приложения MFC все еще используются, и, конечно, OpenGL все еще довольно хорошо поддерживается. У меня не было бы, хотя CUDA собирается уйти - и если бы это произошло, я бы ожидал, что инструменты переведут его в OPENCL или что-то еще, что заменит его.

На самом деле индустриальное мнение таково, что DirectX / OpenGL исчезнет, ​​а все процессы будут выполняться напрямую в языке GPGPU.

2 голосов
/ 09 августа 2011

Если все, что вам нужно, это поддержка, то OpenCL, вероятно, будет лучшей ставкой на длительный период.

Тем не менее, CUDA вряд ли исчезнет через 10 лет или около того.nVidia вложила огромные средства в вычисления GPGPU и, вероятно, сохранит обратную совместимость для всех своих будущих наборов микросхем.

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

0 голосов
/ 10 августа 2011

Мартин Беккет и Пикксу дали хорошие ответы;позвольте мне добавить что-то слишком большое для комментария:

Суть CUDA против OpenCL в том, что ядра - где почти вся тяжелая работа выполнена -очень похожи, хотя ключевые слова разные.Безусловно, самая сложная часть программирования GPGPU - выяснить, как эффективно разбить вашу программу на мелкозернистые части SIMD, которые хорошо работают.Как только вы это выясните, полученные ядра довольно легко перетасовываются между CUDA и OpenCL, и я представляю, что будет дальше.

Стандартный код для распределения памяти, перетасовывания данных назад и вперед междуhost & GPU и т. д. гораздо менее похожи, но по сравнению с ядрами переписать этот материал сравнительно просто.(Скучно до чертиков, но прямолинейно).

Так что я бы не стал тратить много времени на чтение чайных листьев, чтобы попытаться угадать, что будет дольше между CUDA и OpenCL.Если вы делаете решите пойти по этому пути, просто найдите оборудование и (возможно, что еще более важно) платформу разработки, которая соответствует вашим потребностям, затем выберите язык GPGPU, наиболее подходящий для этого, и работайте с ним.

...