← Обратно к Методам снижения нагрузки
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
Читайте также:
Наши рекомендации по подбору оборудования