Введение в программирование на GPU [закрыто]

У каждого есть этот огромный суперкомпьютер с огромным распараллеливанием на рабочем столе в виде графического процессора.

  • Что такое «привет мир» эквивалент сообщества GPU?
  • Что мне делать, куда мне пойти, чтобы начать программировать GPU для основных поставщиков GPU?

-Адам

174 gpu
20.10.2008 21:09:40
Вы говорите о GPGPU или графическом кодировании?
Menkboy 20.10.2008 21:11:45
Он говорит о CUDA (API для графических процессоров nVidia) и других методах. Использование блоков FPU, доступных в графических процессорах, для неграфического кодирования.
Wedge 21.10.2008 00:31:00
Для справки, последнее поколение GeForce 8800 имеет 128 потоковых процессоров, работающих на частоте ~ 1,3 ГГц, верхняя часть линейки GTX 280 имеет 240 потоковых процессоров, теоретическая производительность этих графических процессоров составляет 0,5 и 0,9 TeraFLOPS соответственно.
Wedge 21.10.2008 00:49:04
9 ОТВЕТОВ
РЕШЕНИЕ

Проверьте CUDA от NVidia, IMO, это самая простая платформа для программирования на GPU. Есть тонны классных материалов для чтения. http://www.nvidia.com/object/cuda_home.html

Привет мир будет делать любые вычисления с использованием графического процессора.

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

69
22.03.2010 23:35:15
  1. Вы получаете программируемые вершинные и пиксельные шейдеры, которые позволяют выполнять код непосредственно на графическом процессоре, чтобы манипулировать буферами, которые должны быть нарисованы. Эти языки (т. Е. OpenGL GL Shader Lang и High Level Shader Lang и эквиваленты DirectX) являются синтаксисом стиля C и действительно просты в использовании. Некоторые примеры HLSL можно найти здесь для игровой студии XNA и Direct X. У меня нет приличных ссылок на GLSL, но я уверен, что их много. Эти шейдерные языки дают огромные возможности для управления тем, что рисуется на уровне каждой вершины или каждого пикселя, непосредственно на видеокарте, что делает такие вещи, как тени, освещение и цветение, действительно простыми для реализации.
  2. Второе, что приходит на ум, - это использование openCL для кодирования новых линий графических процессоров общего назначения. Я не уверен, как это использовать, но я понимаю, что openCL дает вам возможность получить доступ к процессорам как на видеокарте, так и на обычном процессоре. Это еще не мейнстримная технология, и, похоже, ей движет Apple.
  3. CUDA, кажется, горячая тема. CUDA - это способ доступа nVidia к мощности графического процессора. Вот несколько вступлений
17
23.03.2015 22:56:53

Попробуй GPU ++ и libSh

Ссылка LibSh содержит хорошее описание того, как они связывают язык программирования с графическими примитивами (и, очевидно, с самими примитивами), а GPU ++ описывает суть всего, и с примерами кода.

3
20.10.2008 21:23:43

Взгляните на ATI Stream Computing SDK . Он основан на BrookGPU, разработанном в Стэнфорде.

В будущем вся работа на GPU будет стандартизирована с использованием OpenCL . Это спонсируемая Apple инициатива, которая будет нейтральной в отношении производителей видеокарт.

7
20.10.2008 21:30:43

CUDA является отличной основой для начала. Это позволяет вам писать ядра GPGPU на C. Компилятор будет генерировать микрокод GPU из вашего кода и отправлять все, что работает на CPU, вашему обычному компилятору. Это только NVIDIA и работает только на картах 8-й серии или лучше. Вы можете проверить зону CUDA, чтобы увидеть, что можно сделать с ней. В CUDA SDK есть несколько замечательных демоверсий . Документация, которая поставляется с SDK, является хорошей отправной точкой для написания кода. Он проведет вас через написание ядра умножения матриц, и это отличное место для начала.

6
20.10.2008 21:35:31

Я думаю, что другие ответили на ваш второй вопрос. Что касается первого, «Hello World» в CUDA, я не думаю, что существует установленный стандарт, но лично я бы порекомендовал параллельный сумматор (то есть программу, которая суммирует N целых чисел).

Если вы посмотрите на пример «сокращения» в NVIDIA SDK, поверхностно простую задачу можно расширить, чтобы продемонстрировать многочисленные соображения CUDA, такие как объединенное чтение, конфликты банка памяти и развертывание цикла.

Смотрите эту презентацию для получения дополнительной информации:

http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf

9
23.10.2008 08:51:21

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

Он все еще находится на относительно ранних стадиях (1.1 на этот ответ), но приобрел некоторую популярность в отрасли - например, он изначально поддерживается в OS X 10.5 и выше.

7
25.06.2011 16:31:48

Другой простой способ войти в программирование на GPU, не входя в CUDA или OpenCL, - это сделать это через OpenACC .

OpenACC работает как OpenMP с директивами компилятора (вроде #pragma acc kernels) для отправки работы в графический процессор. Например, если у вас большой цикл (на самом деле выигрывают только более крупные):

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 GPU.

5
19.10.2012 19:16:37

Если вы используете MATLAB, становится довольно просто использовать графические процессоры для технических вычислений (матричные вычисления и сложное вычисление математических чисел). Я считаю это полезным для использования карт с графическим процессором вне игр. Проверьте ссылку ниже:

http://www.mathworks.com/discovery/matlab-gpu.html

3
7.07.2014 16:40:08