← Обратно к Методам снижения нагрузки

Asus GeForce GTX, NVidia CUDA и аппаратное ускорение декодирования h.264

Xeoma поддерживает аппаратное ускорение CUDA на видеокартах Nvidia. Начиная с версии Xeoma 23.12.7, это справедливо и для карт AMD Radeon.
Аппаратное ускорение декодирования можно применять как на серверной части Xeoma, так и на клиентской, обращая внимание на разницу в условиях. Рассмотрим оба варианта подробно:

Сервер

Многие задаются вопросом, какие модели видеокарт мы рекомендуем. Есть множество вариантов, но рекомендуем обратить внимание на следующие:

Asus GeForce GTX 950 (или выше, но это не повлияет на скорость декодирования H264) – цена 9500 руб. (октябрь 2016). Минус этого варианта в том, что может не хватить видеопамяти, т.е. в зависимости от разрешения возможно получить вместо 510fps только 250fps.

Asus GeForce GTX 960 именно с 4096(!) Мб видеопамяти – 19000 руб. (октябрь 2016).

Asus GeForce GTX 1060 минимум с 6144 Мб видеопамяти – 20000 руб. (октябрь 2016) – в 1.5 раза быстрее, чем у карты GTX 960.

Asus GeForce GTX 1070 с 8192 Мб видеопамяти – 27000 руб. (октябрь 2016).

Таким образом, оптимальный вариант сейчас (в том числе и по цене) – Asus GeForce GTX 1060 минимум с 6144 Мб видеопамяти – 20000 руб.

Если позволяет бюджет, стоит предпочесть Asus GeForce GTX 1070 с 8192 Мб видеопамяти по цене 27000 руб. – в этом случае вы сможете подключить больше камер, т.к. 1060 в некоторых вариантах упирается в размер видеопамяти.
Даёт теоретически около 750 fps Full-HD, т.е. она в 1.5 раза быстрее, чем 900-серии (у которой только 510 fps Full-HD).

Т.е. на GTX 950 при 30fps Full-HD будет 8 (возможно до 16-17) видеопотоков.
На GTX 960 4ГБ при 30fps Full-HD будет до 16-17 видеопотоков, но она стоит столько же, сколько 1060, т.е. её покупка не выгодна.
На GTX 1060 6ГБ при 30fps Full-HD будет до 25 видеопотоков. А при 10 fps – до 75 камер (но надо проверять, хватит ли видеопамяти).
При уменьшении разрешения или fps – пропорционально больше камер.

Обратите внимание, что не все видеокарты позволяют использовать функцию аппаратного ускорения в Xeoma. Точные требования зависят от 3 факторов: тип ОС, тип потока камеры и архитектура видеокарты. Ниже приведена таблица с их сочетаниями:

ОС Тип потока Минимальная архитектура
Windows H.264 Fermi
H.265 Pascal
Linux H.264 Maxwell
H.265 Pascal
MacOS H.264 Maxwell
H.265 Pascal

Колонка таблицы «Минимальная архитектура» указывает на архитектуру видеокарты, она прописана в характеристиках каждой отдельно взятой модели. Вам понадобится видеокарта такой же архитектуры, как в таблице, или более высокой. Список таких архитектур по возрастанию (актуален на февраль 2024 года):

  • Tesla
  • Fermi
  • Kepler
  • Maxwell
  • Pascal
  • Volta
  • Turing
  • Ampere
  • Ada Lovelace
  • Hopper

Например, на Linux вы можете использовать видеокарты с архитектурой Kepler для отображения клиентской части на экране, однако такая архитектура не подойдет для аппаратного ускорения.

Примечание: на компьютере должно быть достаточно и оперативной памяти. Желательно минимум 16Гб (от 200Мб на камеру).
Т.к. на декодирование через CUDA память также расходуется (более 140МБ на камеру Full-HD), то 6ГБ теоретически хватит на 40-42 камеры, 8ГБ – на 55-57 камер (при несколько меньшем fps). Иначе уже не хватит скорости видеокарты.

Начиная с версии Xeoma 22.3.16, некоторые из модулей аналитики могут работать с использованием CUDA; минимальные требования к видеокарте в этом случае одинаковы для всех таких модулей и типов ОС — Pascal. Список таких модулей:

  • Распознаватель объектов
  • Слежение за спортивным событием
  • Детектор пересечения линии
  • Детектор дыма

Клиент

Если сервер не занимается декодированием на своей стороне, то эту работу может взять на себя клиент. В целом, мы рекомендуем так и делать, поскольку такой подходит понижает нагрузку и на ЦП сервера, и на сеть, соединяющую сервер и клиент (см. галочку «Принудительное декодирование видео на клиенте (для всех пользователей)» в окне Редактирование прав пользователей). Стоит заметить, что это актуально только для камер, которые передают видео в формате H.264 или H.265; подавляющее большинство современных камер делают именно так.

Занимаясь декодированием, клиент тоже может применить аппаратное ускорение, это достигается за счёт либо видеокарты, либо ЦП. В отличие от сервера, работа клиента с аппаратным ускорением в значительно меньшей степени зависит от конкретных моделей и архитектур видеокарт. Для клиента ключевым фактором становятся видеодрайверы. Мы рекомендуем поддерживать свои видеодрайверы в актуальном состоянии.

Такая независимость от видов карт достигается за счёт особых технологий (API), которые поддерживаются как на стороне производителей видеокарт и процессоров, так и на стороне операционных систем. Ниже приведена таблица с их распределением:

ОС API Описание
Windows Intel Quick Sync Intel Quick Sync Video работает на процессорах Intel.
NVIDIA CUDA Compute Unified Device Architecture работает на видеокартах Nvidia.
DXVA2 DirectX Video Acceleration 2.0 работает с большинством видеокарт.
D3D11VA Direct3D 11 Video Acceleration работает с большинством видеокарт. Это более современный аналог для DXVA2.
Vulkan Vulkan работает с большинством видеокарт. Это более современный аналог для OpenGL.
Linux Intel Quick Sync Intel Quick Sync Video работает на процессорах Intel.
NVIDIA CUDA Compute Unified Device Architecture работает на видеокартах Nvidia.
VAAPI Video Acceleration API работает с большинством видеокарт.
VDPAU Video Decode and Presentation API for Unix работает с большинством видеокарт.
Vulkan Vulkan работает с большинством видеокарт. Это более современный аналог для OpenGL.
V4L2M2M Доступно только для ARM! Video4Linux работает с большинством видеокарт.

Надеемся, эта информация поможет!

Обновлено 11 декабря 2023

Читайте также:
Наши рекомендации по подбору оборудования