Подтвердить что ты не робот

Что такое CUDA? Для чего это? Каковы преимущества? И как начать?

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

В основном мои вопросы таковы:

Что такое IS CUDA? (это фреймворк? Или API? Что?)

Для чего это? (есть ли что-то большее, чем просто программирование на GPU?)

Каково это?

В чем преимущества программирования против CUDA вместо программирования на CPU?

Какое хорошее место для программирования с CUDA?

4b9b3361

Ответ 1

CUDA объединяет несколько вещей:

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

Точкой CUDA является запись кода, который может работать на совместимых массивных параллельных архитектурах SIMD: это включает в себя несколько типов графических процессоров, а также не-графическое оборудование, такое как nVidia Tesla. Массивно параллельное оборудование может выполнять значительно большее количество операций в секунду, чем процессор, при достаточно схожих финансовых затратах, что дает повышение производительности в 50 раз; или более в ситуациях, которые позволяют.

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

Это также признак того, что nVidia готова поддерживать универсальное распараллеливание на своем оборудовании: теперь это звучит не так, как "взлом с графическим процессором" и больше похоже на "использование поддерживаемой вендорами технологии", и это делает его принятие легче в присутствии нетехнических заинтересованных сторон.

Чтобы начать использовать CUDA, загрузите SDK, прочитайте руководство (серьезно, это не так сложно, если вы уже знаете C) и купите CUDA-совместимое оборудование (сначала вы можете использовать эмулятор, но производительность является конечной точкой это, лучше, если вы действительно можете попробовать свой код)

Ответ 2

(Отказ от ответственности: я использовал CUDA только для семестрового проекта в 2008 году, поэтому с тех пор все могло измениться). CUDA - это инструментальная цепочка разработки для создания программ, которые могут выполняться на графических процессорах nVidia, а также API для управления такими программ из ЦП.

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

В некотором смысле, CUDA довольно прост, потому что вы можете использовать обычный C для создания программ. Однако для достижения хорошей производительности необходимо учитывать много вещей, в том числе множество низкоуровневых деталей архитектуры графического процессора Tesla.