ROCm 媒体库(Media Libraries)实战指南:基于 rocDecode 与 rocJPEG 的 GPU 视频解码与图像处理
ROCm 媒体库Media Libraries实战指南基于 rocDecode 与 rocJPEG 的 GPU 视频解码与图像处理【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-buildROCm media libraries 为 AMD GPU 提供硬件加速的视频解码与图像处理能力是整个 ROCm 软件栈中负责多媒体负载的核心组件。本文以docs/components/media-libs.rst为主线深入讲解 rocDecodeAMD GPU 视频解码 SDK与 rocJPEGJPG 图像解码库的功能定位、支持范围、编译打包流程与安装方式并结合本仓库的构建脚本与组件清单给出可验证的源码级依据帮助读者在 ROCm 环境中落地视频/图像 GPU 加速方案。ROCm 媒体库在软件栈中的定位ROCmRadeon Open Compute软件栈以 GPU 计算为中心通常被划分为运行时、编译器、数学库、通信库等多个组件群组。媒体库Media libraries是其中独立的一类专注于多媒体数据的 GPU 加速处理。在本仓库的组件分类配置 docs/data/components-default.yaml 中媒体库被显式声明为media_libs分组media_libs Media libraries归属于该分组的组件共有两个组件分组定位rocDecodemedia_libs面向 AMD GPU 视频解码特性的高性能 SDKrocJPEGmedia_libs在 AMD GPU 上解码 JPG 图像的库两个组件的元数据group: *media_libs分别出现在 components-default.yaml 的rocDecode条目rtd_project: rocDecode、github_repo: rocm-systems/projects/rocdecode与 components-default.yaml 的rocJPEG条目rtd_project: rocJPEG、github_repo: rocm-systems/projects/rocjpeg中从仓库配置层面印证了二者同属媒体库分组的归类关系。同时在组件的清单manifest与构建清单repo manifest中rocDecode 与 rocJPEG 也被一并登记。例如 default.xml 中写有project groupsmathlibs namerocDecode /与project groupsmathlibs namerocJPEG /说明二者通过统一的 manifest 机制纳入 ROCm 组件仓库管理。支持的硬件与平台从当前仓库的组件版本清单 docs/data/components.yaml 可以看到媒体库的版本与支持范围rocDecode: { version: 1.8.0, support: Linux · Instinct/Radeon · Ryzen (gfx1150/gfx1151/gfx1152) } rocJPEG: { version: 1.6.0, support: Linux · Instinct/Radeon · Ryzen (gfx1150/gfx1151/gfx1152) }平台两个库均为Linux平台组件不支持 WindowsGPU 范围支持 AMDInstinct数据中心加速卡与Radeon消费级显卡Ryzen 处理器额外支持 Ryzen 平台且明确到架构代号gfx1150/gfx1151/gfx1152即基于 RDNA 架构的 Ryzen 集成 GPU。在 docs/data/components-previous.yaml 中记录的上一版本rocDecode: 1.8.0、rocJPEG: 1.5.0与当前版本rocJPEG 1.6.0对比可知媒体库会随 ROCm 发行版演进持续更新。若读者需要按历史发行版核对版本可以参考 compatibility-matrix-historical-6.0.csv 与 core-sdk-components-linux.rst 中的 Linux 组件清单。rocDecodeAMD GPU 视频解码 SDK功能与价值rocDecode 是官方定位为“High-performance SDK for access to video decoding features on AMD GPUs”的高性能视频解码 SDK见 media-libs.rst 及 components-default.yaml 中的组件描述。其核心价值在于将视频解码负载卸载到 AMD GPU利用 GPU 硬件编解码引擎如 VCN替代 CPU 软解显著提升吞吐、降低 CPU 占用提供统一的解码接口抽象供 FFmpeg、GStreamer 等多媒体框架及自研应用集成面向 Instinct数据中心推理/转码与 Radeon/Ryzen桌面与嵌入式场景两类硬件形态。从构建脚本看编译与打包流程本仓库的 tools/rocm-build/build_rocdecode.sh 提供了 rocDecode 在 ROCm 构建体系中的完整编译、打包逻辑是理解其工程形态的第一手源码证据# 跳过不支持的分发版老版本 CentOS/Debian 及 Azure Linux 等 if [ $DISTRO_ID centos-7 ] || \ [ $DISTRO_ID mariner-2.0 ] || \ [ $DISTRO_ID azurelinux-3.0 ] || \ [ $DISTRO_ID debian-10 ]; then echo Not building rocDecode for ${DISTRO_ID}. Exiting... return 0 fi init_rocm_common_cmake_params cmake \ ${rocm_math_common_cmake_params[]} \ -DROCM_DEP_ROCMCOREON \ -DROCDECODE_ENABLE_ROCPROFILER_REGISTERON \ ${COMPONENT_SRC} cmake --build $BUILD_DIR -- -j${PROC} cmake --build $BUILD_DIR -- install cmake --build $BUILD_DIR -- package几个值得注意的工程细节CMake 构建体系rocDecode 采用标准 CMake 流程configure → build → install → package构建目录、安装目录与打包目录由统一的compute_utils.sh工具函数管理依赖开关-DROCM_DEP_ROCMCOREON显式声明对 ROCm CoreROCm 核心运行时/公共基础设施的依赖保证解码库与 ROCm 运行时版本匹配性能分析注册-DROCDECODE_ENABLE_ROCPROFILER_REGISTERON启用 ROCProfiler 注册使解码内核可被 ROCm 性能分析工具如 rocprof / ROCm Compute Profiler采集便于对解码负载做性能剖析分发版裁剪centos-7、mariner-2.0、azurelinux-3.0、debian-10等发行版被显式跳过这与上面“仅支持现代 Linux 分发版”的事实相互印证多目标封装脚本末尾的case $TARGET in build|outdir|clean)暴露了统一 CLIbuild构建、outdir输出目录、clean清理可被上层构建系统按目标调用。安装方式安装 rocDecode 的最直接方式是从 ROCm 软件仓库安装预编译二进制包# Debian/Ubuntu 系安装前需配置 ROCm apt 源 sudo apt update sudo apt install rocdecode # RHEL/Rocky 系安装前需配置 ROCm yum 源 sudo dnf install rocdecode # openSUSE/SLES 系安装前需配置 ROCm zypper 源 sudo zypper install rocdecode提示包管理器命令因发行版而异且依赖已正确配置的 ROCm 软件源安装完成后可通过rocminfo确认 GPU 可见、并用dpkg -L rocdecode或rpm -ql rocdecode查看库文件与头文件的安装位置。rocJPEGAMD GPU 上的 JPG 图像解码库功能与价值rocJPEG 的官方定位是“Library for decoding JPG images on AMD GPUs”见 media-libs.rst 与 components-default.yaml。它解决的问题是图像解码尤其是 JPEG 解码是图像预处理管线中高频且计算密集的环节将 JPG 解码卸载到 GPU可并行处理大批量图像配合后续 GPU 上的缩放、颜色空间转换、归一化与推理消除 CPU↔GPU 数据回传瓶颈适合深度学习数据管线与图像批处理服务。从构建脚本看编译与打包流程对应构建脚本 tools/rocm-build/build_rocjpeg.sh 展示了 rocJPEG 的构建路径if [ $DISTRO_ID centos-7 ] || [ $DISTRO_ID sles-15.4 ] || \ [ $DISTRO_ID azurelinux-3.0 ] || [ $DISTRO_ID debian-10 ]; then echo Not building rocJPEG for ${DISTRO_ID}. Exiting... return 0 fi cmake -DROCM_DEP_ROCMCOREON -DROCJPEG_ENABLE_ROCPROFILER_REGISTERON $COMPONENT_SRC make -j8 make install make package cmake --build $BUILD_DIR -- -j${PROC} cpack -G ${PKGTYPE^^}与 rocDecode 高度一致的设计模式同样通过-DROCM_DEP_ROCMCOREON声明对 ROCm Core 的依赖同样通过-DROCJPEG_ENABLE_ROCPROFILER_REGISTERON启用 ROCProfiler 注册以支持性能分析跳过centos-7、sles-15.4、azurelinux-3.0、debian-10等旧发行版使用make流程并调用cpack -G ${PKGTYPE^^}生成 DEB/RPM 软件包最终产物由copy_if统一收集到包目录。两者的构建脚本并排阅读可以清晰看到 ROCm 组件工程的统一规范compute_utils.sh提供公共环境、set_component_src定位源码目录、stage2_command_args解析统一 CLI 参数、build_wheel/clean/outdir等目标提供生命周期管理。安装方式# Debian/Ubuntu 系 sudo apt update sudo apt install rocjpeg # RHEL/Rocky 系 sudo dnf install rocjpeg # openSUSE/SLES 系 sudo zypper install rocjpeg媒体库组件的仓库内证据汇总为便于读者在本仓库内继续追踪下表汇总了与媒体库直接相关的证据文件关注点仓库路径说明组件文档docs/components/media-libs.rst媒体库唯一官方入口文档组件分组docs/data/components-default.yamlmedia_libs分组及两个组件的元数据版本与支持范围docs/data/components.yamlrocDecode 1.8.0 / rocJPEG 1.6.0 及 GPU 范围历史版本docs/data/components-previous.yaml上一版本记录rocJPEG 1.5.0rocDecode 构建脚本tools/rocm-build/build_rocdecode.sh编译、安装、打包、清理全流程rocJPEG 构建脚本tools/rocm-build/build_rocjpeg.sh编译、安装、打包、清理全流程manifest 登记default.xml组件纳入统一清单管理Linux 组件清单docs/compatibility/include/core-sdk-components-linux.rst发行版兼容性核对总结ROCm 媒体库media libraries由rocDecodeGPU 视频解码 SDK与rocJPEGGPU JPG 图像解码库两个组件构成为 AMD Instinct / Radeon / Ryzengfx1150/1151/1152GPU 提供 Linux 平台上的硬件加速视频与图像解码能力。二者在组件配置中以media_libs分组登记在当前仓库中分别对应 1.8.0 与 1.6.0 版本从 build_rocdecode.sh 与 build_rocjpeg.sh 的构建脚本可以确认它们都采用 CMake/make 标准流程、依赖 ROCm CoreROCM_DEP_ROCMCOREON、支持 ROCProfiler 性能分析注册并被打包为 DEB/RPM 发行。用户既可以通过发行版包管理器直接安装预编译二进制也可以利用构建脚本在支持的发行版上自行编译打包从而在数据中心的视频转码/推理流水线或高性能图像预处理场景中落地 GPU 加速。【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考