GPU 加速的 JPEG 解码器、编码器和转码器
nvJPEG 库是一个高性能 GPU 加速库,用于解码、编码和转码 JPEG 格式的图像。nvJPEG2000 库用于解码 JPEG 2000 格式的图像。与仅使用 CPU 的解码相比,依赖 nvJPEG 或 nvJPEG2000 进行解码的应用程序可提供更高的吞吐量和更低的延迟。
nvJPEG
nvJPEG 库为计算机视觉应用 (例如图像分类、物体检测和图像分割) 中使用的常见 JPEG 格式提供低延迟解码、编码和转码。
nvJPEG 主要特性
- 使用 CPU 和 GPU 进行混合解码
- A100 GPU 上基准 JPEG 解码的硬件加速
- 单张图像和批量图像解码
- 单相和多相解码
- 将色彩空间转换为 RGB、BGR、RGBI、BGRI 和 YUV
- 库的输入位于主机显存中,输出位于 GPU 显存中
- 用户为设备和固定主机内存分配提供内存管理器
开始使用 nvJPEG
- 有关 nvJPEG 的最新版本,请下载 CUDA 工具包。
- 如果您使用的是 CUDA 工具包 10.0 或 9.0,请下载 nvJPEG 安装程序。
- nvJPEG 文档
- nvJPEG 示例 在 GitHub 上
- 技术博客:利用 NVIDIA A100 GPU 上的硬件 JPEG 解码器和 NVIDIA nvJPEG 库
nvJPEG 性能
多线程解码速度

与 V100 上的 CUDA 解码和仅使用 CPU 的解码相比,A100 上的硬件解码速度有所提升。
CPU:英特尔至强铂金 8168@2GHz 3.7 GHz Turbo (Skylake) HT 开启
编码速度

CPU 与 V100 和 A100 GPU 之间常见图像大小和格式的 JPEG 基准编码吞吐量比较。
CPU:英特尔至强铂金 8168@2GHz 3.7 GHz Turbo (Skylake) HT 开启
nvJPEG2000
nvJPEG2000 库适用于在深度学习、医学成像、数字病理学、遥感和数字电影应用等领域的研究中采用 JPEG 2000 格式图像的应用开发者和研究人员。nvJPEG2000 可读取和解码 CPU 内存中的 JPEG 2000 格式图像数据。解码输出位于 GPU 显存中。该库依赖于 CPU 和 GPU 进行解码。
nvJPEG2000 主要特性
- 输出格式:具有任意宽度和高度的灰度和彩色图像
- 压缩技术:有损 (小波 CDF 9/ 7) 和无损 (小波 CDF 5/ 3) 图像压缩和解压缩
- 支持 JP2 文件格式和 JPEG2000 代码流
nvJPEG2000 性能
无损解码速度提升 4 倍

无损:5-3 小波转换
CPU:英特尔至强金牌 6240@2GHz 3.9 GHz Turbo (Cascade Lake) HT 开启
有损解码速度提高 7 倍

有损:9-7 小波转换
CPU:英特尔至强金牌 6240@2GHz 3.9 GHz Turbo (Cascade Lake) HT 开启
资源
- 技术博客:利用 NVIDIA A100 GPU 上的硬件 JPEG 解码器和 NVIDIA nvJPEG 库
- 相关库和软件:
- 如有疑问或反馈,请联系 nvjpeg@nvidia.com
- 要提出功能请求或报告问题,请访问 NVIDIA 开发者网站。