Какие видеокарты поддерживают cuda

Обновлено: 05.07.2024

На этой странице представлен обзор карт NVIDIA, которые можно использовать в сочетании с параметрами GPU Small, Medium, Large или Extreme в последней версии Huygens для ускорения GPU. Со временем эта страница будет обновляться. Чтобы получить обзор категорий карт, работающих со старыми версиями Huygens, обратитесь в службу поддержки по адресу svi.nl

Для карт, которые не указаны на этой странице: параметр, требуемый в вашей лицензии, будет зависеть от количества ядер CUDA и объема ОЗУ карты в соответствии со следующими характеристиками:

Вариант с малым графическим процессором: для карт, имеющих до 1024 ядер CUDA и до 6 ГБ видеопамяти (входит в каждую бесплатную лицензию Huygens)
Вариант с графическим процессором среднего размера: для карт, имеющих до 3072 ядер CUDA ядер и до 8 ГБ видеопамяти.
Опция с большим графическим процессором: для карт, имеющих до 8192 ядер CUDA и до 24 ГБ видеопамяти.
Опция Extreme GPU: для карт, имеющих до 24 576 ядер CUDA и до 64 ГБ видеопамяти.

Для идеального сочетания с мощностью вашего процессора проверьте различные параметры производительности, в которых мы объединяем мощность вашего графического процессора и процессора, чтобы позволить Huygens работать очень быстро с вашими самыми большими данными.

Ускорение графического процессора Huygens поддерживается в Windows и Linux для карт NVidia, которые не поддерживаются в Mac OS. если у вас есть действующая карта графического процессора, но она не распознается Huygens, проверьте контрольный список графического процессора.

Маленькие видеокарты

В вашей лицензии Huygens требуется опция Small GPU, чтобы использовать небольшие карты GPU. Опция небольшого графического процессора включена в каждую базовую лицензию Huygens начиная с 15.10. Загрузите последнюю версию Huygens прямо сейчас.

< td style=" width: 30%;">1280 < td style=" width: 30%;">5GB
Карта графического процессора Ядра CUDA VRAM
GeForce GTX 1660 Ti 1536 6 ГБ
GeForce GTX 1660 Super 1408 6GB
GeForce GTX 1660 1408 6 ГБ
GeForce GTX 1650 Super 1408 4 ГБ
GeForce GTX 1650 1024 4GB
GeForce GTX 1650 896 4 ГБ
GeForce GTX 1060 3 ГБ 1 280 3GB
GeForce GTX 1060 6GB 6GB
GeForce GTX 1050 Ti 768 4GB
GeForce GTX 1050 (3 ГБ) 768 3 ГБ
GeForce GTX 1050 (2 ГБ) 640< /td> 2GB
GeForce GTX 960 1024 2 ГБ
GeForce GTX 950 786 2GB
GeForce GTX 780 Ti 2880 3 ГБ
GeForce GTX 780 2304 3GB
GeForce GTX 750 Ti 640 2 ГБ
GeForce GTX 750 512 1GB или 2 ГБ
Quadro P2000 1024
Quadro P1000 640 4GB
Quadro M2000 768 4GB
Quadro K2200 640 4GB
Quadro T2000 1024 4 ГБ< /td>
Quadro T1000 768 4GB

Карты среднего размера

Для использования средних карт GPU в вашей лицензии Huygens требуется параметр Medium GPU. Запросить цену

< tr>
Карта графического процессора Ядра CUDA VRAM
GeForce RTX 3070 5888 8GB
GeForce RTX 2080 SUPER< /td> 3072 8GB
GeForce RTX 2080 2944 8 ГБ
GeForce RTX 2070 SUPER 2560 8 ГБ
GeForce RTX 2070 2304 8GB
GeForce RTX 2060 SUPER 2176 8 ГБ
GeForce RTX 2060 1 920 6GB
GeForce GTX 1080 2560 8GB
GeForce GTX 1070 Ti 2432 8GB
GeForce GTX 1070 1920 8GB< /td>
GeForce GTX 980 Ti 2816 6 ГБ
GeForce GTX 980 2048 4GB
GeForce GTX 970 1664 4GB
Quadro RTX 4000 2304 8GB
Quadro P4000 1792 8GB
Quadro M5000 2048 8GB
Quadro M4000 1664 8 ГБ
Quadro P2200 1280 5GB
Tesla K20 2496 5 ГБ

Большие видеокарты

< tr> < td style=" width: 30%;">2560
Карта графического процессора Ядра CUDA VRAM
Titan RTX 4608 24GB
Titan V 5120 12 ГБ
Titan-Xp (поколение Pascal) 3584 12 ГБ
GeForce GTX Titan-X 3072 12 ГБ
GeForce RTX 3090 10496< /td> 24GB
GeForce RTX 3080 8704 10 ГБ
GeForce RTX 3080 Ti 10240 12GB
GeForce RTX 2080 Ti 4352 11 ГБ
GeForce GTX 1080 Ti 3584 11GB
Tesla V100 (версия 16 ГБ) 5120 16 ГБ
Tesla P100 3584 16 ГБ
Tesla P100 NVLINK 3584 16GB
Tesla P40 3840 24 ГБ
Tesla M60 4096 16 ГБ
Tesla M40 307 2 12 ГБ или 24 ГБ
Tesla K80 4992 2 x 12GB
Tesla K40 2880 12 ГБ
Quadro GP100 3584 16GB
Quadro RTX A5000 8192 24 ГБ
Quadro RTX A4000 6144 16 ГБ
Quadro RTX 6000 4608 24GB
Quadro RTX 5000 3072 16GB
Quadro P6000 3840 24GB
Quadro P5000 16GB
Quadro M6000 24 ГБ 3072 24 ГБ
Quadro M6000 3072 12 ГБ
Quadro K6000 2880 12 ГБ

Экстремальные видеокарты

Карта графического процессора Ядра CUDA VRAM
Tesla V100 (версия на 32 ГБ) 5120 32 ГБ
Quadro RTX 8000 4608 48GB
Quadro GV100 5120 32 ГБ
Titan V CEO Edition 5120 32 ГБ

Гюйгенс 20.04

Версии Huygens до 20.04 включительно поддерживают видеокарты NVidia с Compute Capability 3.0 или выше и Cuda Toolkit версии 7.0 или выше.

Гюйгенс 20.10

Версии Compute Capability ниже 3.5 и версии Cuda Toolkit старше 8.0 больше не поддерживаются. Huygens 20.10 больше не поддерживает их для ускорения графического процессора. Вычисления ЦП и отображение на мониторе с помощью этих карт по-прежнему будут поддерживаться.

Затронутые карты, которые по-прежнему поддерживаются в Huygens 20.04, но не поддерживаются в Huygens 20.10:
GeForce GTX 770, GeForce GTX 760, GeForce GT 740, GeForce GTX 690, GeForce GTX 680, GeForce GTX 670, GeForce GTX 660 Ti, GeForce GTX 660, GeForce GTX 650 Ti BOOST, GeForce GTX 650 Ti, GeForce GTX 650, GeForce GTX 880M, GeForce GTX 780M, GeForce GTX 770M, GeForce GTX 765M, GeForce GTX 760M, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 675MX, GeForce GTX 670MX, GeForce GTX 660M, GeForce GT 750M, GeForce GT 650M, GeForce GT 745M, GeForce GT 645M, GeForce GT 740M, GeForce GT 730M, GeForce GT 640M, GeForce GT 640M LE, GeForce GT 735M, GeForce GT 730M;
Quadro K5000, Quadro K4200, Quadro K4000, Quadro K2000, Quadro K2000D, Quadro K600, Quadro K420, Quadro K500M, Quadro K510M, Quadro K610M, Quadro K1000M, Quadro K2000M, Quadro K1100M, Quadro K2100M, Quadro K3000 K3100M, Quadro K4000M, Quadro K5000M, Quadro K4100M, Quadro K5100M, NVS 510, Quadro 410;
Tesla K10, GRID K340, GRID K520.

Помимо параметров графического процессора для Huygens, SVI также предлагает параметры производительности. Для использования ускорения нескольких GPU требуется опция Performance Plus, Mega или Extreme. В Huygens версии 16.10.0p8 в пакетном процессоре и ядре Huygens была введена поддержка нескольких графических процессоров для одновременного выполнения деконволюции очереди изображений на нескольких устройствах с графическим процессором. В Huygens 17.10 (Linux) и Huygens 18.04 (Windows) добавлена ​​поддержка выполнения деконволюции одного изображения на нескольких графических процессорах в Huygens Professional. Мы предлагаем следующие пакеты производительности, чтобы максимально использовать возможности вашей рабочей станции:

Вариант производительности: стандарт, включенный в Huygens, для использования до 16 ядер ЦП (32 логических при гиперпоточности) и 1 небольшой карты графического процессора.

Performance Plus: позволяет использовать до 32 ядер ЦП (64 логических ядра при использовании технологии Hyper-Threading) и 2 большие карты графического процессора.
Мегапроизводительность: позволяет использовать до 64 ядер ЦП (128 логических ядер при гиперпоточности) и 4 больших графических карты.
Экстремальная производительность: позволяет использовать до 128 ядер ЦП (256 логических ядер при использовании технологии Hyper-Threading) и 8 больших карт графического процессора.

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

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

В: Что такое NVIDIA Tesla™?

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

В: Что такое OpenACC?

OpenACC — это открытый отраслевой стандарт для директив или подсказок компилятора, которые можно вставлять в код, написанный на C или Fortran, что позволяет компилятору генерировать код, который будет выполняться параллельно в системе с несколькими процессорами и GPU-ускорением. Директивы OpenACC — это простой и эффективный способ использовать мощь вычислений на GPU, сохраняя при этом совместимость вашего кода с системами, использующими только ЦП без ускорения. Узнайте больше на /openacc.

В: Какого повышения производительности можно ожидать при использовании вычислений на GPU по сравнению с кодом, использующим только CPU?

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

В: Какие операционные системы поддерживает CUDA?

В: Какие графические процессоры поддерживают запуск приложений с ускорением CUDA?

CUDA является стандартной функцией всех графических процессоров NVIDIA GeForce, Quadro и Tesla, а также решений NVIDIA GRID. Полный список можно найти на странице графических процессоров CUDA.

В: Что такое "вычислительные возможности"?

Вычислительные возможности графического процессора определяют его общие характеристики и доступные функции. Дополнительные сведения см. в разделе «Возможности вычислений» в Руководстве по программированию CUDA C.

В: Где я могу найти хорошее введение в параллельное программирование?

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

Оборудование и архитектура

В: Придется ли мне переписывать свои ядра CUDA, когда будет выпущена следующая новая архитектура графического процессора?

Нет. CUDA C/C++ обеспечивает абстракцию; это средство для вас, чтобы выразить, как вы хотите, чтобы ваша программа выполнялась.Компилятор генерирует код PTX, который также не зависит от аппаратного обеспечения. Во время выполнения PTX компилируется для конкретного целевого графического процессора — за это отвечает драйвер, который обновляется каждый раз при выпуске нового графического процессора. Возможно, изменения количества регистров или размера разделяемой памяти откроют возможности для дальнейшей оптимизации, но это не обязательно. Так что напишите свой код сейчас и наслаждайтесь его работой на будущих графических процессорах

В: Поддерживает ли CUDA несколько видеокарт в одной системе?

Да. Приложения могут распределять работу между несколькими графическими процессорами. Однако это не делается автоматически, поэтому приложение имеет полный контроль. См. пример "multiGPU" в SDK GPU Computing для примера программирования нескольких GPU.

В: Где я могу найти дополнительную информацию об архитектуре графических процессоров NVIDIA?

Вопросы по программированию

В: Я думаю, что нашел ошибку в CUDA, как мне сообщить об этом?
Зарегистрируйтесь в качестве зарегистрированного разработчика CUDA. Как только ваше приложение будет одобрено, вы сможете сообщать об ошибках, которые будут проверены инженерами NVIDIA.

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

  • Конфигурация компьютера (процессор, материнская плата, память и т. д.)
  • Операционная система
  • Версия набора инструментов CUDA
  • Показать версию драйвера
  • Пользователям Linux: прикрепите файл nvidia-bug-report.log, созданный при запуске "nvidia-bug-report.sh".

В: Как CUDA структурирует вычисления?

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

Данные разбиты на одномерную, двухмерную или трехмерную сетку блоков. Каждый блок может иметь форму 1D, 2D или 3D и может состоять из более чем 512 потоков на текущем оборудовании. Потоки внутри блока потоков могут взаимодействовать через общую память.

Блоки потоков выполняются как меньшие группы потоков, известные как "перекосы".

В: Могут ли ЦП и ГП работать параллельно?
Вызов ядра в CUDA является асинхронным, поэтому драйвер вернет управление приложению, как только оно запустит ядро.

Вызов API cudaThreadSynchronize() следует использовать при измерении производительности, чтобы убедиться, что все операции устройства завершены до остановки таймера.

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

В: Могу ли я передавать данные и запускать ядро ​​параллельно (для потоковых приложений)?
Да, CUDA поддерживает перекрывающиеся вычисления GPU и передачу данных с использованием потоков CUDA. Дополнительную информацию см. в разделе «Асинхронное параллельное выполнение» Руководства по программированию CUDA C.

В: Возможно ли прямое подключение к памяти графического процессора с другого устройства PCI-E?

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

В: Каковы пиковые скорости передачи данных между ЦП и ГП?
Производительность передачи памяти зависит от многих факторов, включая размер передачи и тип используемой материнской платы.

В системах PCI-Express 2.0 мы измерили скорость передачи данных до 6,0 ГБ/с.
Вы можете измерить пропускную способность своей системы, используя тестовый образец пропускной способности из SDK.

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

В: Какова точность математических операций в CUDA?
Все современные графические процессоры NVIDIA, начиная с GT200, имеют числа с плавающей запятой двойной точности. Подробнее см. в руководстве по программированию. Все графические процессоры NVIDIA с вычислительными возможностями поддерживают 32-битные целочисленные вычисления и арифметические операции с плавающей запятой одинарной точности. Они соответствуют стандарту IEEE-754 для двоичной арифметики одинарной точности с плавающей запятой с некоторыми незначительными отличиями.

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

В: Поддерживает ли CUDA арифметику двойной точности?
Да. Графические процессоры с вычислительной мощностью 1.3 и выше аппаратно поддерживают операции с плавающей запятой двойной точности.

В: Как заставить работать с плавающей запятой двойной точности в моем ядре?
Вам нужно добавить переключатель "-arch sm_13" (или более высокую вычислительную мощность) в командную строку nvcc, иначе двойные числа будут автоматически понижены до плавающих.См. образец Mandelbrot, включенный в установщик CUDA, в котором показано, как переключаться между различными ядрами в зависимости от вычислительных возможностей графического процессора.

В: Могу ли я считывать числа с плавающей запятой двойной точности из текстуры?
Аппаратное обеспечение не поддерживает float с двойной точностью в качестве формата текстуры, но можно использовать int2 и привести его к удвоению, если вам не нужна интерполяция:

static __inline__ __device__ double fetch_double(texture t, int i)
int2 v = tex1Dfetch(t,i);
return __hiloint2double(vy, v.x);
>

В: Поддерживает ли CUDA длинные целые числа?
Да, CUDA поддерживает 64-битные целые числа (long long). Операции над этими типами компилируются в несколько последовательностей инструкций на некоторых графических процессорах в зависимости от вычислительных возможностей.

В: Где я могу найти документацию по языку ассемблера PTX?
Она включена в документацию CUDA Toolkit.

В: Как я могу увидеть код PTX, сгенерированный моей программой?
Добавьте «-keep» в командную строку nvcc (или пользовательскую настройку сборки в Visual Studio), чтобы сохранить промежуточные файлы компиляции. Затем посмотрите на файл ".ptx".

В: Как узнать, сколько регистров/сколько общей/постоянной памяти использует мое ядро?
Добавьте параметр "--ptxas-options=-v" в командную строку nvcc. При компиляции эта информация будет выведена на консоль.

В: Можно ли запускать несколько ядер одновременно?
Да. Графические процессоры с вычислительными возможностями 2.x или выше поддерживают одновременное выполнение и запуск ядра.

В: Какова максимальная длина ядра CUDA?
Поскольку это может зависеть от вычислительных возможностей вашего графического процессора, окончательный ответ на этот вопрос можно найти в разделе «Функции и технические характеристики» руководства по программированию CUDA C.

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

В: Как мне оптимизировать код CUDA?

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

В: Как выбрать оптимальное количество потоков на блок?
Для максимального использования графического процессора необходимо тщательно сбалансировать количество потоков на блок потоков, объем разделяемой памяти на блок и количество регистров, используемых ядром.

Вы можете использовать инструмент CUDA Occupancy Calculator для расчета многопроцессорной занятости GPU данным ядром CUDA. Это входит в состав последнего набора инструментов CUDA.

В: Каково максимальное время выполнения ядра?
В Windows максимальное время запуска отдельных программ графического процессора составляет около 5 секунд. Превышение этого ограничения по времени обычно приводит к ошибке запуска, о которой сообщает драйвер CUDA или среда выполнения CUDA, но в некоторых случаях это может привести к зависанию всей машины, что потребует полной перезагрузки.

Это вызвано "сторожевым" таймером Windows, который заставляет программы, использующие основной графический адаптер, отключаться по тайм-ауту, если они работают дольше максимально допустимого времени.

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

В: Как вычислить сумму массива чисел на графическом процессоре?
Это называется параллельной операцией редукции. Дополнительные сведения см. в примере "сокращения".

В: Как вывести переменный объем данных из каждого потока?
Этого можно добиться, используя параллельную операцию суммирования префиксов (также известную как "сканирование"). Библиотека CUDA Data Parallel Primitives (CUDPP) включает оптимизированные функции сканирования:

Пример "marchingCubes" демонстрирует использование сканирования для переменного вывода для каждого потока.

В: Как отсортировать массив на графическом процессоре?
Предоставленный образец "частиц" включает быструю параллельную сортировку по основанию.
Чтобы отсортировать массив значений внутри блока, вы можете использовать параллельную битоническую сортировку. См. также пример "bitonic".
Библиотеки Thrust также включают функции сортировки. Дополнительную информацию о образцах см. в нашей интерактивной документации по образцам.

В: Что мне нужно для распространения приложения CUDA?
Приложения, использующие API драйвера, нуждаются только в библиотеке драйверов CUDA ("nvcuda.dll" в Windows), которая входит в стандартную установку драйвера NVIDIA.

Для приложений, использующих API среды выполнения, также требуется библиотека среды выполнения ("cudart.dll" в Windows), которая включена в набор инструментов CUDA. Разрешается распространять эту библиотеку вместе с вашим приложением в соответствии с условиями Лицензионного соглашения с конечным пользователем, входящего в комплект CUDA Toolkit.

В: Как я могу получить информацию о температуре графического процессора из моего приложения?
На платформах Microsoft Windows NVAPI от NVIDIA предоставляет доступ к температуре графического процессора и многим другим низкоуровневым функциям графического процессора

В Linux утилита nvidia-smi, входящая в стандартную установку драйвера, также отображает температуру графического процессора для всех установленных устройств.

Инструменты, библиотеки и решения

В: Что такое CUFFT?
CUFFT — это библиотека быстрого преобразования Фурье (БПФ) для CUDA. Дополнительную информацию см. в документации CUFFT.

В: Какие типы преобразований поддерживает CUFFT?
Текущая версия поддерживает комплексное преобразование (C2C), реальное преобразование сложного (R2C) и сложное преобразование (C2R).

В: Каков максимальный размер преобразования?
Для одномерных преобразований максимальный размер преобразования составляет 16 Млн элементов в версии 1.0.

В: Что такое CUBLAS?
CUBLAS — это реализация BLAS (базовых подпрограмм линейной алгебры) поверх драйвера CUDA. Он позволяет получить доступ к вычислительным ресурсам графических процессоров NVIDIA. Библиотека является автономной на уровне API, то есть не требуется прямого взаимодействия с драйвером CUDA.

В: Есть ли у NVIDIA отладчик CUDA для Linux и MAC?
Да, CUDA-GDB — это отладчик CUDA для дистрибутивов Linux и платформ MAC OSX.

В: Поддерживает ли CUDA-GDB какие-либо пользовательские интерфейсы?
CUDA-GDB — это отладчик командной строки, но его можно использовать с графическими интерфейсами, такими как DDD — отладчик отображения данных, а также Emacs и XEmacs. Существуют также сторонние решения, см. список вариантов на нашей странице инструментов и экосистемы

В: Каковы основные различия между Parellel Nsight и CUDA-GDB?
Оба имеют одинаковые функции, за исключением следующего:
Parallel Nsight работает в Windows и может отлаживать как графику, так и код CUDA на на GPU (без отладки кода ЦП).
CUDA-GDB работает в Linux и Mac OS и может отлаживать как код ЦП, так и код CUDA на GPU (без отладки графики на GPU).

В: Как отлаживать приложение OGL+CUDA с интерактивным рабочим столом?
Для удаленной отладки приложения OGL+CUDA можно использовать ssh, nxclient или vnc. Это требует, чтобы пользователи отключили интерактивный сеанс в файле конфигурации X-сервера. Подробнее см. в руководстве пользователя CUDA-GDB.

В: Какой отладчик я использую для отладки кластеров?
NVIDIA работает со своими партнерами над предоставлением отладчика кластеров. Существует два кластерных отладчика, поддерживающих CUDA: DDT от Allinea и отладчик TotalView от программного обеспечения RogeWave.

В: Какое влияние оказывает флаг -G на оптимизацию кода?
Флаг -G отключает большинство оптимизаций компилятора в коде CUDA. Некоторые оптимизации нельзя отключить, поскольку они необходимы для правильной работы приложения. Например: локальные переменные не будут перенесены в локальную память, а вместо этого сохранены в регистрах, для которых отладчик отслеживает живые диапазоны. Это необходимо для того, чтобы при компиляции в режиме отладки у приложения не закончилась память, когда его можно запустить без инцидентов без флага отладки.

Взаимодействие с NVIDIA

В: Как я могу отправить предложения по улучшению CUDA Toolkit?

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

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

Моя графическая карта относится к семейству Intel(R) HD Graphics и поддерживает ли она CUDA и Nvidia GPU?

Получите помощь в своем исследовании

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

Последний ответ


CUDA — это один из языков программирования графических процессоров, работающих с картами Nvidia. Это расширенная версия языка C, имеющая рабочую среду с Microsoft Visual Studio 2010 или более поздней версии.

Популярные ответы (1)


CUDA — это платформа для параллельных вычислений с использованием специального GPU (графического процессора) от NVIDIA. Эта платформа позволяет разработчикам программного обеспечения высоко распараллеливать алгоритмы на графических устройствах (на обычном процессоре всего 2-8 модулей (ядер), а на графическом процессоре их около 400-800, но гораздо слабее). Если ваш алгоритм умеет распараллеливать, вы можете сократить время вычислений более чем в 5-10 раз.

Но вы можете использовать CUDA только с графическими картами Nvidia. «Семейство Intel(R) HD Graphics» не подходит. Вы можете увидеть, какие видеокарты поддерживают платформу CUDA, на вики (ссылка ниже).

Все ответы (7)


CUDA — это платформа для параллельных вычислений с использованием специального GPU (графического процессора) от NVIDIA. Эта платформа позволяет разработчикам программного обеспечения высоко распараллеливать алгоритмы на графических устройствах (на обычном процессоре всего 2-8 модулей (ядер), а на графическом процессоре их около 400-800, но гораздо слабее). Если ваш алгоритм умеет распараллеливать, вы можете сократить время вычислений более чем в 5-10 раз.

Но вы можете использовать CUDA только с графическими картами Nvidia. «Семейство Intel(R) HD Graphics» не подходит. Вы можете увидеть, какие видеокарты поддерживают платформу CUDA, на вики (ссылка ниже).


Большое спасибо. Могу ли я подать в суд на внешнюю видеокарту? и какую марку или характеристики вы рекомендуете?


Да, конечно, вы можете использовать внешнюю видеокарту. Внешние карты такие же, как и внутренние, но в жестком футляре и со специальным интерфейсом Thunderbolt.

Если вы хотите использовать CUDA, вы должны купить карты NVIDIA. Это один бренд для CUDA :) Но AMD RADEON (другой бренд видеокарт) имеет аналогичную параллельную платформу. Если вы хотите узнать больше о параллельных вычислениях на графическом процессоре на картах AMD, прочтите аналогичную тему в разделе «Вопросы и ответы» (ссылка ниже). Или вы можете использовать OpenCL (другая платформа для параллельных вычислений).

О характеристиках: дороже - лучше характеристики в большинстве случаев :) Цена на карты nvidia с поддержкой CUDA находится в большом ценовом диапазоне. Это зависит от ваших финансовых возможностей. Nvidia Tesla — лучший вариант для научных вычислений.

Дори Экстерман

Автор: Дори Экстерман Дата публикации: 7 июня 2021 г. Расчетное время чтения: 8 минут

Графические процессоры или графические процессоры в последние годы стали неотъемлемой частью обеспечения вычислительной мощности для высокопроизводительных вычислительных приложений. Программирование GPGPU — это вычисления общего назначения с использованием графического процессора (GPU). Это достигается за счет использования графического процессора вместе с центральным процессором (ЦП) для ускорения вычислений в приложениях, которые традиционно обрабатываются только ЦП. В настоящее время программирование графических процессоров используется практически во всех отраслях: от ускорения видео, цифровых изображений, обработки аудиосигналов и игр до производства, нейронных сетей и глубокого обучения.

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

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

Почему CUDA?

CUDA (сокращение от Compute Unified Device Architecture) — это парадигма параллельного программирования, выпущенная NVIDIA в 2007 году. CUDA с использованием языка, похожего на язык C, используется для разработки программного обеспечения для графических процессоров и широкого спектра приложений общего назначения для графических процессоров, которые по своей природе очень параллельны.

CUDA — это проприетарный API, поэтому он поддерживается только графическими процессорами NVIDIA, основанными на архитектуре Tesla. Графические карты, поддерживающие CUDA, — это серии GeForce 8, Tesla и Quadro. Парадигма программирования CUDA представляет собой комбинацию как последовательного, так и параллельного выполнения и содержит специальную функцию C, называемую kernel, которая простыми словами представляет собой код C, который выполняется на графической карте с фиксированным числом потоков одновременно (узнайте больше о том, что такое CUDA).

Почему OpenCL?

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

OpenCL предоставляет портативные, независимые от устройств и поставщиков программы, которые можно ускорять на различных аппаратных платформах.Язык OpenCL C — это ограниченная версия языка C99 с расширениями, подходящими для выполнения кодов с параллельными данными на различных устройствах.

Сравнение CUDA и OpenCL

Производительность

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

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

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

Реализация поставщиками

На момент написания этой статьи существует только один поставщик реализации CUDA, и это ее владелец, NVIDIA.

Однако OpenCL был реализован широким кругом поставщиков, включая, помимо прочего:

  • AMD: поддерживаются чипы и графические процессоры Intel и AMD.
  • Поддерживаются Radeon серии 5xxx, 6xxx, 7xxx, R9xxx.
  • Все процессоры поддерживают только OpenCL 1.2
  • NVIDIA: поддерживаются NVIDIA GeForce 8600M GT, GeForce 8800 GT, GeForce 8800 GTS, GeForce 9400M, GeForce 9600M GT, GeForce GT 120, GeForce GT 130, ATI Radeon 4850, Radeon 4870 и другие.
  • Apple (поддерживается только MacOS X)
  • Поддерживаются центральные процессоры в качестве вычислительных устройств
  • ЦП, ГП и «MIC» (Xeon Phi).

Переносимость

Вероятно, это наиболее заметное различие между ними, поскольку CUDA работает только на графических процессорах NVIDIA, тогда как OpenCL является открытым отраслевым стандартом и работает на устройствах NVIDIA, AMD, Intel и других устройствах. Кроме того, OpenCL обеспечивает откат ЦП и, таким образом, упрощает обслуживание кода, в то время как, с другой стороны, CUDA не обеспечивает откат ЦП, что заставляет разработчиков помещать в свои коды операторы if, которые помогают различать наличие устройства GPU во время выполнения или его отсутствие.

Открытый исходный код против коммерческого

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

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

Однако, если все выбранные вами приложения поддерживают OpenCL, решение уже принято за вас.

Поддержка нескольких ОС

CUDA может работать в Windows, Linux и MacOS, но только на оборудовании NVIDIA. Однако OpenCL доступен для работы практически в любой операционной системе и на большинстве аппаратных средств. Когда дело доходит до сравнения поддержки ОС, главным решающим фактором по-прежнему остается аппаратное обеспечение, поскольку CUDA может работать на ведущих операционных системах, а OpenCL работает почти на всех.

Разница в оборудовании — это то, что действительно определяет сравнение. Для CUDA требуется только использование аппаратного обеспечения NVIDIA, а для OpenCL аппаратное обеспечение не указано. У этого различия есть свои плюсы и минусы.

Библиотеки

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

  • cuBLAS — полная библиотека BLAS
  • cuRAND — библиотека генерации случайных чисел (RNG)
  • cuSPARSE — библиотека разреженных матриц
  • NPP — Примитивы производительности для обработки изображений и видео
  • cuFFT — библиотека быстрых преобразований Фурье
  • Thrust – шаблонные параллельные алгоритмы и структуры данных
  • h — библиотека вычислений с плавающей запятой C99

У OpenCL есть альтернативы, которые можно легко построить и которые в последнее время стали зрелыми, но они не похожи на библиотеки CUDA. Примером чего является ViennaCL. Библиотеки AMD OpenCL также имеют дополнительный бонус: они работают не только на устройствах AMD, но и на всех устройствах, совместимых с OpenCL

Сообщество

CUDA vs. OpenCL — сообщество» width=

Это часть сравнения, которая включает в себя поддержку, долговечность, приверженность и т. д. каждой платформы. Хотя эти вещи трудно измерить, взгляд на форумы дает представление о том, насколько велико сообщество. Количество тем на форумах NVIDIA по CUDA ошеломляюще больше, чем на форумах AMD по OpenCL. Тем не менее, в последние годы количество тем на форумах OpenCL увеличивается, и следует также отметить, что CUDA существует уже большее количество времени.

Технические особенности

CUDA позволяет разработчикам писать свое программное обеспечение на C или C++, поскольку это всего лишь платформа и модель программирования, а не язык или API. Распараллеливание достигается за счет использования ключевых слов CUDA.

С другой стороны, OpenCl не позволяет писать код на C++, однако предоставляет для работы среду, напоминающую язык программирования C, и позволяет напрямую работать с ресурсами графического процессора.

Сравнительная таблица

< /tr>
Сравнение CUDA OpenCL
Производительность Нет явного преимущества, зависит качество кода, тип оборудования и другие переменные Нет явного преимущества, зависит качество кода, тип оборудования и другие переменные
Реализация поставщика Реализуется только NVIDIA Реализовано МНОЖЕСТВОМ поставщиков, включая AMD, NVIDIA, Intel, Apple, Radeon и т. д.
Портативность Работает только с использованием аппаратного обеспечения NVIDIA Можно портировать на другое аппаратное обеспечение, если не используются расширения, зависящие от поставщика
Открытый исходный код против коммерческого Проприетарная структура NVIDIA Стандарт открытого исходного кода< /td>
Поддержка ОС Поддерживается на Должны использоваться ведущие операционные системы с единственным отличием оборудования NVIDIA Поддерживается в различных операционных системах
Библиотеки Имеет обширные высокопроизводительные библиотеки Имеет большое количество библиотек, которые можно использовать на всем оборудовании, совместимом с OpenCL, но не такие обширные, как CUDA
Сообщество Большее сообщество Имеет растущее сообщество не такое большое, как CUDA
Технические особенности Не язык, а платформа и модель программирования, которые достигают распараллеливание с использованием ключевых слов CUDA Не позволяет писать код на C++, но работает в среде, напоминающей язык программирования C

Как выбрать

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

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

Независимо от того, что вы решите, Incredibuild может помочь вам ускорить ваши компиляции и тесты, что приведет к повышению качества вычислений, будь то создание контента, машинное обучение, обработка сигналов и множество других ресурсоемких компьютерных задач. Взгляните на наш кейс с MediaPro — это пример того, как мы можем ускорить ваши компиляции и тесты в несколько раз (в данном случае более чем в 6 раз быстрее).

ускорить C++

Дори Экстерман

Дори Экстерман, опытный разработчик программного обеспечения и продуктовый стратег, имеет 20-летний опыт работы в индустрии разработки программного обеспечения.В качестве технического директора Incredibuild он руководит продуктовой стратегией компании и отвечает за видение продукта, его реализацию и техническое партнерство. До прихода в Incredibuild Дори занимал различные технические должности и должности по разработке продуктов в компаниях-разработчиках программного обеспечения, уделяя особое внимание архитектуре, производительности, передовым технологиям, DevOps, управлению выпусками и C++. Он является экспертом и часто выступает с докладами о технологическом прогрессе в средствах разработки.

Читайте также: