NVidia CUDA

Вот натолкнулся на такую технологию - вопрос ее кто-нибудь уже реально юзал?


NVidia CUDA (Compute Unified Device Architecture – Унифицированная вычислительная архитектура). Технология NVidia CUDA как и пиксельные шейдеры позволяет выполнять программы, написанные на си-подобном языке на процессоре видеокарты без привлечения центрального процессора. С помощью этой технологии можно решать практически любые задачи, связанные с трудоёмкими математическими вычислениями. Большое количество потоков на видеокарте могут выполняться параллельно. Потоки объединены в блоки. Каждый блок содержит равное количество потоков. При вызове функции, выполняемой непосредственно процессором видеокарты, эта функция выполняется тем количеством потоков, которое указано при её вызове. При этом часть работы, выполняемая некоторым потоком, определяется по номеру блока и номеру потока в этом блоке.

Технология NVidia CUDA поддерживается только на видеокартах серии 8 фирмы NVidia. У фирмы AMD создана еще собственную технология под названием CTM (Close to Metal).

Модель памяти технологии CUDA включает несколько типов памяти. В том числе это разделяемая память и константная память. Разделяемая память (shared memory) является внутрипроцессорной, поэтому скорость доступа к ней намного выше, чем к глобальной памяти. Каждому блоку потоков выделяется определённое количество разделяемой памяти. Константная память оптимизирована для доступа на чтение. Этот тип памяти кэшируемый, что в среднем ускоряет чтение данных, находящихся в константной памяти. Наличие этих двух типов памяти позволяет ускорить выполнение алгоритмов, требующих большого количества обращений к памяти.

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

Программные модули, написанные с использованием технологии NVidia CUDA, легко встраиваются в обычное приложение, написанное на си++. Для этого не требуется задействовать дополнительные программные средства, такие как DirectX или OpenGL.

Последняя правка: пн, 29/08/2011 - 22:03
Submitted by Victor on

Комментарии

Круто что могу сказать, осталось подождать унифицированного интерфейса, может кто попробует написать рендер минуя ДХ или ОГЛ ? Smile

Submitted by Relyer on

Технология NVidia CUDA поддерживается только на видеокартах серии 8 фирмы NVidia.

Поддерживается GF8, GF9 (их производные Quadro/Tesla)также новая линейка 260/280.

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

Тут бы следовало указать, что понятие потока в CUDA и в програмированиии под CPU отличаются, а именно цитирую: "поток GPU в данном случае является базовый набор данных, которые требуется обработать. В отличие от потоков CPU, потоки CUDA очень "лёгкие", то есть переключение контекста между двумя потоками - отнюдь не ресурсоёмкая операция". Это цитата с сайта www.thg.ru, полную версию статьи можно почитать по ссылке nVidia CUDA: вычисления на видеокарте или смерть CPU?

Submitted by ihar3d on
Quote:
ihar3d писал(а):
...полную версию статьи можно почитать по ссылке...
Спасибо, очень познавательная статья.

А учитывая это:


The Khronos Group — консорциум, целью которого является создание открытых API, — объявил о создании объединения Compute Working Group, которое сфокусируется на создании открытого стандарта для параллельных вычислений при помощи центрального и графического процессоров. Среди учредителей группы — Apple и два крупнейших производителя дискретных графических процессоров — AMD и NVIDIA.

Объединение начнет работу над спецификациями стандарта Open Computing Language (OpenCL), который, по словам Apple, предоставит прграммистам доступ к вычислительным ресурсам CPU и GPU при помощи С-подобного языка.

«Широкораспространенный открытый стандарт с поддержкой высокопроизводительных вычислений позволит расширить область применения GPU за пределы приложений, интенсивно использующих графику, и обеспечит координацию между различными GPU и многоядерными CPU внутри одной системы. Эта возможность будет иметь хорошие прикладные качества — в том числе благодаря центральной роли в экосистеме Khronos API в качестве front-end для OpenGL и OpenGL ES, что поможет создать платформу для акселерации таких задач, как расчет физических явлений или обработка/распознование изображений», — говорится в пресс-релизе.

The Khronos Group отвечает за API OpenGL, OpenGL ES и др.

источник:
http://www.macrumors.com/2008/06/17/industry-group-to-establish-opencl-standard/

http://www.gamedev.ru/industry/news/?id=3030#cut


То можно надеяться на скорое выработку единого стандарта.

Submitted by Victor on

GameDev.by