Программирование на GPU - PullRequest
4 голосов
/ 13 апреля 2011

Я хочу заняться программированием на GPU. Какой способ пойти сюда? Я хочу выучить что-то «открытое», кроссплатформенное и «высший» язык. Я не хочу быть привязанным только к поставщику графических процессоров, операционной системе, платформе и т. Д.

Какой у меня выбор? Cuda, OpenCL, OpenMP, другие? Какие плюсы / минусы для них?

А как насчет G / HLSL и PhysX?

Я смотрю на программирование "общего назначения", некоторую математику, вычисление чисел, симуляции и т. Д. Возможно, выложите немного симпатичной графики, но не конкретно графического программирования.

Ответы [ 6 ]

9 голосов
/ 08 апреля 2015

Ответ, помеченный как правильный, теперь устарел и неверен.В частности, OpenMP 4.0 поддерживает ускорение графического процессора.

4 голосов
/ 13 апреля 2011

OpenMP - это только процессор, но его легко реализовать, CUDA - это только GPU. Ati Stream поддерживает оба, но только на GPU Ati / AMD. OpenCL - ваш единственный «открытый» вариант, который поддерживает оба варианта.

1 голос
/ 25 августа 2015

Поддержка графического процессора для openMP будет доступна в ближайшее время:

http://openmp.org/sc14/Booth-Sam-IBM.pdf

1 голос
/ 15 апреля 2014

В настоящее время - 2013/2014 - существует C ++ ускоренный массовый параллелизм (AMP) от Microsoft .Это язык высокого уровня, который компилируется в High Level Shader Language (HLSL), поэтому вам не нужно писать код ядра и т. Д.

Простое и удобное для чтения сравнение между OpenCL и C ++ AMP выполняетсянарод AMD и находится здесь (нажмите!) .

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

Open CL открыт, но я слышал, что недостатком этого является отсутствие документации. ATI может быть лучше между NVIDIA и ATI, так как в 2009 году он был быстрее, но я не уверен, что эта статистика все еще верна.

0 голосов
/ 29 апреля 2011

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

Надеюсь, это поможет.

...