Введение в программирование графического процессора
Каждый имеет этот огромный массивно распараллеленный суперкомпьютер на своем рабочем столе в виде графической карты GPU.
- Что такое эквивалент "привет мир" сообщества GPU?
- Что мне делать, куда мне пойти, чтобы начать программирование GPU для основных производителей графических процессоров?
-Adam
Ответы
Ответ 1
Откажитесь от CUDA от NVidia, IMO - это самая простая платформа для программирования GPU. Есть тонны прохладных материалов для чтения.
http://www.nvidia.com/object/cuda_home.html
Привет, мир будет делать любые вычисления с использованием графического процессора.
Надеюсь, что это поможет.
Ответ 2
- Вы получаете программируемые вершины и
пиксельные шейдеры, которые позволяют выполнять
кода непосредственно на GPU
манипулировать буферами, которые
нарисовать. Эти языки (т.
OpenGL GL Shader Lang и High
Уровневые шейдеры Lang и DirectX эквиваленты
), являются синтаксисом стиля C и действительно
легко использовать. Некоторые примеры HLSL
можно найти здесь для игры XNA
студия и Direct X. У меня нет
любые приличные ссылки GLSL, но я
уверен, что вокруг много. Эти
шейдерные языки дают огромный
количество мощности до
манипулировать тем, что нарисовано на вершине
или на пиксель, напрямую
на графической карте, делая вещи
как тени, освещение и цветение
действительно легко реализовать.
- Вторая вещь, которая приходит на ум, - это использовать
openCL для кодирования нового
линий графического процессора общего назначения. я
не знаю, как это использовать, но мой
понимание заключается в том, что openCL дает
вы начинаете иметь возможность
процессоров доступа на обоих
графическая карта и обычный процессор. Это еще не основная технология, и, похоже, она управляется Apple.
- CUDA кажется горячей темой. CUDA - это способ NVIDIA доступа к мощности GPU. Вот несколько закладок
Ответ 3
Я думаю, что другие ответили на ваш второй вопрос. Что касается первого, "Hello World" CUDA, я не думаю, что существует стандартный набор, но лично я бы рекомендовал параллельный сумматор (т.е. Программу, суммирующую N целых чисел).
Если вы посмотрите пример "сокращения" в SDK NVIDIA, то наглядно простую задачу можно расширить, чтобы продемонстрировать многочисленные соображения CUDA, такие как совлокальные чтения, конфликты банков памяти и разворот цикла.
См. эту презентацию для получения дополнительной информации:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
Ответ 4
Взгляните на ATI Stream Computing SDK. Он основан на BrookGPU, разработанном в Стэнфорде.
В будущем все работы графического процессора будут стандартизированы с использованием OpenCL. Это инициатива, спонсируемая Apple, которая будет нейтральной производителем видеокарты.
Ответ 5
CUDA - отличная основа для начала. Он позволяет записывать ядра GPGPU в C. Компилятор будет генерировать микрокод GPU из вашего кода и отправлять все, что работает на CPU, в ваш обычный компилятор. Это NVIDIA только, хотя и работает только на картах 8-й серии или лучше. Вы можете проверить зону CUDA, чтобы узнать, что с ним можно сделать. В CUDA SDK есть несколько отличных демонстраций. Документация, которая поставляется с SDK, является хорошей отправной точкой для написания кода. Он проведет вас через написание ядра умножения матрицы, которое станет отличным местом для начала.
Ответ 6
OpenCL - это попытка сделать кросс-платформенную библиотеку, способную программировать код, подходящий, в частности, для графических процессоров. Он позволяет писать код, не зная, на каком графическом процессоре он будет работать, тем самым упростив использование некоторых возможностей графического процессора без особого подхода к нескольким типам графических процессоров. Я подозреваю, что это не так хорошо, как собственный код графического процессора (или такой же родной, как и производители графических процессоров), но компромисс может стоить того, что нужно для некоторых приложений.
Он все еще находится на относительно ранних этапах (1.1 из этого ответа), но приобрел некоторую тягу в отрасли - например, он поддерживается на OS X 10.5 и выше.
Ответ 7
Попробуйте GPU ++ и libSh
Линия LibSh имеет хорошее описание того, как они привязывают язык программирования к графическим примитивам (и, очевидно, самим примитивам), а GPU ++ описывает все, что связано с примерами кода.
Ответ 8
Возможно, вам понравится GPGPU IDE, которая скрывает ненужную сложность для общих экспериментов с GPU. В настоящее время ядра могут быть запрограммированы для шейдеров OpenCL и/или GLSL.
Ответ 9
Еще один простой способ попасть в программирование графического процессора, не входя в CUDA или OpenCL, - это сделать OpenACC.
OpenACC работает как OpenMP, с директивами компилятора (например, #pragma acc kernels
) для отправки работы на GPU. Например, если у вас есть большой цикл (только более крупные из них действительно выгодны):
int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
b[i] = b[i] * a;
}
Изменить: к сожалению, только компилятор PGI действительно поддерживает OpenACC прямо сейчас, для графических карт NVIDIA.
Ответ 10
Если вы используете MATLAB, довольно просто использовать графический процессор для технических вычислений (вычисления матрицы и тяжелая математика/хруст числа). Я считаю, что это полезно для использования графических карт за пределами игр. Посмотрите ссылку ниже:
http://www.mathworks.com/discovery/matlab-gpu.html
Ответ 11
Мне также интересна эта тема и параллельное программирование.
И я нашел ссылку , пожалуйста, посмотрите Udacity.com!