Какие видеокарты nvidia поддерживают cuda: CUDA GPUs | NVIDIA Developer

Содержание

Вычисления на графических процессорах | Технологии | Дайджест новостей

Вычисления на графических процессорах

Технология CUDA (англ. Compute Unified Device Architecture) — программно-аппаратная архитектура, позволяющая производить вычисления с использованием графических процессоров NVIDIA, поддерживающих технологию GPGPU (произвольных вычислений на видеокартах). Архитектура CUDA впервые появились на рынке с выходом чипа NVIDIA восьмого поколения — G80 и присутствует во всех последующих сериях графических чипов, которые используются в семействах ускорителей GeForce, ION, Quadro и Tesla.

CUDA SDK позволяет программистам реализовывать на специальном упрощённом диалекте языка программирования Си алгоритмы, выполнимые на графических процессорах NVIDIA и включать специальные функции в текст программы на Cи. CUDA даёт разработчику возможность по своему усмотрению организовывать доступ к набору инструкций графического ускорителя и управлять его памятью, организовывать на нём сложные параллельные вычисления.

История

В 2003 г. Intel и AMD участвовали в совместной гонке за самый мощный процессор. За несколько лет в результате этой гонки тактовые частоты существенно выросли, особенно после выхода Intel Pentium 4.

После прироста тактовых частот (между 2001 и 2003 гг. тактовая частота Pentium 4 удвоилась с 1,5 до 3 ГГц), а пользователям пришлось довольствоваться десятыми долями гигагерц, которые вывели на рынок производители (с 2003 до 2005 гг.тактовые частоты увеличились 3 до 3,8 ГГц).

Архитектуры, оптимизированные под высокие тактовые частоты, та же Prescott, так же стали испытывать трудности, и не только производственные. Производители чипов столкнулись с проблемами преодоления законов физики. Некоторые аналитики даже предрекали, что закон Мура перестанет действовать. Но этого не произошло. Оригинальный смысл закона часто искажают, однако он касается числа транзисторов на поверхности кремниевого ядра. Долгое время повышение числа транзисторов в CPU сопровождалось соответствующим ростом производительности — что и привело к искажению смысла. Но затем ситуация усложнилась. Разработчики архитектуры CPU подошли к закону сокращения прироста: число транзисторов, которое требовалось добавить для нужного увеличения производительности, становилось всё большим, заводя в тупик.

Причина, по которой производителям GPU не столкнулись с этой проблемой очень простая: центральные процессоры разрабатываются для получения максимальной производительности на потоке инструкций, которые обрабатывают разные данные (как целые числа, так и числа с плавающей запятой), производят случайный доступ к памяти и т.д. До сих пор разработчики пытаются обеспечить больший параллелизм инструкций — то есть выполнять как можно большее число инструкций параллельно. Так, например, с Pentium появилось суперскалярное выполнение, когда при некоторых условиях можно было выполнять две инструкции за такт. Pentium Pro получил внеочередное выполнение инструкций, позволившее оптимизировать работу вычислительных блоков. Проблема заключается в том, что у параллельного выполнения последовательного потока инструкций есть очевидные ограничения, поэтому слепое повышение числа вычислительных блоков не даёт выигрыша, поскольку большую часть времени они всё равно будут простаивать.

Работа GPU относительно простая. Она заключается в принятии группы полигонов с одной стороны и генерации группы пикселей с другой. Полигоны и пиксели независимы друг от друга, поэтому их можно обрабатывать параллельно. Таким образом, в GPU можно выделить крупную часть кристалла на вычислительные блоки, которые, в отличие от CPU, будут реально использоваться.

GPU отличается от CPU не только этим. Доступ к памяти в GPU очень связанный — если считывается тексель, то через несколько тактов будет считываться соседний тексель; когда записывается пиксель, то через несколько тактов будет записываться соседний. Разумно организуя память, можно получить производительность, близкую к теоретической пропускной способности. Это означает, что GPU, в отличие от CPU, не требуется огромного кэша, поскольку его роль заключается в ускорении операций текстурирования. Всё, что нужно, это несколько килобайт, содержащих несколько текселей, используемых в билинейных и трилинейных фильтрах.

Первые расчёты на GPU

Самые первые попытки такого применения ограничивались использованием некоторых аппаратных функций, таких, как растеризация и Z-буферизация. Но в нынешнем веке, с появлением шейдеров, начали ускорять вычисления матриц. В 2003 г. на SIGGRAPH отдельная секция была выделена под вычисления на GPU, и она получила название GPGPU (General-Purpose computation on GPU) — универсальные вычисления на GPU).

Наиболее известен BrookGPU — компилятор потокового языка программирования Brook, созданный для выполнения неграфических вычислений на GPU. До его появления разработчики, использующие возможности видеочипов для вычислений, выбирали один из двух распространённых API: Direct3D или OpenGL. Это серьёзно ограничивало применение GPU, ведь в 3D графике используются шейдеры и текстуры, о которых специалисты по параллельному программированию знать не обязаны, они используют потоки и ядра. Brook смог помочь в облегчении их задачи. Эти потоковые расширения к языку C, разработанные в Стэндфордском университете, скрывали от программистов трёхмерный API, и представляли видеочип в виде параллельного сопроцессора. Компилятор обрабатывал файл .br с кодом C++ и расширениями, производя код, привязанный к библиотеке с поддержкой DirectX, OpenGL или x86.

Появление Brook вызвал интерес у NVIDIA и ATI и в дальнейшем, открыл целый новый его сектор — параллельные вычислители на основе видеочипов.

В дальнейшем, некоторые исследователи из проекта Brook перешли в команду разработчиков NVIDIA, чтобы представить программно-аппаратную стратегию параллельных вычислений, открыв новую долю рынка. И главным преимуществом этой инициативы NVIDIA стало то, что разработчики отлично знают все возможности своих GPU до мелочей, и в использовании графического API нет необходимости, а работать с аппаратным обеспечением можно напрямую при помощи драйвера. Результатом усилий этой команды стала NVIDIA CUDA.

Области применения параллельных расчётов на GPU

При переносе вычислений на GPU, во многих задачах достигается ускорение в 5-30 раз, по сравнению с быстрыми универсальными процессорами. Самые большие цифры (порядка 100-кратного ускорения и даже более!) достигаются на коде, который не очень хорошо подходит для расчётов при помощи блоков SSE, но вполне удобен для GPU.

Это лишь некоторые примеры ускорений синтетического кода на GPU против SSE-векторизованного кода на CPU (по данным NVIDIA):

• Флуоресцентная микроскопия: 12x.

• Молекулярная динамика (non-bonded force calc): 8-16x;

• Электростатика (прямое и многоуровневое суммирование Кулона): 40-120x и 7x.

Таблица, которую NVIDIA, показывает на всех презентациях, в которой показывается скорость графических процессоров относительно центральных.

Перечень основных приложений, в которых применяются вычисления на GPU: анализ и обработка изображений и сигналов, симуляция физики, вычислительная математика, вычислительная биология, финансовые расчёты, базы данных, динамика газов и жидкостей, криптография, адаптивная лучевая терапия, астрономия, обработка звука, биоинформатика, биологические симуляции, компьютерное зрение, анализ данных (data mining), цифровое кино и телевидение, электромагнитные симуляции, геоинформационные системы, военные применения, горное планирование, молекулярная динамика, магнитно-резонансная томография (MRI), нейросети, океанографические исследования, физика частиц, симуляция свёртывания молекул белка, квантовая химия, трассировка лучей, визуализация, радары, гидродинамическое моделирование (reservoir simulation), искусственный интеллект, анализ спутниковых данных, сейсмическая разведка, хирургия, ультразвук, видеоконференции.

Преимущества и ограничения CUDA

С точки зрения программиста, графический конвейер является набором стадий обработки. Блок геометрии генерирует треугольники, а блок растеризации — пиксели, отображаемые на мониторе. Традиционная модель программирования GPGPU выглядит следующим образом:

Чтобы перенести вычисления на GPU в рамках такой модели, нужен специальный подход. Даже поэлементное сложение двух векторов потребует отрисовки фигуры на экране или во внеэкранный буфер. Фигура растеризуется, цвет каждого пикселя вычисляется по заданной программе (пиксельному шейдеру). Программа считывает входные данные из текстур для каждого пикселя, складывает их и записывает в выходной буфер. И все эти многочисленные операции нужны для того, что в обычном языке программирования записывается одним оператором!

Поэтому, применение GPGPU для вычислений общего назначения имеет ограничение в виде слишком большой сложности обучения разработчиков. Да и других ограничений достаточно, ведь пиксельный шейдер — это всего лишь формула зависимости итогового цвета пикселя от его координаты, а язык пиксельных шейдеров — язык записи этих формул с Си-подобным синтаксисом. Ранние методы GPGPU являются хитрым трюком, позволяющим использовать мощность GPU, но без всякого удобства. Данные там представлены изображениями (текстурами), а алгоритм — процессом растеризации. Нужно особо отметить и весьма специфичную модель памяти и исполнения.

Программно-аппаратная архитектура для вычислений на GPU компании NVIDIA отличается от предыдущих моделей GPGPU тем, что позволяет писать программы для GPU на настоящем языке Си со стандартным синтаксисом, указателями и необходимостью в минимуме расширений для доступа к вычислительным ресурсам видеочипов. CUDA не зависит от графических API, и обладает некоторыми особенностями, предназначенными специально для вычислений общего назначения.

Преимущества CUDA перед традиционным подходом к GPGPU вычислениям

CUDA обеспечивает доступ к разделяемой между потоками памяти размером в 16 Кб на мультипроцессор, которая может быть использована для организации кэша с широкой полосой пропускания, по сравнению с текстурными выборками;

• более эффективная передача данных между системной и видеопамятью;

• отсутствие необходимости в графических API с избыточностью и накладными расходами;

• линейная адресация памяти, и gather и scatter, возможность записи по произвольным адресам;

• аппаратная поддержка целочисленных и битовых операций.

Основные ограничения CUDA:

• отсутствие поддержки рекурсии для выполняемых функций;

• минимальная ширина блока в 32 потока;

• закрытая архитектура CUDA, принадлежащая NVIDIA.

Слабыми местами программирования при помощи предыдущих методов GPGPU является то, что эти методы не используют блоки исполнения вершинных шейдеров в предыдущих неунифицированных архитектурах, данные хранятся в текстурах, а выводятся во внеэкранный буфер, а многопроходные алгоритмы используют пиксельные шейдерные блоки. В ограничения GPGPU можно включить: недостаточно эффективное использование аппаратных возможностей, ограничения полосой пропускания памяти, отсутствие операции scatter (только gather), обязательное использование графического API.

Основные преимущества CUDA по сравнению с предыдущими методами GPGPU вытекают из того, что эта архитектура спроектирована для эффективного использования неграфических вычислений на GPU и использует язык программирования C, не требуя переноса алгоритмов в удобный для концепции графического конвейера вид. CUDA предлагает новый путь вычислений на GPU, не использующий графические API, предлагающий произвольный доступ к памяти (scatter или gather). Такая архитектура лишена недостатков GPGPU и использует все исполнительные блоки, а также расширяет возможности за счёт целочисленной математики и операций битового сдвига.

CUDA открывает некоторые аппаратные возможности, недоступные из графических API, такие как разделяемая память. Это память небольшого объёма (16 килобайт на мультипроцессор), к которой имеют доступ блоки потоков. Она позволяет кэшировать наиболее часто используемые данные и может обеспечить более высокую скорость, по сравнению с использованием текстурных выборок для этой задачи. Что, в свою очередь, снижает чувствительность к пропускной способности параллельных алгоритмов во многих приложениях. Например, это полезно для линейной алгебры, быстрого преобразования Фурье и фильтров обработки изображений.

Удобнее в CUDA и доступ к памяти. Программный код в графических API выводит данные в виде 32-х значений с плавающей точкой одинарной точности (RGBA значения одновременно в восемь render target) в заранее предопределённые области, а CUDA поддерживает scatter запись — неограниченное число записей по любому адресу. Такие преимущества делают возможным выполнение на GPU некоторых алгоритмов, которые невозможно эффективно реализовать при помощи методов GPGPU, основанных на графических API.

Также, графические API в обязательном порядке хранят данные в текстурах, что требует предварительной упаковки больших массивов в текстуры, что усложняет алгоритм и заставляет использовать специальную адресацию. А CUDA позволяет читать данные по любому адресу. Ещё одним преимуществом CUDA является оптимизированный обмен данными между CPU и GPU. А для разработчиков, желающих получить доступ к низкому уровню (например, при написании другого языка программирования), CUDA предлагает возможность низкоуровневого программирования на ассемблере.

Недостатки CUDA

Один из немногочисленных недостатков CUDA — слабая переносимость. Эта архитектура работает только на видеочипах этой компании, да ещё и не на всех, а начиная с серии GeForce 8 и 9 и соответствующих Quadro, ION и Tesla. NVIDIA приводит цифру в 90 миллионов CUDA-совместимых видеочипов.

Альтернативы CUDA

• OpenCL

Фреймворк для написания компьютерных программ, связанных с параллельными вычислениями на различных графических и центральных процессорах. В фреймворк OpenCL входят язык программирования, который базируется на стандарте C99, и интерфейс программирования приложений (API). OpenCL обеспечивает параллелизм на уровне инструкций и на уровне данных и является реализацией техники GPGPU. OpenCL является полностью открытым стандартом, его использование не облагается лицензионными отчислениями.

Цель OpenCL состоит в том, чтобы дополнить OpenGL и OpenAL, которые являются открытыми отраслевыми стандартами для трёхмерной компьютерной графики и звука, пользуясь возможностями GPU. OpenCL разрабатывается и поддерживается некоммерческим консорциумом Khronos Group, в который входят много крупных компаний, включая Apple, AMD, Intel, nVidia, Sun Microsystems, Sony Computer Entertainment и другие.

• CAL/IL(Compute Abstraction Layer/Intermediate Language)

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

Областями применения ATI Stream являются приложения, требовательные к вычислительному ресурсу, такие, как финансовый анализ или обработка сейсмических данных. Использование потокового процессора позволило увеличить скорость некоторых финансовых расчётов в 55 раз по сравнению с решением той же задачи силами только центрального процессора.

Технологию ATI Stream в NVIDIA не считают очень сильным конкурентом. CUDA и Stream — это две разные технологии, которые стоят на различных уровнях развития. Программирование для продуктов ATI намного сложнее — их язык скорее напоминает ассемблер. CUDA C, в свою очередь, гораздо более высокоуровневый язык. Писать на нём удобнее и проще. Для крупных компаний-разработчиков это очень важно. Если говорить о производительности, то можно заметить, что её пиковое значение в продуктах ATI выше, чем в решениях NVIDIA. Но опять всё сводится к тому, как эту мощность получить.

• DirectX11 (DirectCompute)

Интерфейс программирования приложений, который входит в состав DirectX — набора API от Microsoft, который предназначен для работы на IBM PC-совместимых компьютерах под управлением операционных систем семейства Microsoft Windows. DirectCompute предназначен для выполнения вычислений общего назначения на графических процессорах, являясь реализацией концепции GPGPU. Изначально DirectCompute был опубликован в составе DirectX 11, однако позже стал доступен и для DirectX 10 и DirectX 10.1.

NVDIA CUDA в российской научной среде.

По состоянию на декабрь 2009 г., программная модель CUDA преподается в 269 университетах мира. В России обучающие курсы по CUDA читаются в Московском, Санкт-Петербургском, Казанском, Новосибирском и Пермском государственных университетах, Международном университете природы общества и человека «Дубна», Объединённом институте ядерных исследований, Московском институте электронной техники, Ивановском государственном энергетическом университете, БГТУ им. В. Г. Шухова, МГТУ им. Баумана, РХТУ им. Менделеева, Российском научном центре «Курчатовский институт», Межрегиональном суперкомпьютерном центре РАН, Таганрогском технологическом институте (ТТИ ЮФУ).

технология NVIDIA CUDA — «Хакер»

Содержание статьи

Согласно Дарвинской теории эволюции, первая человекообразная обезьяна (если
быть точным – homo antecessor, человек-предшественник) превратилась впоследствии
в нас. Многотонные вычислительные центры с тысячью и больше радиоламп,
занимающие целые комнаты, сменились полукилограммовыми ноутами, которые, кстати,
не уступят в производительности первым. Допотопные печатные машинки превратились
в печатающие что угодно и на чем угодно (даже на теле человека)
многофункциональные устройства. Процессорные гиганты вдруг вздумали замуровать
графическое ядро в «камень». А видеокарты стали не только показывать картинку с
приемлемым FPS и качеством графики, но и производить всевозможные вычисления. Да
еще как производить! О технологии многопоточных вычислений средствами GPU,
NVIDIA CUDA
и пойдет речь.

 

Почему GPU?

Интересно, почему всю вычислительную мощь решили переложить на графический
адаптер? Как видно, процессоры еще в моде, да и вряд ли уступят свое теплое
местечко. Но у GPU есть пара козырей в рукаве вместе с джокером, да и рукавов
хватает. Современный центральный процессор заточен под получение максимальной
производительности при обработке целочисленных данных и данных с плавающей
запятой, особо не заботясь при этом о параллельной обработке информации. В то же
время архитектура видеокарты позволяет быстро и без проблем «распараллелить»
обработку данных. С одной стороны, идет обсчет полигонов (за счет 3D-конвейера),
с другой – пиксельная обработка текстур. Видно, что происходит «слаженная
разбивка» нагрузки в ядре карты. Кроме того, работа памяти и видеопроцессора
оптимальнее, чем связка «ОЗУ-кэш-процессор». В тот момент, когда единица данных
в видеокарте начинает обрабатываться одним потоковым процессором GPU, другая
единица параллельно загружается в другой, и, в принципе, легко можно достичь
загруженности графического процессора, сравнимой с пропускной способностью шины,
однако для этого загрузка конвейеров должна осуществляться единообразно, без
всяких условных переходов и ветвлений. Центральный же процессор в силу своей
универсальности требует для своих процессорных нужд кэш, заполненный
информацией.

Ученые мужи задумались насчет работы GPU в параллельных вычислениях и
математике и вывели теорию, что многие научные расчеты во многом схожи с
обработкой 3D-графики. Многие эксперты считают, что основополагающим фактором в
развитии GPGPU (General Purpose computation on GPU – универсальные
расчеты средствами видеокарты
) стало появление в 2003 году проекта Brook GPU.

Создателям проекта из Стэндфордского университета предстояло решить непростую
проблему: аппаратно и программно заставить графический адаптер производить
разноплановые вычисления. И у них это получилось. Используя универсальный язык C,
американские ученые заставили работать GPU как процессор, с поправкой на
параллельную обработку. После Brook появился целый ряд проектов по VGA-расчетам,
таких как библиотека Accelerator, библиотека Brahma, система
метапрограммирования GPU++ и другие.

 

CUDA!

Предчувствие перспективности разработки заставило AMD и NVIDIA
вцепиться в Brook GPU, как питбуль. Если опустить маркетинговую политику, то,
реализовав все правильно, можно закрепиться не только в графическом секторе
рынка, но и в вычислительном (посмотри на специальные вычислительные карты и
серверы Tesla с сотнями мультипроцессоров), потеснив привычные всем CPU.

Естественно, «повелители FPS» разошлись у камня преткновения каждый по своей
тропе, но основной принцип остался неизменным – производить вычисления
средствами GPU. И сейчас мы подробнее рассмотрим технологию «зеленых» – CUDA
(Compute Unified Device Architecture).

Работа нашей «героини» заключается в обеспечении API, причем сразу двух.
Первый – высокоуровневый, CUDA Runtime, представляет собой функции, которые
разбиваются на более простые уровни и передаются нижнему API – CUDA Driver. Так
что фраза «высокоуровневый» применима к процессу с натяжкой. Вся соль находится
именно в драйвере, и добыть ее помогут библиотеки, любезно созданные
разработчиками NVIDIA: CUBLAS (средства для математических расчетов) и
FFT (расчет посредством алгоритма Фурье). Ну что ж, перейдем к практической
части материала.

 

Терминология CUDA

NVIDIA оперирует весьма своеобразными определениями для CUDA API. Они
отличаются от определений, применяемых для работы с центральным процессором.

Поток (thread) – набор данных, который необходимо обработать (не
требует больших ресурсов при обработке).

Варп (warp) – группа из 32 потоков. Данные обрабатываются только
варпами, следовательно варп – это минимальный объем данных.

Блок (block) – совокупность потоков (от 64 до 512) или совокупность
варпов (от 2 до 16).

Сетка (grid) – это совокупность блоков. Такое разделение данных
применяется исключительно для повышения производительности. Так, если число
мультипроцессоров велико, то блоки будут выполняться параллельно. Если же с
картой не повезло (разработчики рекомендуют для сложных расчетов использовать
адаптер не ниже уровня GeForce 8800 GTS 320 Мб), то блоки данных обработаются
последовательно.

Также NVIDIA вводит такие понятия, как ядро (kernel), хост (host)
и девайс (device).

 

Работаем!

Для полноценной работы с CUDA нужно:

1. Знать строение шейдерных ядер GPU, так как суть программирования
заключается в равномерном распределении нагрузки между ними.
2. Уметь программировать в среде C, с учетом некоторых аспектов.

Разработчики NVIDIA раскрыли «внутренности» видеокарты несколько
иначе, чем мы привыкли видеть. Так что волей-неволей придется изучать все
тонкости архитектуры. Разберем строение «камня» G80 легендарной GeForce 8800
GTX
.

Шейдерное ядро состоит из восьми TPC (Texture Processor Cluster) – кластеров
текстурных процессоров (так, у GeForce GTX 280 – 15 ядер, у 8800 GTS
их шесть, у 8600 – четыре и т.д.). Те, в свою очередь, состоят из двух
потоковых мультипроцессоров (streaming multiprocessor – далее SM). SM (их всего
16) состоит из front end (решает задачи чтения и декодирования инструкций) и
back end (конечный вывод инструкций) конвейеров, а также восьми scalar SP (shader
processor) и двумя SFU (суперфункциональные блоки). За каждый такт (единицу
времени) front end выбирает варп и обрабатывает его. Чтобы все потоки варпа
(напомню, их 32 штуки) обработались, требуется 32/8 = 4 такта в конце конвейера.


Каждый мультипроцессор обладает так называемой общей памятью (shared memory).
Ее размер составляет 16 килобайт и предоставляет программисту полную свободу
действий. Распределяй как хочешь :). Shared memory обеспечивает связь потоков в
одном блоке и не предназначена для работы с пиксельными шейдерами.

Также SM могут обращаться к GDDR. Для этого им «пришили» по 8 килобайт
кэш-памяти, хранящих все самое главное для работы (например, вычислительные
константы).

Мультипроцессор имеет 8192 регистра. Число активных блоков не может быть
больше восьми, а число варпов – не больше 768/32 = 24. Из этого видно, что G80
может обработать максимум 32*16*24 = 12288 потоков за единицу времени. Нельзя не
учитывать эти цифры при оптимизации программы в дальнейшем (на одной чашу весов
– размер блока, на другой – количество потоков). Баланс параметров может сыграть
важную роль в дальнейшем, поэтому NVIDIA рекомендует использовать блоки
со 128 или 256 потоками. Блок из 512 потоков неэффективен, так как обладает
повышенными задержками. Учитывая все тонкости строения GPU видеокарты плюс
неплохие навыки в программировании, можно создать весьма производительное
средство для параллельных вычислений. Кстати, о программировании…

 

Программирование

Для «творчества» вместе с CUDA требуется видеокарта GeForce не ниже
восьмой серии
. С

официального сайта нужно скачать три программных пакета: драйвер с
поддержкой CUDA (для каждой ОС – свой), непосредственно пакет CUDA SDK (вторая
бета-версия) и дополнительные библиотеки (CUDA toolkit). Технология поддерживает
операционные системы Windows (XP и Vista), Linux и Mac OS X. Для изучения я
выбрал Vista Ultimate Edition x64 (забегая вперед, скажу, что система вела себя
просто превосходно). В момент написания этих строк актуальным для работы был
драйвер ForceWare 177.35. В качестве набора инструментов использовался
программный пакет Borland C++ 6 Builder (хотя подойдет любая среда, работающая с
языком C).

Человеку, знающему язык, будет легко освоиться в новой среде. Требуется лишь
запомнить основные параметры. Ключевое слово _global_ (ставится перед функцией)
показывает, что функция относится к kernel (ядру). Ее будет вызывать центральный
процессор, а вся работа произойдет на GPU. Вызов _global_ требует более
конкретных деталей, а именно размер сетки, размер блока и какое ядро будет
применено. Например, строчка _global_ void saxpy_parallel<<<X,Y>>>, где X –
размер сетки, а Y – размер блока, задает эти параметры.

Символ _device_ означает, что функцию вызовет графическое ядро, оно же
выполнит все инструкции. Эта функция располагается в памяти мультипроцессора,
следовательно, получить ее адрес невозможно. Префикс _host_ означает, что вызов
и обработка пройдут только при участии CPU. Надо учитывать, что _global_ и
_device_ не могут вызывать друг друга и не могут вызывать самих себя.

Также язык для CUDA имеет ряд функций для работы с видеопамятью: cudafree
(освобождение памяти между GDDR и RAM), cudamemcpy и cudamemcpy2D (копирование
памяти между GDDR и RAM) и cudamalloc (выделение памяти).

Все программные коды проходят компиляцию со стороны CUDA API. Сначала берется
код, предназначенный исключительно для центрального процессора, и подвергается
стандартной компиляции, а другой код, предназначенный для графического адаптера,
переписывается в промежуточный язык PTX (сильно напоминает ассемблер) для
выявления возможных ошибок. После всех этих «плясок» происходит окончательный
перевод (трансляция) команд в понятный для GPU/CPU язык.

 

Набор для изучения

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

Специально для новичков разработан CUDA SDK Browser. Любой желающий может
ощутить силу параллельных вычислений на своей шкуре (лучшая проверка на
стабильность – работа примеров без артефактов и вылетов). Приложение имеет
большой ряд показательных мини-программок (61 «тест»). К каждому опыту имеется
подробная документация программного кода плюс PDF-файлы. Сразу видно, что люди,
присутствующие со своими творениями в браузере, занимаются серьезной работой.
Тут же можно сравнить скорости работы процессора и видеокарты при обработке
данных. Например, сканирование многомерных массивов видеокартой GeForce 8800
GT
512 Мб с блоком с 256 потоками производит за 0.17109 миллисекунды.
Технология не распознает SLI-тандемы, так что если у тебя дуэт или трио,
отключай функцию «спаривания» перед работой, иначе CUDA увидит только один
девайс. Двуядерный AMD Athlon 64 X2 (частота ядра 3000 МГц) тот же опыт
проходит за 2.761528 миллисекунды. Получается, что G92 более чем в 16 раз
быстрее «камня» AMD! Как видишь, далеко не экстремальная система в
тандеме с нелюбимой в массах операционной системой показывает неплохие
результаты.

Помимо браузера существует ряд полезных обществу программ. Adobe
адаптировала свои продукты к новой технологии. Теперь Photoshop CS4 в полной
мере использует ресурсы графических адаптеров (необходимо скачать специальный
плагин). Такими программами, как Badaboom media converter и RapiHD можно
произвести декодирование видео в формат MPEG-2. Для обработки звука неплохо
подойдет бесплатная утилита Accelero. Количество софта, заточенного под CUDA API,
несомненно, будет расти.

 

А в это время…

А пока ты читаешь сей материал, трудяги из процессорных концернов
разрабатывают свои технологии по внедрению GPU в CPU. Со стороны AMD все
понятно: у них есть большущий опыт, приобретенный вместе с ATI.

Творение «микродевайсеров», Fusion, будет состоять из нескольких ядер под
кодовым названием Bulldozer и видеочипа RV710 (Kong). Их взаимосвязь будет
осуществляться за счет улучшенной шины HyperTransport. В зависимости от
количества ядер и их частотных характеристик AMD планирует создать целую ценовую
иерархию «камней». Также планируется производить процессоры как для ноутбуков (Falcon),
так и для мультимедийных гаджетов (Bobcat). Причем именно применение технологии
в портативных устройствах будет первоначальной задачей для канадцев. С развитием
параллельных вычислений применение таких «камней» должно быть весьма популярно.

Intel немножко отстает по времени со своей Larrabee. Продукты AMD,
если ничего не случится, появятся на прилавках магазинов в конце 2009 – начале
2010 года. А решение противника выйдет на свет божий только почти через два
года.

Larrabee будет насчитывать большое количество (читай – сотни) ядер. Вначале
же выйдут продукты, рассчитанные на 8 – 64 ядера. Они очень сходны с Pentium, но
довольно сильно переработаны. Каждое ядро имеет 256 килобайт кэша второго уровня
(со временем его размер увеличится). Взаимосвязь будет осуществляться за счет
1024-битной двунаправленной кольцевой шины. Интел говорит, что их «дитя» будет
отлично работать с DirectX и Open GL API (для «яблочников»), поэтому никаких
программных вмешательств не потребуется.

А к чему я все это тебе поведал? Очевидно, что Larrabee и Fusion не вытеснят
обычные, стационарные процессоры с рынка, так же, как не вытеснят с рынка
видеокарты. Для геймеров и экстремалов пределом мечтаний по-прежнему останется
многоядерный CPU и тандем из нескольких топовых VGA. Но то, что даже
процессорные компании переходят на параллельные вычисления по принципам,
аналогичным GPGPU, говорит уже о многом. В частности о том, что такая
технология, как CUDA, имеет право на существование и, по всей видимости, будет
весьма популярна.

 

Небольшое резюме

Параллельные вычисления средствами видеокарты – всего лишь хороший инструмент
в руках трудолюбивого программиста. Вряд ли процессорам во главе с законом Мура
придет конец. Компании NVIDIA предстоит пройти еще длинный путь по
продвижению в массы своего API (то же можно сказать и о детище ATI/AMD).
Какой он будет, покажет будущее. Так что CUDA will be back :).

P.S. Начинающим программистам и заинтересовавшимся людям рекомендую посетить
следующие «виртуальные заведения»:

официальный сайт NVIDIA и сайт
GPGPU.com. Вся
предоставленная информация – на английском языке, но, спасибо хотя бы, что не на
китайском. Так что дерзай! Надеюсь, что автор хоть немного помог тебе в
захватывающих начинаниях познания CUDA!

Параллельные вычисления CUDA | Что такое CUDA?  | NVIDIA

Что такое CUDA?

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

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

Параллельные вычисления с CUDA

Направление вычислений эволюционирует от «централизованной обработки данных» на центральном процессоре до «совместной обработки» на CPU и GPU. Для реализации новой вычислительной парадигмы компания NVIDIA изобрела архитектуру параллельных вычислений CUDA, на данный момент представленную в графических процессорах GeForce, ION, Quadro и Tesla и обеспечивающую необходимую базу разработчикам ПО.

Говоря о потребительском рынке, стоит отметить, что почти все основные приложения для работы с видео уже оборудованы, либо будут оснащены поддержкой CUDA-ускорения, включая продукты от Elemental Technologies, MotionDSP и LoiLo.

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

На финансовом рынке компании Numerix и CompatibL анонсировали поддержку CUDA в новом приложении анализа риска контрагентов и достигли ускорения работы в 18 раз. Numerix используется почти 400 финансовыми институтами.

Показателем роста применения CUDA является также рост использования графических процессоров Tesla в GPU вычислениях. На данный момент более 700 GPU кластеров установлены по всему миру в компаниях из списка Fortune 500, таких как Schlumberger и Chevron в энергетическом секторе, а также BNP Paribas в секторе банковских услуг.

Благодаря недавно выпущенным системам Microsoft Windows 7 и Apple Snow Leopard, вычисления на GPU займут свои позиции в секторе массовых решений. В этих новых операционных системах GPU предстанет не только графическим процессором, но также и универсальным процессором для параллельных вычислений, работающим с любым приложением.

 

ПЛАТФОРМА ПАРАЛЛЕЛЬНЫХ
ВЫЧИСЛЕНИЙ CUDA

Платформа параллельных вычислений CUDA® обеспечивает набор расширений для языков C и С++, позволяющих выражать как параллелизм данных, так и параллелизм задач на уровне мелких и крупных структурных единиц. Программист может выбрать средства разработки: языки высокого уровня, такие как C, C++, Fortran или же открытые стандарты, такие как директивы OpenACC. Платформа параллельных вычислений CUDA используется на сегодняшний день в тысячах GPU-ускоренных приложений и тысячах опубликованных научных статьях.

Полный список средств разработки и экосистема решений CUDA доступен разработчикам. Посетите портал CUDA Zone, чтобы узнать больше о разработках с CUDA.

Чтобы получить более подробную информацию о том, как начать работу с параллельными вычислениями или последними версиями CUDA, которые можно скачать, посетите CUDA Developer Zone.

Nvidia для профессиональных 3D приложений / Хабр

Пол года назад я искал себе видеокарту, на которой я смог бы заниматься 3d моделированием, и рендерингом на GPU. В связи с появлением на рынке большого числе рендеров на CUDA мне не терпелось приобрести видеокарту с поддержкой CUDA, а именно Nvidia.

Как некоторые уже знают, Nvidia выставляет на продажу видеокарты нескольких моделей Geforce, Quadro, Tesla, ION, Tegra. В этом коротком сравнении упустим ION и Tegra, т.к. предназначены для мобильных устройств и слабые по производительности.

Нам нужна мощь!

Nvidia power…

ЧТО ГОВОРИТ ПРОИЗВОДИТЕЛЬ

Geforce — видеокарты, ориентированные на потребительский рынок и на геймеров, в частности.
Если вам интересны игры — Geforce лучший вариант для этого.
Видеокарты лучше всего показывают себя в играх, имеют высокие частоты, не дороги, наиболее прожорливы при нагрузке.
В качестве общих вычислительных задач (Cuda, OpenCL) жефорсы упоминаются достаточно редко.
Имеет PhysX, именуемый крутейшим аппаратным решением по ускорению физики.

Досуг обладателя Geforce (Battlefield 3).

Quadro — видеокарты для пользователей профессиональных приложений 2D и 3D.
Если вы занимаетесь с пакетами 3д моделирования, CAD, сложной векторной графикой — то Вам подойдет Квадра.
Сложные модели на экране рендерятся быстрее, меньше «рывков».
Квадры, сравнимые по производительности с Жефорсами в играх будут в несколько раз дороже.
На картинках сайта nvidia можно увидеть уже больше Куды, чем на жефорсах.
То бишь, видеокарты профессиональные, даже вычислениям общего назначения быть!

Работа обладателя Quadro (Autodesk Alias Studio).

Tesla — вычислительные системы для научных и технических вычислений общего назначения.
Тут во всю рекламируется CUDA, как крутейший инструмент вычислений общего назначения. Всюду плакаты с аэродинамическими вычислениями, воксельным сканнированием человеческого тела, графические модели нагрузок, и нереально быстрый рендеринг на iRay.
На Tesla отсутствуют видеовыходы, так же как и нету аппаратной растеризации: не работает ни OpenGL, ни DirectX.

Работа обладателя Quadro + Tesla (Quadro — 3d графика, Tesla — молекулярная динамика).
***

НЕБОЛЬШОЕ ИССЛЕДОВАНИЕ

Когда начал разбираться в их различии, был удивлен тем фактом, что видеокарты GeForce, Quadro, Tesla используют одинаковые графические чипы.
Рассмотрим видеокарты с одинаковым, уже не самым новым, чипом GF100 имеет (512 CUDA ядер):

Одночиповые:
GeForce: GTX465, GTX470, GTX480
Quadro: 4000, 5000, 6000
Tesla: C2050, C2070, M2050, M2090

Рассмотрим по одному представителю с каждого семейства поподробнее.

GeForce GTX480
Некогда топовая игровая видеокарта.
Стоимость: на момент выпуска около 500$ (сейчас бу и за 300 видел), на данный момент не выпускается (на смену пришли GTX580 512 ядер, и GTX680 1536 ядер)
Количество ядер CUDA — 480.
Объем памяти 1.5 Gb.
Производительность float:
Одинарная точность: 1344,9 Гфлопс.
Двойная точность: 168,1 Гфлопс.
(Существует более урезанная версия GTX470, сейчас можно найти по цене меньше 250$, 448 ядер CUDA, 1.25 Gb)

Quadro 5000
Одна из лучших видеокарт для профессиональных приложений.
Стоимость: по данными Amazon около 1700$. Выпускается.
Количество ядер CUDA — 352.
Объем памяти 2.5 Gb.
Производительность float:
Одинарная точность: 718.08 Гфлопс.
Двойная точность: 359.04 Гфлопс.
(Стоит обратить внимание на Quadro 6000, 448 ядер, 515 Гфлопс двойной точности, 4000$)

Tesla C2075
Стоимость: по данными Amazon около 2200$. Тоже выпускается.
Количество ядер CUDA — 352.
Объем памяти 6 Gb.
Производительность float:
Одинарная точность: 1030 Гфлопс.
Двойная точность: 515 Гфлопс.

Что мы видим?
Заметим, что по float производительности выигрывает GeForce GTX480. Причиной тому самое большое количество рабочих ядер и самые высокие частоты среди аналогов. Это нужно для преобразования координат объектов в играх, расчета теней, расчета пиксельных и вершинных шейдеров. В конечном итоге — чтобы игра «летала».
Но, чтобы для научных исследований, моделирования динамики жидкостей и газов покупали Теслы и Квадры — в двойной точности производительность сильно урезана, и уступает аналогам.
Соотношение производительности:
GeForce: double/float — 1/8
Quadro и Tesla: double/float — 1/2
Кроме того, самым малым объемом памяти обладает тот же GTX480. Для игр достаточно, но если хотите провести расчет аэродинамики — покупайте что-то посерьезнее.
***

ЧЕГО НУЖНО?
(Людям, занимающимся 3d графикой)
1. Поменьше тормозов во время редактирования 3d модели.
2. Некоторых интересует возможность быстрого рендеринга на GPU.

3D производительность GeForce vs Quadro
Из информации изложенной выше может показаться, что профессиональными приложениями на GeForce не пользуются из-за того, что имеет малый объем памяти, но это не так.
Ролик покажет Вам, почему «плохая Квадра» лучше «хорошего Жефорса» в профессиональных приложениях.

Quadro 600: 1Gb, 96 ядер CUDA, 150у.е.
GTX560Ti: 1Gb, 384 ядра CUDA, 250у.е. (Цены взяты из Amazon)
Выходит, Nvidia тщательно следит, чтобы 3d производительность в профессиональных приложениях Geforce уступали Quadro при соизмеримых ценах.

Как могут быть реализованны тормоза во вьюпорте?
Дело в том, что количество полигонов в играх существенно меньше, чем у профессионалов в профессиональных приложениях. В играх редко доходит до одного млн полигонов, а в профессиональных — десятки миллионов.
Тут можно сделать так: урезать производительность при преобразовании координат вершин. Если вершин больше определенного количества — то поставить задержку перед отрисовкой последующих вершин.
Либо установить задержку при отрисовке треугольников. Если больше определенного количества — то поставить задержку перед отрисовкой каждого последующего треугольника.

Маленькое лирическое отступление, или Nitrous в 3ds Max.
Меня ввел в заблуждение Nitrous движок в 3ds Max, который стоит рядом с OpenGL и DirectX. Это как? В Autodesk есть что-то, что вызывает Нитрос, аппаратная поддержка которого, оказывается, есть на каждой уважающей себя видеокарте, но знает о ней только 3Д Макс?

Ну, можно составить небольшую логическую цепочку. Autodesk является богатой корпорацией, и в хороших партнерских отношениях с производителями ATI и Nvidia. Повышать нужно продажи своего детища же! А как бы заинтересовать потребителей? Производительностью же!

Итак, GeForce GTX580 (да, купил я именно её), 7.3 млн треугольников, 2560 Torus Knot-ов, без теней и без Adaptive degradation.

Nitrous — 42 fps; Direct3d — 13 fps; OpenGL — 2 fps.

OpenGL — тормозит. DirectX — намного лучше. А Nitrous — круче всех, оказывается! Что же нитрос тогда?
Два варианта:
1. Это OpenGL/DX в котором убраны дополнительные тормоза во вьюпорте, созданные умышленно в OpenGL/DX режимах.
2. Это OpenGL/DX, который умеет обращаться к аппаратным функциям игровых видеокарт, и проявлять в них квадровые способности!
И я склонен именно к 2 варианту, т.к. в Blender и в Rhino3D это же самое дико тормозит (2fps).
Выходит, пользователям 3ds Max и других продуктов Autodesk вовсе не так принципиально переходить на Квадру? К сожалению, у меня нету Квадры, чтобы проверить производительность Нитроса по сравнению с OpenGL.

Если же у Вас GeForce или Radeon, нет желания раскошелиться за Квадру, вы Не пользуетесь продуктами от Autodesk, и у Вас очень сложные модели, то:
1. Сложные объекты можно скрыть. Объекты можно показывать во вьюпорте с меньшей плотностью сетки.
2. Вместо объектов можно показывать «контейнеры», их содержащие.
То есть следить за количеством полигонов в вьюпорте, если у вас действительно «тяжелые» модели.
Зато в игры нормально поиграете.

GPU рендеринг
Поскольку коммерческие производители не рассказывают о том, какие типы данных (float или double) они используют — приходится только догадываться.
iRay везде показывают с Quadro и Tesla, может создаться впечатление, что iRay вообще не работает с GeForce.

Картинка с оф. сайта nvidia.
Но нет, работает, и еще как. Казалось бы, что может быть лучше для не-графических вычислений, чем видеокарта Tesla, специально заточенная под не-графические вычисления?

(Взято с поста: «V-Ray и Iray. Сравнение и обзор»)
GeForce GTX580 является самой быстрой одночиповой видеокартой в iRay рендеринге на GPU. И значительно дешевле «серьезных» аналогов такой же производительности. А если вам не хватает 1.5Гб, существуют GTX580 с 3Гб памяти.
При использовании V-RayRT, Octane, Cycles, Arion также лучше всех себя показывают видеокарты GTX570 и 580. Выходит, все эти рендеры не используют расчет двойной точности для рендеринга?
В любом случае, если вы хотите рендерить на GPU — на GeForce вы сможете хорошо сэкономить.

GTX680
Но корпорация заметила, что для вычислений все чаще начали брать GTX580, производительность double в GTX680 уступает float не в 8 раз, а в 24, что не могло не отразиться на некоторых тестах.
Известно, что в Octane Render производительность возросла на 64%.

ATI Radeon vs FirePro
Аналогично Nvidia, корпорация AMD тоже разделила модели видеокарт. Radeon (аналог GeForce), FirePro (аналог Quadro), FireStream (аналог Tesla). Производительность вычислений с плавающей точкой двойной точности уступает одинарной в 4 раза, во всех моделях ATI. Интересно, что производительность топовых игровых видеокарт ATI (Radeon HD 7970, float — 3.79 Тфлопс, double — 947 Гфлопс) превосходит в двойной точности даже одночиповые Tesla. Надо заметить, что производительность в флопсах, не всегда является показателем производительности железа в конкретных случаях.
Причина, по которой ATI сильно уступает Nvidia на рынке GPGPU мне пока не ясна. Может, игрового сегмента вполне хватает.


Выбор?
Я выбрал GTX580 3Gb. Видеокарта дает возможность насладиться новыми играми и производительностью GPU рендеров. А тормоза во вьюпорте пакетов 3d моделирования для меня не сильно критичны.

Автор статьи с уважением относится к этому производителю, и сам является счастливым обладателем карточки Nvidia.
Подобные маркетинговые ходы являются неотъемлемой частью рыночной экономики, к ним прибегают все производители без исключения.
Но все же, не будем же вестись на маркетинговые уловки корпораций, а вдумчиво покупать то, что действительно полезно для нас!

UPD: спасибо ForhaxeD, Funcraft, podwhitehawk за найденные орфографические и грамматические ошибки.

Не играми едиными. Ускорение программ с помощью видеокарты | Видеокарты | Блог

Что такое видеокарта, знает каждый, ведь это главный элемент ПК, отвечающий за игры. И чем он мощнее, тем лучше. Однако в словосочетание «графический адаптер» вложено намного больше смысла. И кроме умения отапливать помещение и жрать электроэнергию «майнить» видеокарты способны ускорять работу некоторых полезных программ. В их число входят приложения для видеомонтажа, графического дизайна, 3D-моделирования, VR-разработок.

Техническая сторона вопроса

Обычно основная часть нагрузки ложится на центральный процессор. Но есть задачи, с которыми GPU справится во много раз быстрее, и было бы глупо этим не воспользоваться. Логично, что чаще всего это касается программ для работы с графикой, видео и 3D-моделированием.

Во время GPU-ускорения задействуется исключительно память видеокарты. Для простой работы с FHD достаточно 2 ГБ. Однако, когда один кадр компонуется из нескольких (картинка в картинке) или используются эффекты, одновременно обрабатывающие несколько кадров (шумодавы и т. д.), расход возрастает. Для UHD/4K-видео необходимо уже минимум 4 ГБ видеопамяти.

Конечный прирост производительности зависит от правильности настройки и общих параметров системы. В случае, например, рендеринга иногда разница с CPU составляет разы, а это сэкономленное время, которое, как известно, — деньги. Гарантировать точный результат ускорения не возьмется ни один производитель, ссылаясь на индивидуальность каждой системы.

Любая видеокарта в той или иной степени способна проводить сложные вычисления и обрабатывать графику. Больше других акцентирует внимание на неигровых возможностях и технологиях своих GeForce компания nVidia.

  • Тензорные ядра — присутствуют в адаптерах серии RTX, повышают производительность и энергоэффективность. Поддержка ИИ ускоряет расчеты и работу с графикой.

  • CUDA — проприетарная технология nVidia, доступная для устройств GTX и RTX. Позволяет использовать графический процессор для вычислений общего назначения, улучшает работу с фото, видео и 3D.

  • NVENC — отдельный аппаратный блок, способный кодировать и декодировать видеопоток. Благодаря этому разгружаются центральный и графический процессоры для запуска игр и других ресурсоемких задач. В первую очередь это интересно стримерам, но многие программы видеомонтажа уже приспособили NVENC под себя.

  • NVIDIA STUDIO DRIVER — выходит для видеокарт серии 10хх и моложе. Оптимизирует работу адаптера под такие приложения, как Autodesk Maya, 3ds Max, Arnold 5, DaVinci Resolve и т. д.

Карты AMD тоже хорошо справляются с вычислениями и обработкой графики, но любит говорить об этом исключительно компания Apple. AMD использует открытые технологии OpenGL и Vulcan — альтернативу CUDA.

Программы, работающие с GPU-ускорением

О возможности ускорения программы с помощью видеокарты можно узнать на официальном сайте. Все ведущие производители софта дают четкие инструкции, какая видеокарта подойдет и как включить GPU-ускорение. А первое, что приходит на ум, когда речь идет о работе с графикой и видео, — решения студии Adobe.

  • Adobe Premiere Pro использует вычислительные ресурсы видеокарт, начиная с версии CS5. Текущие версии для Windows поддерживают все современные GPU (включая встроенную графику Intel).                                                                                                                                                                                                                                                                                  CS6 и выше имеют функцию стабилизации видео Warp Stabilizer, которая устраняет дрожание камеры. Плагин использует GPU-ускорение только при финальном рендеринге изображения. Также в CS6 появился рендер Ray-traced 3D, который обсчитывает на видеокарте 3D-слои, камеру и источники света в композиции.                                                                                                                                                                                                      Adobe Premiere CC научился работать одновременно с несколькими видеокартами, причем допускается использование разных серий и даже производителей (MultipleGPU). Выигрыш зависит от общей конфигурации ПК.                                                                                                                                                                                                                                    Интересные возможности дает использование GPU сторонними плагинами. Можно ускорять Premiere при помощи CUDA одной видеокарты, при этом его плагин будет ускоряться OpenGL другой видеокарты. Такие плагины, как Magic Bullet Looks, Elements3D и т. п. могут использовать ресурсы GPU независимо от настроек Adobe. Подробные требования приложения к видеокарте можно найти на официальном сайте.

  • Adobe After Effects предъявляет к видеокартам аналогичные с предыдущим клиентом требования.
  • Adobe Photoshop также активно использует видеокарты в процессе обработки изображений. Фоторедактор закрывает некоторые свои возможности, если видеокарта их не поддерживает. Яркими примерами таких функций являются «Деформация перспективы», «Умная резкость», «Размытие». Пользователю доступны три режима: базовый, обычный и расширенный. Наиболее интенсивно использует видеокарту последний. Если наблюдается снижение быстродействия, стоит переключиться на уровень ниже, воспользовавшись вкладкой Дополнительные параметры.

Кроме продукции компании Adobe нельзя не вспомнить такие программы, как 3ds Max, DaVinci Resolve  и Vegas Pro.

Данные о поддержке наиболее адаптированных приложений производители видеокарт публикуют на своих официальных сайтах:

eGPU — внешний графический процессор

Этот раздел касается в первую очередь техники компании Apple. Купертиновцы любят делать упор на творческие возможности своих устройств, однако пользователи макбуков и аймаков ограничены исходной комплектацией. На помощь приходит eGPU — внешняя видеокарта, с помощью которой, по заявлению производителя, можно увеличить скорость обработки графики на Mac в несколько раз.

По сути, это обычная видеокарта в специальном боксе с блоком питания и дополнительным охлаждением. Она подключается к макам посредством Thunderbolt 3. Уже много лет Apple использует видеокарты AMD, и весь софт Apple затачивается под новый API Metal. Графические решения nVidia ощутимого прироста производительности на Apple не дают, так как из-за патологической жадности компании не смогли договориться, и весь софт на маке заточен исключительно под AMD. В отместку nVidia недавно полностью отменила поддержку CUDA на MacOS.

А что могут «профи»?

Есть заблуждение, что для работы с графикой нужно купить максимальную видеокарту, а процессор любой сойдет. Это не так. Если процессор не будет успевать давать задания видеокарте, пользователь столкнется с простоем в ресурсоемких задачах. Есть и обратная зависимость: слабая видеокарта может сдерживать процессор в финальном рендеринге. Важен баланс. Если потребности пользователя все же переросли возможности обычных моделей, можно направить свой взгляд на дорогие и узкоспециализированные решения. Технически профессиональные и потребительские видеокарты отличаются несильно, все дело в ПО.

Несколько лет назад компания nVidia выпустила первый TITAN — запредельную по производительности и цене игровую видеокарту. Но вместо того, чтобы стать нишевым продуктом, она была буквально сметена с прилавков. Оказалось, что карта прекрасно справляется с расчетами, и многие компании с удовольствием покупали ее вместо дорогих про-аналогов. Разумеется, nVidia быстро смекнула, в чем дело, и в начале 2018 года прикрыла лавочку запретила использовать графические процессоры GeForce и Titan в составе дата-центров. По словам nVidia, нельзя гарантировать их безотказную работу в жарких условиях (и это не фигуральный оборот) в режиме 24/7.  В качестве альтернативы предлагается использовать, например, Tesla V100, который гораздо мощнее GeForce и стоит в десять раз больше создан специально для работы в условиях ЦоД.

nVidia имеет три линейки профессиональных видеокарт: Quadro, NVS и Tesla.

  • Quadro — служит для рендеринга видео, производства VR/AR, 3D-моделирования. Быстрые и дорогие. Чтобы оправдать стоимость, производитель оснащает их самыми современными и совершенными разработками, которые появятся только в следующих сериях GeForce. Для очень богатых дизайнеров и инженеров.
  • NVS — многопортовые карточки, созданные для подключения большого количества мониторов в одну панель. Например, с их помощью в Макдональдсе можно выбрать бигмак с помидорами или беконом, а в аэропорте найти свой рейс. По сути, это самая обычная «затычка», на которой распаяли много портов. Очень слабые по железу и очень дорогие по соотношению цена/производительность, но ценят их не за FPS в Батле.

  • Tesla ­— узкоспециализированная и сверхдорогая линейка для математических и физических расчетов. Для работы требуется CPU. Портов нет, поиграть нельзя, расходимся пацаны.

Компания AMD в качестве профессионального решения предлагает серию Radeon Pro.  Также у них есть вычислительные аналоги Tesla с космическим ценником под названием Instinct.

Список поддерживаемых продуктов|NVIDIA

GeForce2 Go 0x0112
GeForce2 Integrated GPU 0x01A0
GeForce2 MX 100/200 0x0111
GeForce2 MX/MX 400 0x0110
GeForce3 0x0200
GeForce3 Ti 200 0x0201
GeForce3 Ti 500 0x0202
GeForce4 410 Go 16M 0x017D
GeForce4 4200 Go 0x0286
GeForce4 420 Go 0x0175
GeForce4 420 Go 32M 0x0176
GeForce4 440 Go 0x0174
GeForce4 440 Go 64M 0x0179
GeForce4 460 Go 0x0177
GeForce4 MX 4000 0x0185
GeForce4 MX 420 0x0172
GeForce4 MX 420 with AGP8X 0x0183
GeForce4 MX 440 0x0171
GeForce4 MX 440-SE 0x0173
GeForce4 MX 440SE with AGP8X 0x0182
GeForce4 MX 440 with AGP8X 0x0181
GeForce4 MX 460 0x0170
GeForce4 MX Integrated GPU 0x01F0
GeForce4 Ti 4200 0x0253
GeForce4 Ti 4200 with AGP8X 0x0281
GeForce4 Ti 4400 0x0251
GeForce4 Ti 4600 0x0250
GeForce4 Ti 4800 0x0280
GeForce4 Ti 4800 SE 0x0282
GeForce 6100 0x0242
GeForce 6150 0x0240
GeForce 6150 LE 0x0241
GeForce 6200 0x00F3
GeForce 6200 0x014F
GeForce 6200 LE 0x0163
GeForce 6200 TurboCache™ 0x0161
GeForce 6500 0x0160
GeForce 6600 0x00F2
GeForce 6600 0x0141
GeForce 6600/GeForce 6600 GT 0x00F1
GeForce 6600 GT 0x0140
GeForce 6600 LE 0x00F4
GeForce 6600 LE 0x0142
GeForce 6600 VE 0x0143
GeForce 6610 XL 0x0145
GeForce 6700 XL 0x0147
GeForce 6800 0x0041
GeForce 6800 0x00C1
GeForce 6800 0x0211
GeForce 6800/GeForce 6800 Ultra 0x00F0
GeForce 6800 GS 0x0047
GeForce 6800 GS 0x00C0
GeForce 6800 GS 0x00F6
GeForce 6800 GT 0x0045
GeForce 6800 GT 0x0046
GeForce 6800 GT 0x0215
GeForce 6800 LE 0x00C2
GeForce 6800 LE 0x0212
GeForce 6800 Ultra 0x0040
GeForce 6800 Ultra 0x00F9
GeForce 6800 XE 0x0043
GeForce 6800 XT 0x0044
GeForce 6800 XT 0x0048
GeForce 6800 XT 0x00C3
GeForce 6800 XT 0x0218
GeForce 7300 GS 0x01DF
GeForce 7300 GT 0x0393
GeForce 7300 LE 0x01D1
GeForce 7300 SE 0x01D3
GeForce 7600 GS 0x02E1
GeForce 7600 GS 0x0392
GeForce 7600 GT 0x0391
GeForce 7800 GS 0x0093
GeForce 7800 GS 0x00F5
GeForce 7800 GT 0x0092
GeForce 7800 GTX 0x0090
GeForce 7800 GTX 0x0091
GeForce 7800 GTX 512 0x0090
GeForce 7900 GS 0x0292
GeForce 7900 GT 0x0291
GeForce 7900 GTX 0x0290
GeForce FX 5100 0x0327
GeForce FX 5200 0x0320
GeForce FX 5200 0x0322
GeForce FX 5200LE 0x0323
GeForce FX 5200 Ultra 0x0321
GeForce FX 5500 0x0326
GeForce FX 5600 0x0312
GeForce FX 5600 Ultra 0x0311
GeForce FX 5600XT 0x0314
GeForce FX 5700 0x0342
GeForce FX 5700LE 0x0343
GeForce FX 5700 Ultra 0x0341
GeForce FX 5700VE 0x0344
GeForce FX 5800 0x0302
GeForce FX 5800 Ultra 0x0301
GeForce FX 5900 0x0331
GeForce FX 5900 Ultra 0x0330
GeForce FX 5900XT 0x0332
GeForce FX 5900ZT 0x0334
GeForce FX 5950 Ultra 0x0333
GeForce FX Go5100 0x032D
GeForce FX Go5200 0x0324
GeForce FX Go5200 32M/64M 0x0328
GeForce FX Go5250 0x0325
GeForce FX Go53xx 0x032C
GeForce FX Go5600 0x031A
GeForce FX Go5650 0x031B
GeForce FX Go5700 0x0347
GeForce FX Go5700 0x0348
GeForce Go 6200 0x0164
GeForce Go 6200 0x0167
GeForce Go 6400 0x0166
GeForce Go 6400 0x0168
GeForce Go 6600 0x0144
GeForce Go 6600 0x0148
GeForce Go 6600 GT 0x0149
GeForce Go 6600 TE/6200 TE 0x0146
GeForce Go 6800 0x00C8
GeForce Go 6800 Ultra 0x00C9
GeForce Go 7300 0x01D7
GeForce Go 7400 0x01D8
GeForce Go 7600 0x0398
GeForce Go 7800 0x0098
GeForce Go 7800 GTX 0x0099
GeForce PCX 4300 0x00FF
GeForce PCX 5750 0x00FA
GeForce PCX 5900 0x00FB
Quadro2 MXR/EX/Go 0x0113
Quadro4 380 XGL 0x018B
Quadro4 500 GoGL 0x017C
Quadro4 550 XGL 0x0178
Quadro4 580 XGL 0x0188
Quadro4 700 GoGL 0x028C
Quadro4 700 XGL 0x025B
Quadro4 750 XGL 0x0259
Quadro4 780 XGL 0x0289
Quadro4 900 XGL 0x0258
Quadro4 980 XGL 0x0288
Quadro DCC 0x0203
Quadro FX 1000 0x0309
Quadro FX 1100 0x034E
Quadro FX 1300 0x00FE
Quadro FX 1400 0x00CE
Quadro FX 1500 0x029E
Quadro FX 1500M 0x029B
Quadro FX 2000 0x0308
Quadro FX 2500M 0x029A
Quadro FX 3000 0x0338
Quadro FX 330/GeForce PCX 5300 0x00FC
Quadro FX 3400 0x00F8
Quadro FX 3450/4000 SDI 0x00CD
Quadro FX 350M 0x01DC
Quadro FX 3500 0x029D
Quadro FX 4000 0x004E
Quadro FX 4400 0x00F8
Quadro FX 4500 0x009D
Quadro FX 4500 0x029F
Quadro FX 4500 X2 0x029F
Quadro FX 5500 0x029C
Quadro FX 350 0x01DE
Quadro FX 500/600 PCI 0x032B
Quadro FX 540 0x014E
Quadro FX 550 0x014C
Quadro FX 560 0x039E
Quadro FX 700 0x033F
Quadro FX Go1000 0x034C
Quadro FX Go1400 0x00CC
Quadro FX Go700 0x031C
Quadro NVS 0x017A
Quadro NVS 110M 0x01D7
Quadro NVS 110M 0x01DA
Quadro NVS 120M 0x01DB
Quadro NVS 280 PCI 0x032A
Quadro NVS 280 PCI-E/Quadro FX 330 0x00FD
Quadro NVS 285 0x0165
Quadro NVS 440 0x014A
Quadro NVS 50 PCI 0x018C
Quadro NVS with AGP8X 0x018A

Возвращаем поддержку CUDA на картах Nvidia ниже GTX-6XX

В верси драйверов выше 337.88 Nvidia сменила API аппаратного ускорения. Теперь это NVENC и на чипах выше GM20x эта технология называеся HEVC. NVIDIA изменила nvcuvenc.dll уже в драйвере GeForce 340.43 и выше. Поэтому ускорение на старых видеокартах с новыми драйверами во многих программах перестало быть доступным.

На видеокарах до линейки 6ХХ поддерживается множество всяких полезных штук типа PhysX и, конечно же, CUDA.

Когда нужно конвертировать видео, и нужно аппаратное ускорение и кодек от Nvidia — можно воспользоваться хаками. Читать тему про это можно тут.

Скачать патчи можно на сайте Bandicam или по ссылкам ниже.

Если в Bandican отсутсвует «H.264 (Nvidia® CUDA™)»  ипользуем следущие патчи…

Обратите только на битность ситемы (патчи разные)

1) If you use Windows 7/8/10 (64bit), download cuda_enc_windows7_8_64bit.zip and copy&paste the nvcuvenc.dll file to the designated folder. (C:\Windows\System32\nvcuvenc.dll and C:\Windows\SysWOW64\nvcuvenc.dll)
2) If you use Windows 7/8/10 (32bit), download cuda_enc_windows7_8_32bit.zip and copy&paste the nvcuvenc.dll file to the designated folder. (C:\Windows\System32\nvcuvenc.dll)

Можно скачать файлы с этого сайта:

cuda_enc_windows7_8_32bit.zip782.93 КБ

cuda_enc_windows7_8_64bit.zip1.68 МБ

Если у вас GTX 600 серия карт и выше, используте Nvidia NVENC h364 encoder.

PS. API NVIDIA NVENC позволяет разработчикам ПО получать доступ к высокопроизводительному кодировщику видео H.264 на NVIDIA GPU поколения Kepler и Maxwell NVENC обеспечивает высококачественную кодировку видео, которая быстрее и энергоэффективнее по сравнению с аналогичными кодировщиками на базе CPU.

Используя специальное аппаратное обеспечение для осуществления кодировки видео, ядра GPU с поддержкой CUDA и/или CPU свободны для выполнения других задач, требующих больших вычислительных ресурсов. NVENC на видеокартах GeForce может поддерживать не больше 2 одновременных потоков.

NVENC на GRID GPU и Quadro K4000 и выше могут поддерживать столько потоков, сколько позволяет предел скорости кодировщика NVENC и свободная память.

← Решение проблем печати на терминальном сервере Windows    Скрываем диск «Зарезервировано системой» в Windows 7 →

графических процессоров CUDA | NVIDIA Разработчик

Перейти к основному содержанию
  • Решения
    • Искусственный интеллект и наука о данных
      • Разговорный AI
      • Глубокое обучение
      • Вывод
      • Машинное обучение
      • Аналитика данных
      • Рекомендательные системы
      • Vision AI
    • Высокопроизводительные вычисления
      • Genomics
      • Высокопроизводительные сети
      • Научная визуализация
      • Симуляторы и моделирование
    • Интеллектуальные машины
      • Обзор
      • Встроенный и пограничный AI
      • Аппаратное обеспечение (Jetson)
      • Робототехника
      • Интеллектуальная видеоаналитика (IVA)
    • Графика и моделирование
      • Инструменты для исследования графики
      • Обработка видео
      • Трассировка лучей
      • AI для графики
      • VFX в реальном времени
      • Ускорение AR и VR
      • Физико-динамическое моделирование
      • Медицинская визуализация
      • Научная визуализация
      • Дисплей
    • Сеть
      • Обзор
      • Облако
      • Дата-центр
      • Финансовые услуги
      • HPC
      • СМИ и развлечения
      • Сетевая операционная система
      • Безопасность
      • Хранилище
      • Телеком
      • Интернет 2.0
    • Видео, трансляция и отображение
      • Отображение и вывод
      • Поддержка HMD
      • Оценка движения
      • Декодирование и кодирование видео
      • Видео- и аудиовещание (потоковое)
      • Сети видео и вещания
      • Vision AI
    • Автономные автомобили
      • Обзор
      • Оборудование AV (DRIVE AGX)
      • Эталонная архитектура
      • Программное обеспечение AV
      • Платформа моделирования центра обработки данных
    • Инструменты и управление
      • Инструменты разработчика
      • Инструменты управления
      • Android для мобильных устройств
  • Платформы
    • CUDA-X AI
      • TensorRT
      • NeMo
      • у.е.DNN
      • NCCL
      • кубов
      • cuSPARSE
      • SDK оптического потока
      • DALI
    • Клара
      • Клара Гардиан
      • Clara Imaging
      • Клара Парабрикс
    • HPC
      • Пакет SDK для HPC
      • Набор инструментов CUDA
      • OpenACC
      • IndeX
      • Библиотеки CUDA-X
      • Инструменты разработчика
      • SimNet
    • ПРИВОД
      • ПРИВОД AGX
      • ПРИВОД Hyperion
      • ПРИВОД Sim
      • ПРИВОД Созвездие
      • DGX
    • ISAAC
      • Наборы разработчика Jetson
      • Реактивный ранец
      • Робот-двигатель Isaac
      • Исаак Сим
      • Метрополис
      • DeepStream SDK
    • RTX
      • OptiX SDK
      • DirectX (DXR)
      • ВКРай
      • MDL SDK
      • PhysX
      • Flex
      • vМатериалы
      • RTXGI
      • DLSS
      • NVIDIA Broadcast Engine
    • Omniverse
      • Платформа Omniverse
      • Опыт Omniverse AEC
      • Исаак Сим
    • Метрополис
      • DeepStream SDK
      • Набор инструментов для обучения передачи
    • Антенна
      • Антенна SDK
    • Мерлин
      • Мерлин SDK
    • Джарвис
      • Джарвис SDK
    • CloudXR
      • SDK CloudXR
  • Документация
    • Библиотека
    • Трассировка лучей
    • Набор инструментов CUDA
    • Джетсон
    • GameWorks
    • ПРИВОД
    • NGC
    • Исаак
  • Загрузки
    • CUDA Toolkit
    • Инструменты разработчика
    • КЛАРА
    • ПРИВОД
    • Инструменты исследования графики
    • Gameworks
    • Исаак
    • Джарвис
    • Джетсон
    • Метрополис
  • Ресурсы
    • Свяжитесь с нами
    • Программа для разработчиков
    • Институт глубокого обучения
    • Педагоги
    • NGC
    • Записи событий
    • Открытый исходный код
    • AI Стартапы
  • Сообщество
    • Форумы
    • Блог
    • Новости
  • Поиск
  • Счет
  • RTX
  • ИГРЫ
  • ДИЗАЙН-РАБОТЫ
  • VRWORKS
  • HPC
  • МЕТРОПОЛИС
  • ПРИВОД
  • КЛАРА
  • ОТКРЫТЫЙ ИСТОЧНИК

ПЯТЬ ДНЕЙ.ЧЕТЫРЕ КОНТИНЕНТА. БЕСКОНЕЧНЫЕ ВОЗМОЖНОСТИ.

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

Пользователи обычно запрашивают любую из нескольких версий CUDA Toolkit в таким же образом они могут запросить любую из нескольких версий множества других системных библиотек или инструменты компилятора.

Обычным механизмом для включения этого является система модулей, в которой администратор или пользователь устанавливает «модульные» скрипты для каждой версии каждого пакета, а затем пользователь может выполнить команду типа ‘ module load cuda / 10.0 ’.

Часто загрузка различных версий модуля выполняется по сценарию с приложением. так что каждое приложение выбирает именно те версии своих зависимостей, которые оно потребности, даже если другие версии были бы доступны для других приложений Выбери из.

Если компоненты платформы совместимости CUDA размещены таким образом, что они выбранной системой загрузки модулей, важно отметить ограничения этого нового пути — а именно, только определенные основные версии стека системных драйверов, только графические процессоры NVIDIA Tesla поддерживаются только с прямой совместимостью (т.е. старше libcuda.so не будет работать в более новых базовых системах).

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

.Руководство по установке

Windows :: CUDA Toolkit Documentation

Версию CUDA Toolkit можно проверить, запустив nvcc -V в Окно командной строки. Вы можете отобразить команду Окно подсказки, перейдя в:

Пуск> Все программы> Стандартные> Командная строка

Примеры CUDA включают образцы программ в форме source .Чтобы проверить правильность конфигурации оборудования и программного обеспечения, настоятельно рекомендуется собрать и запустить пример программы deviceQuery . Образец может быть построен с использованием предоставленного VS файлы решения, а скомпилированный исполняемый файл может находиться по адресу:
 C: \ ProgramData \ NVIDIA Corporation \ Примеры CUDA \ v11.1 \ bin \ win64 \ Release 

Предполагается, что вы использовали структуру каталогов установки по умолчанию.Если CUDA установлен и настроен правильно, вывод должен выглядеть как на рисунке 1.

Рисунок 1. Действительные результаты из deviceQuery CUDA Sample

Точный внешний вид и выходные линии могут отличаться в вашей системе. Важным результатом является то, что устройство было обнаружил, что устройство (а) соответствует тому, что установлено в вашей системе, и что тест пройден.

Если устройство с поддержкой CUDA и драйвер CUDA установлены, но deviceQuery сообщает, что устройства с поддержкой CUDA отсутствуют, убедитесь, что устройство и драйвер установлены правильно.

Запуск программы bandwidthTest , расположенной в том же каталоге, что и deviceQuery выше, гарантирует, что система и CUDA-совместимое устройство могут правильно обмениваться данными.Результат должен напоминать Фигура 2.

Рисунок 2. Допустимые результаты теста bandwidthTest CUDA

Имя устройства (вторая строка) и значения пропускной способности варьируются от системы к системе. Важные элементы — вторая строка, который подтверждает, что устройство CUDA найдено, и предпоследнюю строку, подтверждающую прохождение всех необходимых тестов.

Если тесты не проходят, убедитесь, что в вашей системе есть графический процессор NVIDIA с поддержкой CUDA, и убедитесь, что он правильно установлен.

Чтобы увидеть графическое представление того, что может делать CUDA, запустите образец исполняемого файла Particles по адресу
 C: \ ProgramData \ NVIDIA Corporation \ CUDA Samples \ v11.1 \ bin \ win64 \ Release 
.

[Вычисления на GPU] NVIDIA CUDA, сравнительная таблица вычислительных возможностей



Обновлено 9 июня 2011 г. : Функции вычислительных возможностей GTX 500 и CUDA 4.0.


The Compute Capability описывает функции, поддерживаемые оборудованием CUDA. Первое оборудование с поддержкой CUDA, такое как GeForce 8800 GTX, имеет вычислительную мощность (CC) 1.0, а недавние GeForce, такие как GTX 480, имеют CC 2.0. Знание CC может быть полезно для понимания того, почему демонстрация на основе CUDA не может запуститься в вашей системе.

Вот сравнительная таблица, которая поможет вам узнать CC вашей видеокарты NVIDIA:

Мультипроцессоры ядер CUDA Вычислительные возможности
GeForce GTX 680 8 1536 3,0
GeForce GTX 590 2 х 16 2 х 512 2,0 (R280,28)
GeForce GTX 580 16 512 2.0
GeForce GTX 570 15 480 2,0
GeForce GTX 560 Ti 8 384 2,1
GeForce GTX 560 7 336 2,1
GeForce GT 440 2 96 2,1
GeForce GTX 480 15 480 2,0
GeForce GTX 470 14 448 2.0
GeForce GTX 465 11 352 2,0
GeForce GTX 295 2 × 30 2 × 240 1,3
GeForce GTX 280 / GTX 285 30 240 1,3
GeForce GTX 260 24 192 1,3
GeForce 210 2 16 1,2
GeForce GT 240 12 96 1.2
GeForce GT 220 6 48 1,2
GeForce GT 130 12 96 1,1
GeForce GT 120 4 32 1,1
GeForce GTS 250 16 128 1,1
GeForce 9800 GX2 2 × 16 2 × 128 1,1
GeForce 9800 GTX 16 128 1.1
GeForce 9800 GT 14 112 1,1
GeForce 9600 GSO 12 96 1,1
GeForce 9600 GT 8 64 1,1
GeForce 8800 GTX / Ультра 16 128 1,0
GeForce 8800 GT 14 112 1,1
GeForce 8800 GTS 12 96 1.0
GeForce 8600 GT / GTS 4 32 1,1
GeForce 8400 GS / GT 2 16 1,1

Вы можете использовать GPU Caps Viewer, чтобы узнать CC вашей карты:


Вычислительные возможности, отображаемые программой GPU Caps Viewer

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *