【官方文档地址】:使用 FFmpeg 和 NVIDIA GPU 硬件加速 ( PDF )

 

从 Kepler 一代开始的所有 NVIDIA® GPU 都支持完全加速的硬件视频编码和解码。在本文档的其余部分中,硬件编码器和硬件解码器分别称为 NVENC 和 NVDEC。

NVENC和NVDEC的硬件能力通过API(这里称为NVENCODE API和NVDECODE API)暴露在NVIDIA Video Codec SDK中,用户可以通过API访问NVENC和NVDEC的硬件加速能力。

FFmpeg 是最流行的多媒体转码软件,广泛用于视频和音频转码。NVENC 和 NVDEC 可以有效地与 FFmpeg 结合使用,显着加快视频解码、编码和端到端转码速度。

本文档介绍了通过 FFmpeg 在 NVIDIA GPU 上加速视频编码、解码和端到端转码的方法,FFmpeg 使用 NVIDIA 视频编解码器 SDK 中公开的 API。

介绍

 

设置

 

硬件设置

 

具有 NVIDIA GPU 加速功能的 FFmpeg 需要具有 Linux 或 Windows 操作系统以及受支持的 NVIDIA GPU 的系统。

 

有关受支持 GPU 的列表,请参阅https://developer.nvidia.com/nvidia-video-codec-sdk。

 

对于本文档的其余部分,假设所使用的系统具有同时具有 NVENC 和 NVDEC 的 GPU。

 

软件设置

 

先决条件

 

FFmpeg 同时支持 Windows 和 Linux。FFmpeg 已使用 Microsoft Visual Studio 2013 SP2 及更高版本 (Windows)、MinGW (msys2-x86_64-20161025) (Windows) 和 gcc 4.8 及更高版本 (Linux) 编译器进行编译和测试。

 

FFmpeg 需要单独的 git 存储库 nvcodec-headers 来进行 NV 加速的 ffmpeg 构建。

 

要编译 FFmpeg,必须在系统上安装CUDA 工具包,但运行FFmpeg 编译的二进制文件 不需要 CUDA 工具包。

 

在使用FFmpeg之前,建议先查阅FFmpeg文档,注意其使用的Video Codec SDK版本,并确保安装了该版本Video Codec SDK所需的最低驱动程序。

 

编译 FFmpeg

 

FFmpeg 是一个开源项目。下载 FFmpeg 源代码存储库并使用适当的编译器进行编译。

 

有关构建 FFmpeg 的更多信息,请访问:https ://trac.ffmpeg.org/wiki/CompilationGuide

为 Linux 编译

 

所有 Linux 平台均支持具有 NVIDIA GPU 加速功能的 FFmpeg。

 

要在 Linux 上编译 FFmpeg,请执行以下操作:

  • 克隆 ffnvcodec

 

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

 

  • 安装 ffnv 编解码器

 

cd nv-codec-headers && sudo make install && cd –

 

  • 克隆 FFmpeg 的公共 GIT 存储库。

 

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/

 

  • 安装必要的软件包。

 

sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev

 

  • 配置

 

./configure --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --disable-static --enable-shared

 

  • 编译

 

make -j 8

 

  • 安装库。

 

 

sudo make install

 

 

为 Windows 编译

 

所有 Windows 平台均支持具有 NVIDIA GPU 加速功能的 FFmpeg,并通过 Media Autobuild Suite 进行编译

 

要在 Windows 上编译 FFmpeg,请执行以下操作:

  • 克隆媒体自动构建套件 GIT 存储库。

 

git clone https://github.com/m-ab-s/media-autobuild_suite.git

 

  • 转到文件夹 media-autobuild_suite 并运行 media-autobuild_suite.bat
  • 选择64位构建系统
  • 选择非免费许可证
  • 选择您想要包含在构建中的库(某些库可能存在许可证限制)

 

选择所有选项后,Media Autobuild Suite 脚本将下载 MingW 环境和所有必需的依赖项。它还将克隆 FFMPEG 和其他相关存储库。然后,该脚本将编译所有组件并构建可在 build\ffmpeg-git 子文件夹中找到的最终可执行文件。

 

针对 Linux 的 Windows 子系统 (WSL) 进行编译

 

WSL 支持具有 NVIDIA GPU 加速功能的 FFmpeg。要在 WSL 上编译 FFmpeg,请按照编译 Linux中指定的步骤进行操作。

 

常见问题以及解决这些问题的技巧

  • 常见编译问题
  1. FFmpeg TOT 有时可能会损坏。请检查发布版本是否已损坏,或使用较旧的快照。
  2. 确保您在 64 位系统中使用 mingw64。使用 mingw32 会导致诸如 - “ Relocation truncated to fit - R_X86_64_32”之类的错误。
  3. Msys(而不是 Msys2)无法启动 mingw64 命令 shell。它只能启动 mingw32 shell。
  4. 确保 cuda.h 与 SDK 头文件一起在 /usr/local/cuda/include 中可用。启用 NVCUVID 是必需的,否则配置将导致错误 - “ CUDA Not found”。
  5. 未指定--extra-ldflags正确的格式将导致错误 - 参数无法识别。
  6. CUDA 工具包版本 11.0 或更高版本中的 nvcc 不支持“compute_30”的编译。这将导致configure脚本失败并显示消息'ERROR: failed checking for nvcc.'。要解决此错误,请使用--nvccflags="-gencode arch=compute_52,code=sm_52 -O2"它覆盖默认的 nvcc 标志。
  • 常见的运行时问题
  1. 使用-vsync 0解码选项可防止 FFmpeg 创建具有重复和额外帧的输出 YUV。
  2. 运行 FFmpeg 时, Msys2 会出现诸如“ Libbz2-1.dll missing from your computer”之类的错误。此错误的解决方法 - 将 C:\msys64\mingw64\bin 下的所有 DLL 复制到 ffmpeg.exe 所在的文件夹中。

 

 

基础测试

 

 

一旦编译了支持 NVIDIA 硬件加速的 FFmpeg 二进制文件,就应该测试硬件加速视频转码以确保一切正常。为了自动检测 NV 加速视频编解码器并将视频帧保留在 GPU 内存中以进行转码,在进一步的代码片段中使用了 ffmpeg cli 选项“-hwaccel cuda -hwaccel_output_format cude”。

 

FFMPEG 中的 NVENC 插件支持以下编解码器: h264_nvenc - H264 编码器 hevc_nvenc - HEVC 编码器 av1_nvenc - AV1 编码器 本文档中的命令行使用 h264_nvenc,对于 HEVC 编码应替换为 hevc_nvenc,对于 AV1 编码应替换为 av1_nvenc。

1:1 HWACCEL 转码,无需缩放

 

以下命令读取文件input.mp4并将其转码为具有相同分辨率和相同音频编解码器的 H.264 视频的 output.mp4 。

 

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4

 

 

1:1 HWACCEL 转码与缩放

 

以下命令读取文件input.mp4并将其转码为具有 720p 分辨率和相同音频编解码器的 H.264 视频的output.mp4 。以下命令使用 cuvid 解码器中内置的缩放器。

 

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda –resize 1280x720 -i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4

 

 

cuvid 解码器中也有一个内置的裁剪器。以下命令说明了裁剪的用法。(-裁剪(上)x(下)x(左)x(右))

 

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda –crop 16x16x32x32 -i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4

 

 

或者可以使用scale_cuda或scale_npp调整大小过滤器,如下所示

 

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf scale_cuda=1280:720 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4 ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf scale_npp=1280:720 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4

 

 

带缩放功能的 1:N HWACCEL 转码

 

以下命令读取文件input.mp4并将其转码为具有不同输出分辨率和比特率的两个不同的 H.264 视频。请注意,在使用 GPU 视频编码器和解码器时,此命令还使用 FFmpeg 中的缩放过滤器 ( scale_npp ) 将解码的视频输出缩放为多个所需的分辨率。这样做可以确保消除内存传输(系统内存到视频内存,反之亦然),并且在 GPU 硬件上以尽可能高的性能执行转码。

 

输入:输入.mp4

 

输出:1080p、720p(音频与输入相同)

 

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf scale_npp=1920:1080 -c:a copy -c:v h264_nvenc -b:v 5M output1.mp4 -vf scale_npp=1280:720 -c:a copy -c:v h264_nvenc -b:v 8M output2.mp4

 

 

从 YUV 或 RAW 数据进行 1:N HWACCEL 编码

 

从 YUV 或 RAW 文件进行编码可能会导致磁盘 I/O 成为瓶颈,建议从 SSD 进行此类编码以获得最大性能。以下命令读取文件input.yuv并将其以不同的输出比特率编码为四个不同的 H.264 视频。请注意,此命令只会为所有编码操作生成单个 YUV 加载,从而提高磁盘 I/O 效率,从而提高整体编码性能。

 

输入:input.yuv(420p、1080p)

 

输出:1080p (8M)、1080p (10M)、1080p (12M)、1080p (14M)

 

ffmpeg -y -vsync 0 -pix_fmt yuv420p -s 1920x1080 -i input.yuv -filter_complex "[0:v]hwupload_cuda,split=4[o1][o2][o3][o4]" -map "[o1]" -c:v h264_nvenc -b:v 8M output1.mp4 -map "[o2]" -c:v h264_nvenc -b:v 10M output2.mp4 -map "[o3]" -c:v h264_nvenc -b:v 12M output3.mp4 -map "[o4]" -c:v h264_nvenc -b:v 14M output4.mp4

 

 

像素格式 (pix_fmt) 应更改为 yuv444p/p010/yuv444p16,分别编码 YUV 444、420-10 和 444-10 文件。

 

具有缩放功能的多个 1:N HWACCEL 转码

 

应使用此方法来充分发挥 GPU 硬件加速转码的潜力。转码的典型工作负载之一包括以不同的分辨率和比特率对视频进行转码和存档,以便以后可以将它们提供给不同的客户端。以下命令读取文件input1.mp4作为输入在 GPU 硬件中对其进行解码,在硬件中缩放输入,然后将 H.264 视频重新编码为480p 的output11.mp4并使用 GPU 硬件编码器输出 240p 的12.mp4 。同时它读取文件input2.mp4并将其转码为720p 的output21.mp4输出480p 的 22.mp4 作为 H.264 视频。这些都是使用单个命令行来实现的。

 

输入:输入1.mp4,输入2.mp4

 

输出:480p 240p(来自输入1.mp4)、720p。480p(来自 input2.mp4)(音频与输入相同)

 

ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -i input1.mp4 -hwaccel cuda -hwaccel_output_format cuda -i input2.mp4 -map 0:0 -vf scale_npp=640:480 –c:v h264_nvenc -b:v 1M output11.mp4 -map 0:0 -vf scale_npp=320:240 –c:v h264_nvenc -b:v 500k output12.mp4 -map 1:0 -vf scale_npp=1280:720 –c:v h264_nvenc -b:v 3M output21.mp4 -map 1:0 -vf scale_npp=640:480 –c:v h264_nvenc -b:v 2M output22.mp4

 

 

带缩放的多个 1:N 转码(软件解码 -> 硬件缩放 -> 硬件编码)

 

在某些情况下,需要通过软件来进行视频解码。例如,考虑硬件编码器比解码器具有更多容量的情况。为了在这种情况下充分发挥编码器硬件的潜力,最好在硬件中运行部分解码工作负载(直到硬件解码器饱和),而其余部分在软件中运行。

 

以下命令读取文件input1.mp4,在软件中对其进行解码,在硬件中缩放输入,并将其转码为480p 的output11.mp4并以 240p输出 12.mp4作为 H.264 视频,同时读取文件input2.mp4并将其转码为 720p输出21.mp4输出480p 的 22.mp4 作为 H.264 视频。

 

输入:输入1.mp4,输入2.mp4

 

输出:480p 240p(来自输入1.mp4)、720p。480p(来自 input2.mp4)(音频与输入相同)

 

ffmpeg -y -init_hw_device cuda=foo:bar -filter_hw_device foo \ -i input1.mp4 -i input2.mp4 \ -map 0:0 -vf hwupload,scale_npp=640:480 –c:v h264_nvenc -b:v 1M \ output11.mp4 \ -map 0:0 -vf hwupload,scale_npp=320:240 –c:v h264_nvenc -b:v 500k \ output12.mp4 \ -map 1:0 -vf hwupload,scale_npp=1280:720 –c:v h264_nvenc -b:v 2M \ output21.mp4 \ -map 1:0 -vf hwupload,scale_npp=640:480 –c:v h264_nvenc -b:v 1M \ output22.mp4

 

质量检测

 

 

一旦确认基本 FFmpeg 设置正常工作,FFmpeg 命令行上提供的其他选项可用于测试编码、解码和转码。

 

本章列出了使用 NVENC 和 NVDEC 加速视频编码、解码和转码的 FFmpeg 命令。

视频编码

 

编码视频的质量取决于编码器使用的各种功能。要编码 720p YUV,请使用以下命令。

 

ffmpeg -y -vsync 0 –s 1280x720 –i input.yuv -c:v h264_nvenc output.mp4

 

 

这会生成包含 H264 编码视频的 MP4 格式的输出文件 (output.mp4)。

 

视频编码可大致分为两类用例:

  • 容忍延迟的高质量:在此类用例中,允许延迟。可以使用 B 帧、前瞻、参考 B 帧、可变比特率 (VBR) 和更高 VBV 缓冲区大小等编码器功能。典型用例包括云转码、录制和归档等。
  • 低延迟:在此类用例中,延迟应该很低,可以低至 16 毫秒。在此模式下,B 帧被禁用,使用恒定比特率模式,并且 VBV 缓冲区大小保持非常低。典型用例包括实时游戏、直播和视频会议等。由于上述限制,这种编码模式导致编码质量较低。

 

NVENCODEAPI 支持多种用于调整质量、性能和延迟的功能,这些功能通过 FFmpeg 命令行公开。建议根据用例启用功能和命令行选项。

 

视频解码

 

FFmpeg 视频解码器使用起来很简单。要从input.mp4解码输入比特流,请使用以下命令。

 

ffmpeg -y -vsync 0 -c:v h264_cuvid -i input.mp4 output.yuv

 

 

这会生成 NV12 格式的输出文件 ( output.yuv )。

 

要在单个 FFmpeg 进程中同时解码多个输入比特流,请使用以下命令。

 

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i input1.264 -hwaccel cuda -hwaccel_output_format cuda -i input2.264 -hwaccel cuda -hwaccel_output_format cuda -i input3.264 -filter_complex "[0:v]hwdownload,format=nv12[o0];[1:v]hwdownload,format=nv12[o1];[2:v]hwdownload,format=nv12[o2]" -map "[o0]" -f rawvideo output1.yuv -map "[o1]" -f rawvideo output2.yuv -map "[o2]" -f rawvideo output3.yuv

 

 

每个解码操作使用一个单独的线程,在所有线程之间共享一个 Cuda 上下文,并生成 NV12 格式的输出文件 (outputN.yuv)。

 

用于耐延迟高质量转码的命令行

 

输入:输入.mp4

 

输出:分辨率与输入相同,比特率= 5M(音频与输入相同)

  • 慢速预设

 

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -c:a copy -c:v h264_nvenc -preset p6 -tune hq -b:v 5M -bufsize 5M -maxrate 10M -qmin 0 -g 250 -bf 3 -b_ref_mode middle -temporal-aq 1 -rc-lookahead 20 -i_qfactor 0.75 -b_qfactor 1.1 output.mp4

 

  • 中预设

 

在上面的命令行中使用 -preset p4 而不是 -preset p6。

  • 快速预设

 

在上面的命令行中使用 -preset p2 而不是 -preset p6。

 

用于低延迟转码的命令行

 

输入:input.mp4 (30fps)

 

输出:分辨率与输入相同,比特率= 5M(音频与输入相同)

  • 低延迟高品质

 

ffmpeg -y -vsync 0 -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -c:a copy -c:v h264_nvenc -preset p6 -tune ll -b:v 5M -bufsize 5M -maxrate 10M -qmin 0 -g 250 -bf 3 -b_ref_mode middle -temporal-aq 1 -rc-lookahead 20 -i_qfactor 0.75 -b_qfactor 1.1 output.mp4

 

  • 低延迟高性能

 

在上面的命令行中使用 -preset p2 而不是 -preset p6。

高级质量设置

 

展望

 

Lookahead 使编码器能够缓冲指定数量的帧、估计其复杂性并根据其复杂性按比例在这些帧之间适当地分配比特,从而提高视频编码器的速率控制精度。这通常会带来更好的质量,因为编码器可以将与复杂性成比例的比特分配到更多的帧上。前瞻帧的数量应至少为 B 帧的数量 + 1,以避免 CPU 停顿。建议提前 10-20 帧以获得最佳质量优势。

 

要启用前瞻,请在 FFmpeg 命令行上使用-rc-lookahead NN= 帧数) 选项。

 

自适应量化 (AQ)

 

此功能通过根据序列的空间和时间特性调整编码量化参数 (QP)(在速率控制算法评估的 QP 之上)来提高视觉质量。NVENC 支持两种类型的 AQ,如下所述。AQ 内部使用 CUDA 进行复杂性估计,这可能会对性能和图形引擎利用率产生轻微影响。

 

空间AQ

 

空间 AQ 模式根据帧的空间特性调整 QP 值。由于低复杂度平坦区域在视觉上比高复杂度细节区域更容易感知质量差异,因此以具有高空间细节的区域为代价将额外的比特分配给帧的平坦区域。尽管空间 AQ 提高了编码视频的可感知视觉质量,但在大多数情况下,所需的位重新分配会导致峰值信噪比 (PSNR) 下降。因此,在基于 PSNR 的评估过程中,应关闭该功能。空间 AQ 算法可以通过指定控制 QP 值变化的 aq-strength 参数来控制,值越大,QP 变化越多。AQ 强度范围为 1-15。

 

要启用空间 AQ,请在 FFmpeg 命令行上使用 -spatial-aq 1 选项和 -aq-strength 8(范围为 1 到 15)。如果未指定值,则驱动程序自动选择强度。

 

时间AQ

 

时间 AQ 尝试根据序列的时间特性调整编码量化参数 (QP)(在速率控制算法评估的 QP 之上)。时间 AQ 通过调整帧间恒定或低运动但具有高空间细节的区域的 QP 来提高编码帧的质量,从而使它们成为未来帧的更好参考。将额外的比特分配给参考帧中的此类区域比将它们分配给参考帧中的残差更好,因为这有助于提高整体编码视频质量。如果帧内的大部分区域几乎没有运动或没有运动,但具有高空间细节(例如高细节的非运动背景),则启用时间 AQ 将受益最多。

 

时间 AQ 的潜在缺点之一是启用时间 AQ 可能会导致 GOP 内每帧消耗的比特波动较大。I/P 帧将比平均 P 帧大小消耗更多的比特,而 B 帧将消耗更少的比特。尽管目标比特率将保持在 GOP 级别,但与没有时间 AQ 的情况相比,GOP 内帧大小从一帧到下一帧的波动更大。如果 GOP 内的每个帧大小都需要严格的 CBR 配置文件,则不建议启用临时 AQ。要启用临时 AQ,请在 FFmpeg 命令行上使用 -temporal_aq 1 选项。

性能评估与优化

 

 

多种因素会影响 GPU 上硬件加速转码的性能。为您的工作负载获得最高性能需要进行一些调整。本节提供了一些测量和优化端到端转码性能的技巧。

 

NVIDIA 视频编解码器 SDK 文档将 GPU 硬件加速编码器和解码器的性能发布为独立数字,使用 SDK 中包含的高性能编码或解码应用程序进行测量。尽管 FFmpeg 软件经过高度优化,但其性能略低于 SDK 文档中报告的性能,这主要是由于软件开销和 FFmpeg 代码中的额外设置/初始化时间造成的。因此,为了使用 FFmpeg 获得高转码吞吐量,必须使硬件编码器和解码器引擎饱和,以便一个会话的初始化时间开销隐藏在其他会话的转码时间后面。这可以通过在硬件上运行多个并行编码/解码会话来实现(请参阅第1 节:N HWACCEL 从 YUV 或 RAW 数据进行编码)。在这种情况下, FFmpeg 的聚合转码性能与理论上预期的硬件性能非常匹配。

衡量总体绩效

 

要测量 GPU 硬件加速聚合性能,请按照以下步骤操作:

  1. 并行运行多个同时会话(例如 4 个 FFmpeg 会话),每个会话执行转码。
  2. 确保输入具有大量帧(建议视频超过 15 秒),以便可以忽略初始化时间开销。
  3. 测量每次转码所需的时间。
  4. 导出以每秒帧数 (FPS) 为单位的总体性能。

 

减少初始化时间的设置

 

为了准备较长的视频以进行流式传输,它们通常被分成较小的块,并且每个块都单独编码。这种基于块的编码避免了错误传播,为流媒体带宽适应提供了清晰的边界,并有助于并行服务器上的转码工作负载。然而,使用 GPU 硬件加速转码对较小的视频块进行转码会带来挑战,因为每个 FFmpeg 进程的初始化时间开销变得很大。

 

为了最大限度地减少将M 个输入文件转码为MN 个输出文件时的开销(即,当M 个输入中的每一个转码为N 个输出时),最好尽量减少启动的 FFmpeg 进程的数量(请参见第1 节:从 YUV 或 N HWACCEL 编码)原始数据,例如命令行)。

 

此外,请遵循以下提示来减少 FFmpeg 初始化时间开销:

  • 设置以下环境变量:

 

export CUDA_VISIBLE_DEVICES=0 // (Use ID for the GPU device which you plan to use for transcode) export CUDA_DEVICE_MAX_CONNECTIONS=2

 

  • 使用 FFmpeg 命令行,例如第1:N HWACCEL 缩放转码和从 YUV 或 RAW 数据进行 1:N HWACCEL 编码中的命令行。这些命令行在多个转码会话之间共享 CUDA 上下文,从而显着减少 CUDA 上下文初始化时间开销。

 

通知

 

 

注意

 

本文档仅供参考,不应被视为对产品特定功能、状况或质量的保证。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 深度学习 SDK、NVIDIA 开发人员计划、NVIDIA GPU Cloud、NVLink、NVSHMEM、PerfWorks、Pascal、SDK Manager、Tegra、TensorRT、TensorRT 推理服务器、Tesla、TF-TRT、Triton 推理服务器、Turing 和 Volta 是NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。其他公司和产品名称可能是与其相关的各个公司的商标。