Введение в программирование на графическом процессоре [закрыто]

StackOverflow https://stackoverflow.com/questions/219928

  •  03-07-2019
  •  | 
  •  

Вопрос

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

  • Что такое эквивалент сообщества графических процессоров "hello world"?
  • Что мне делать, куда мне обратиться, чтобы начать программировать графический процессор для основных поставщиков графических процессоров?

-Адам

Это было полезно?

Решение

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

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

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

Другие советы

  1. Вы получаете программируемые вершинные и пиксельные шейдеры, которые позволяют выполнять код непосредственно на графическом процессоре для управления буферами, которые должны быть отрисованы.Эти языки (т.е.Язык шейдеров GL в OpenGL и язык шейдеров высокого уровня и эквиваленты DirectX ), синтаксис в стиле C и действительно прост в использовании.Некоторые примеры HLSL можно найти здесь для XNA game студия и директ X.У меня нет каких-либо достойных ссылок на GLSL, но я уверен, что их много вокруг.Эти языки шейдеров предоставляют огромное количество возможностей для управления тем, что прорисовывается на уровне каждой вершины или на уровне каждого пикселя, непосредственно на видеокарте, создавая такие объекты , как тени, освещение и цветение действительно прост в реализации.
  2. Второе, что приходит на ум, - это использование OpenCL для кодирования новых строк графических процессоров общего назначения.Я не знаете, как использовать это, но мой понимаю, что в OpenCL дает вы зачатки возможность процессоры доступа на видеокарта и процессор нормальный.Это еще не основная технология, и, похоже, ею управляет Apple.
  3. CUDA кажется, это горячая тема.CUDA - это способ доступа nVidia к мощности графического процессора. Здесь есть несколько вступлений

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

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

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

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

Взгляните на ATI Stream Computing SDK для потоковых вычислений.Она основана на Брукгпу разработан в Стэнфорде.

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

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

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

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

Еще один простой способ освоить программирование на GPU, не заходя в CUDA или OpenCL, - сделать это через OpenACC ( Открытый ACC ).

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.

Попробуй Графический процессор++ и Либш

В LibSh link есть хорошее описание того, как они привязали язык программирования к графическим примитивам (и, очевидно, сами примитивы), а GPU ++ описывает, что это такое, оба с примерами кода.

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

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

Я также интересуюсь этой темой и параллельным программированием.И я нашел следующее Ссылка, пожалуйста, взгляните на Udacity.com !

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top