NVDEC 应用说明
NVIDIA GPU 包含一个基于硬件的解码器(本文档中称为 NVDEC),它为多种流行的编解码器提供完全加速的基于硬件的视频解码。通过将完整的解码卸载到 NVDEC,图形引擎和 CPU 可以空闲下来执行其他操作。
NVDEC 支持远超实时的解码速度,这使其不仅适用于视频播放,还适用于转码场景。
NVDEC 中可用的硬件功能通过本文档中称为 NVDECODE API 的 API 公开。本文档提供有关 NVDEC 引擎的功能以及通过 NVDECODE API 公开的功能的信息。当前文档仅重点介绍当前视频编解码器 SDK 包相对于以前的 SDK 包的变化。要了解早期 SDK 中公开的功能,请参阅早期 SDK 包。
简介
NVDEC 功能
在高层次上,表 1 总结了通过 NVDECODE API 公开的 NVDEC 引擎的功能。
硬件特性 | 第一代 Maxwell GPU | 第二代 Maxwell GPU | Pascal GPU | Volta GPU | Turing/GA100/Hopper GPU | GA10x3 和 Ada GPU | Blackwell GPU |
---|---|---|---|---|---|---|---|
VC1 Simple、Main 和 Advanced 配置文件 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
MPEG4 Simple 和 Advanced Simple 配置文件 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
MPEG2 Simple 和 Main 配置文件 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
H.264 Baseline、Main、High 配置文件 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
VP8 | 否 | 是 | 是1 | 是 | 是 | 是 | 是 |
HEVC Main 和 Main 10 配置文件1 | 否 | 是1 | 是 | 是 | 是 | 是 | 是 |
VP9 Profile 01 | 否 | 是1 | 是 | 是 | 是 | 是 | 是 |
8192x8192 解码支持(仅限 HEVC 和 VP9) | 否 | 否 | 是1 | 是 | 是 | 是 | 是 |
多个 NVDEC2 | 否 | 否 | 否 | 否 | 是 | 是 | 是 |
HEVC 444 解码 | 否 | 否 | 否 | 否 | 是 | 是 | 是 |
AV1 Main Profile 解码 | 否 | 否 | 否 | 否 | 否 | 是 | 是 |
8192x8192 解码支持 (H264) | 否 | 否 | 否 | 否 | 否 | 否 | 是 |
H264 High10/High422 配置文件 | 否 | 否 | 否 | 否 | 否 | 否 | 是 |
HEVC main 422 10/12 配置文件 | 否 | 否 | 否 | 否 | 否 | 否 | 是 |
- 是:支持,否:不支持
- 1:在部分 GPU 中提供
- 2:在部分 GPU 中提供
- 3:GA10x GPU 包括所有基于 Ampere 架构的 GPU,GA100 除外
NVDEC 性能
NVDEC 原生支持多个硬件解码上下文,上下文切换开销可忽略不计。因此,在硬件性能限制和可用内存的范围内,应用程序可以同时解码多个视频。
硬件和软件为每个解码会话维护上下文,允许许多并发解码会话并行运行,而上下文切换开销极小。表 2 提供了基于 Maxwell、Pascal、Turing 和 Ampere 架构的 GPU 中 NVDEC 对 AV1、HEVC、VP9 和 H.264 编码码流的解码性能的指示性数据。性能因 GPU 等级(例如 Quadro、Tesla)而异,并且随着每个硬件的时钟速度(几乎)线性扩展。
GPU 架构 | 编解码器 | 性能(帧/秒) |
---|---|---|
Pascal | H.264 | 694 |
VP9 | 846 | |
HEVC | 810 | |
HEVC Main10 | 789 | |
Turing | H.264 | 771 |
VP9 | 932 | |
VP9 10 位 | 925 | |
HEVC | 1316 | |
HEVC Main10 | 1158 | |
Ampere | H.264 | 748 |
VP9 | 1075 | |
VP9 10 位 | 1120 | |
HEVC | 1415 | |
HEVC Main10 | 1299 | |
AV1 | 790 | |
Ada | H.264 | 903 |
VP9 | 1290 | |
VP9 10 位 | 1342 | |
HEVC | 1641 | |
HEVC Main10 | 1520 | |
AV1 | 1018 | |
Blackwell | H.264 | 2172 |
VP9 | 1445 | |
VP9 10 位 | 1498 | |
HEVC | 1872 | |
HEVC Main10 | 1818 | |
AV1 | 1119 |
- 所有测量均在 nvidia-smi 报告的最高视频时钟下完成(即 Pascal、Turing、Ampere、Ada 和 Blackwell 分别为 1544 MHz、1860 MHz、1665 MHz、2160 MHz、2362 MHz)。性能应根据目标 GPU 上 nvidia-smi 报告的视频时钟进行扩展。有关 nvidia-smi 的信息,请访问 https://developer.nvidia.com/nvidia-system-management-interface。
- 分辨率/输入格式:1920x1080/YUV 4:2:0
- 软件:Windows 11,视频编解码 SDK v13.0
- Hopper 和 GA100 GPU 包含与 Turing 架构相同的 NVDEC。因此,Hopper 和 GA100 GPU 上的解码性能与 Turing GPU 的解码性能相同,并按时钟速度进行缩放。要查看 GPU 上可用的时钟,请使用 NVIDIA 驱动程序附带的工具 nvidia-smi。
虽然 Maxwell、Pascal 和 Volta 世代的 GPU 每个芯片只有一个 NVDEC 引擎,但一些基于 Turing、Ampere、Ada、Hopper 和 Blackwell 架构的 GPU 每个芯片有多个 NVDEC 引擎。GH100 和 GB100 有 8 个 NVDEC。这提高了 GPU 的总解码吞吐量。NVIDIA 驱动程序负责在芯片上的多个 NVDEC 引擎之间进行负载平衡,因此应用程序不需要特殊的代码来利用多个解码器,并且可以自动从更高端 GPU 硬件上更高的解码器容量中受益。表 2 中列出的解码性能是每个 NVDEC 引擎的性能。因此,如果 Quadro 或 Tesla GPU 有 2 个 NVDEC,则将 表 2 中的相应数字乘以每个芯片的 NVDEC 数量,即可获得总最大性能(仅当运行多个并发解码会话时适用)。请注意,单个解码会话的性能不能超过每个 NVDEC 的性能,无论 GPU 上存在多少 NVDEC。所有 GeForce 产品都包含单个 NVDEC。
编程 NVDEC
有关所需驱动程序版本的信息,请参阅 SDK 发行说明。
NVDEC 的各种功能通过 NVIDIA 专有的应用程序编程接口(NVDECODE API)向应用程序软件公开。有关使用这些 API 的详细信息,请参阅视频解码器编程指南。
有关支持硬件加速解码的 GPU 的完整列表,请访问 https://developer.nvidia.com/nvidia-video-codec-sdk。
FFmpeg 支持
FFmpeg 是最流行的多媒体转码工具,广泛用于视频和音频转码。
NVIDIA GPU 中的视频硬件加速器可以有效地与 FFmpeg 配合使用,以显著加速视频解码、编码和端到端转码,并实现非常高的性能。
请注意,FFmpeg 是开源项目,其使用受特定许可和条款和条件的约束。
声明
本文档仅供参考,不应被视为对产品的特定功能、条件或质量的保证。NVIDIA Corporation(“NVIDIA”)不对本文档中包含的信息的准确性或完整性做出任何明示或暗示的陈述或保证,并且对本文档中包含的任何错误不承担任何责任。NVIDIA 对因使用此类信息或因使用此类信息而可能导致的侵犯专利或第三方其他权利的后果或使用不承担任何责任。本文档不构成开发、发布或交付任何材料(如下所定义)、代码或功能的承诺。
NVIDIA 保留随时对此文档进行更正、修改、增强、改进和任何其他更改的权利,恕不另行通知。
客户应在下订单前获取最新的相关信息,并应验证此类信息是否为最新且完整。
NVIDIA 产品根据订单确认时提供的 NVIDIA 标准销售条款和条件进行销售,除非 NVIDIA 和客户的授权代表签署的单独销售协议(“销售条款”)另有约定。NVIDIA 在此明确反对将任何客户通用条款和条件应用于购买本文档中引用的 NVIDIA 产品。本文档未直接或间接形成任何合同义务。
NVIDIA 产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命支持设备,也不适用于 NVIDIA 产品的故障或失灵可能合理预期会导致人身伤害、死亡或财产或环境损害的应用。NVIDIA 对在上述设备或应用中包含和/或使用 NVIDIA 产品不承担任何责任,因此,此类包含和/或使用由客户自行承担风险。
NVIDIA 不保证或声明基于本文档的产品将适用于任何特定用途。NVIDIA 不一定对每个产品的所有参数进行测试。客户全权负责评估和确定本文档中包含的任何信息的适用性,确保产品适合客户计划的应用并满足其要求,并为该应用执行必要的测试,以避免应用或产品的默认设置。客户产品设计的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档中包含的附加或不同的条件和/或要求。对于可能基于或归因于以下原因的任何默认设置、损坏、成本或问题,NVIDIA 不承担任何责任:(i) 以任何违反本文档的方式使用 NVIDIA 产品,或 (ii) 客户产品设计。
商标
NVIDIA、NVIDIA 徽标以及 cuBLAS、CUDA、CUDA Toolkit、cuDNN、DALI、DIGITS、DGX、DGX-1、DGX-2、DGX Station、DLProf、GPU、Jetson、Kepler、Maxwell、NCCL、Nsight Compute、Nsight Systems、NVCaffe、NVIDIA Deep Learning SDK、NVIDIA Developer Program、NVIDIA GPU Cloud、NVLink、NVSHMEM、PerfWorks、Pascal、SDK Manager、Tegra、TensorRT、TensorRT Inference Server、Tesla、TF-TRT、Triton Inference Server、Turing 和 Volta 是 NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。其他公司和产品名称可能是与其相关的各自公司的商标。