ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AMD ROCm 数学与计算库全景指南:roc*/hip* 双层架构与 16 大核心库深度解析

AMD ROCm 数学与计算库全景指南:roc*/hip* 双层架构与 16 大核心库深度解析 AMD ROCm 数学与计算库全景指南roc*/hip* 双层架构与 16 大核心库深度解析【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build本文基于 docs/components/math-and-compute-libs.rst 展开系统梳理 ROCm Core SDK 中数学与计算库的完整组成、roc*/hip* 双层设计原理、每个库的功能定位与版本信息并结合本仓库的组件清单、TOC 配置与源码清单帮助开发者在构建 GPU 加速应用线性代数、FFT、随机数、深度学习时快速选型与上手。读完本文你将掌握 ROCm 数学库家族的全貌、原生实现与移植层的关系以及如何在本仓库中定位每个库的版本与文档入口。ROCm 数学与计算库Core SDK 的计算核心ROCm 数学与计算库Math and Compute Libraries是 ROCm Core SDK 的组成部分为开发者提供 GPU 加速的常见数值运算实现覆盖四大领域稠密与稀疏线性代数Dense and Sparse Linear Algebra快速傅里叶变换FFTs随机数生成Random Number Generation深度学习原语Deep Learning Primitives这些库以预编译库、头文件库的形式随 ROCm 发行供 HIP 程序直接链接调用。它们在整个软件栈中处于运行时/编译器之上、应用框架之下的中间层向上支撑 PyTorch、JAX 等 AI 框架向下依托 HIP 运行时与 AMD GPU 驱动。你可以通过本仓库的文档目录结构docs/sphinx/_toc.yml.in看到数学与计算库被组织在 Components → ROCm Core SDK → Math and compute libraries 分组下共收录 16 个项目条目是 Core SDK 中规模最大的组件分组。核心设计roc* 原生实现与 hip* 移植层理解 ROCm 数学库家族的关键在于其命名约定背后的双层架构前缀定位实现方式roc*面向 AMD GPU 的原生高性能实现使用 HIP 语言编写深度针对 AMD 硬件CDNA/RDNA 架构优化hip*可移植的封装层wrapper实现与 NVIDIA CUDA 等价 API支持在多个后端之间切换marshalling用一句话概括roc*是真材实料的 AMD 原生库hip*是让 CUDA 代码换层皮就能跑在 AMD GPU 上的兼容接口。hip*系列通过 marshalling 机制将 API 调用分发到不同后端例如 hipBLAS 同时支持 rocBLAS 与 cuBLAS 两个后端——这意味着同一份调用代码在 AMD GPU 上走 rocBLAS在 NVIDIA GPU 上走 cuBLAS从而让 CUDA 应用以最小代码改动迁移到 AMD 平台。这一设计在 docs/data/components-default.yaml 中对每个组件的描述里得到了印证例如 hipBLAS 被描述为 BLAS-marshalling library that supports rocBLAS and cuBLAS backends。hip* 与 roc* 对应关系速查功能域原生实现AMD 专属移植封装CUDA 等价 API稠密 BLASrocBLAShipBLASBLAS 扩展Lt—hipBLASLtLAPACK 稠密求解rocSOLVERhipSOLVER稀疏 BLASrocSPARSEhipSPARSE / hipSPARSELtFFTrocFFThipFFT随机数rocRANDhipRAND并行原语rocPRIMhipCUB并行算法rocThrust—混合精度 MMArocWMMA—深度学习MIOpen、Composable Kernel—16 大核心库逐一解析以下按功能域分组结合 math-and-compute-libs.rst 的官方描述与 components-default.yaml 的补充说明展开。稠密线性代数BLAS / LAPACKrocBLAS基于 HIP 语言、运行在 ROCm 运行时与工具链之上的 BLAS基础线性代数子程序实现提供 GEMM矩阵乘法等核心运算。hipBLASBLAS marshalling 库支持 rocBLAS 与 cuBLAS 后端。CUDA 用户若熟悉 cuBLAS 的cublas*命名迁移时只需替换为对应的hipblas*接口。hipBLASLt提供通用矩阵-矩阵运算的灵活 API功能超越传统 BLAS 库类似 cuBLASLt 的定位面向需要精细控制 GEMM 执行细节如布局、精度组合、算法选择的性能敏感场景。rocSOLVERLAPACK 例程的 ROCm 实现同样使用 HIP 编写针对 AMD 最新的独立 GPUdiscrete GPUs优化覆盖线性方程组求解、特征值/奇异值分解SVD、矩阵分解LU/QR/Cholesky等。hipSOLVERLAPACK marshalling 库支持 rocSOLVER 与 cuSOLVER 后端让使用 cuSOLVER 的应用可以低成本迁移到 HIP 层。稀疏线性代数rocSPARSE在 ROCm 运行时与工具链上为稀疏计算提供 BLAS 式通用接口HIP 实现支持 CSR、COO 等常见稀疏存储格式下的 SpMV、SpMM 等运算。hipSPARSE稀疏 marshalling 库支持 rocSPARSE 与 cuSPARSE 后端。hipSPARSELt面向稀疏矩阵-矩阵运算的 marshalling 库支持多个后端需要注意的是根据 docs/data/components.yaml 的记录当前版本0.2.9的平台支持范围较窄仅支持 Linux/Windows 上的 Instinct 系列gfx950/gfx942选型前务必核对目标 GPU 架构。快速傅里叶变换FFTrocFFT使用 HIP 编写的 FFT 软件库提供一维/多维 FFT 变换能力。hipFFTFFT marshalling 库支持 rocFFT 或 cuFFT 后端使既有 cuFFT 代码可平滑迁移。随机数生成rocRAND提供伪随机数pseudorandom与拟随机数quasirandom生成函数支持多种分布如均匀、正态、泊松等。hipRAND将使用 cuRAND 的 CUDA 应用移植到 HIP 层API 与 cuRAND 对齐。并行原语与并行算法rocPRIM面向 HIP 的头文件库header-only提供并行原语如规约reduce、扫描scan、排序、直方图、设备级选择等。hipCUB建立在 rocPRIM 或 CUB 之上的轻量头文件封装库让使用 CUB 库的项目能够移植到 HIP 层。rocThrust并行算法库提供类似 C STL 的并行容器与算法抽象transform、reduce、sort 等提升并行代码的开发效率与可读性。深度学习与矩阵乘累加MMAMIOpenAMD 的开源深度学习库为卷积神经网络CNN等深度学习工作负载提供 GPU 加速原语是 PyTorch 等框架在 ROCm 上运行的关键底层依赖。Composable KernelCK提供一套编程模型用于跨多种架构编写机器学习工作负载的性能关键 kernel。它的价值在于可组合开发者可以像拼积木一样组合 kernel 的各个部件数据布局、张量运算、向量化等在保持高性能的同时降低手工优化成本。rocWMMAC 库用于加速混合精度mixed-precision矩阵乘累加MMA运算直接对接 AMD GPU 的矩阵指令单元是 FP16/BF16 等混合精度 GEMM 场景的重要工具。版本与平台支持速览本仓库通过 docs/data/components.yaml 维护当前发布therock-7.14的组件版本清单数学与计算库的完整版本如下组件版本平台支持Composable Kernel1.2.0Linux/Windows · Instinct/RadeonMIOpen3.5.2Linux/Windows · Instinct/Radeon/RyzenhipBLAS3.5.0Linux/Windows · Instinct/Radeon/RyzenhipBLASLt1.4.1Linux/Windows · Instinct/Radeon/RyzenhipCUB4.5.0Linux/Windows · Instinct/Radeon/RyzenhipFFT1.0.24Linux/Windows · Instinct/Radeon/RyzenhipRAND3.4.0Linux/Windows · Instinct/Radeon/RyzenhipSOLVER3.5.0Linux/Windows · Instinct/Radeon/RyzenhipSPARSE4.6.0Linux/Windows · Instinct/Radeon/RyzenhipSPARSELt0.2.9Linux/Windows · Instinctgfx950/gfx942rocBLAS5.5.0Linux/Windows · Instinct/Radeon/RyzenrocFFT1.0.38Linux/Windows · Instinct/Radeon/RyzenrocPRIM4.5.0Linux/Windows · Instinct/Radeon/RyzenrocRAND4.5.0Linux/Windows · Instinct/Radeon/RyzenrocSOLVER3.35.0Linux/Windows · Instinct/Radeon/RyzenrocSPARSE4.7.0Linux/Windows · Instinct/Radeon/RyzenrocThrust4.5.0Linux/Windows · Instinct/Radeon/RyzenrocWMMA2.2.1Linux/Windows · Instinct/Radeon/Ryzen从表中可以提炼出几个实用结论绝大多数数学库同时支持 Linux 与 Windows且覆盖 Instinct数据中心 GPU、Radeon消费级 GPU与 RyzenAPU/AI PC三类平台hipSPARSELt 是例外仅面向 Instinct 的 gfx950/gfx942采用新稀疏架构的库在支持面扩张前有明显硬件约束版本演进遵循 roc*/hip* 对应关系例如 rocPRIM 4.5.0 与 hipCUB 4.5.0、rocRAND 4.5.0 与 hipRAND 3.4.0 各自独立发版。若需对比上一版本7.13的差异可查看 docs/data/components-previous.yaml。数学库在仓库中的组织与构建线索组件分组与描述数据源core.rst 通过模板从components.yaml读取组件列表并按预定义分组顺序Math and compute libraries 排在首位渲染。每个组件的更详细描述、文档交叉引用xref与 GitHub 仓库映射则维护在 components-default.yaml其中所有数学库均归入*math_libs分组例如Composable Kernel →rocm-libraries/projects/composablekernelrocBLAS →rocm-libraries/projects/rocblasMIOpen →rocm-libraries/projects/miopenrocWMMA →rocm-libraries/projects/rocwmma这说明数学与计算库在源码层面统一收编于rocm-libraries 超仓库super-repo之下便于统一拉取与构建。manifest 中的数学库清单仓库根目录的 default.xmlRepo manifest进一步印证了这一组织方式composable_kernel、hipfort、rocALUTION、rocm-libraries、TransferBench等项目都被标记为groupsmathlibs。这意味着在 ROCm 的全量源码构建流程中数学与计算相关项目会被作为一个分组统一同步与编译。数学库在整体文档结构中的位置根据 docs/sphinx/_toc.yml.in数学与计算库是 Core SDK 下的第一个子分组包含 17 个文档条目Composable Kernel 到 rocWMMA紧随其后的是 Communication libraries、Media libraries、Storage 等分组。整体层级为Components └── ROCm Core SDK ├── Math and compute libraries16 个库 Composable Kernel ├── Communication librariesRCCL、rocSHMEM ├── Media librariesrocDecode、rocJPEG ├── StoragehipFile ├── Runtime and compilersHIP、HIPIFY、LLVM ├── Profiling and debugging tools └── Control and monitoring toolsAMD SMI、RDC、rocminfo如何开始使用1. 安装 ROCm数学库随 ROCm 发行包一起分发。按照 ROCm 安装指南 完成系统安装后各库的头文件与库文件即可被编译器定位。安装方式包括包管理器apt/dnf 等与 ROCm Runfile Installer 两种主流路径。2. 核对版本与平台使用前对照 components.yaml 确认目标组件的版本并重点核对平台支持列尤其注意 hipSPARSELt 的 Instinct-only 限制。也可以运行hipconfig或rocm-smi之类的系统工具确认当前环境的 HIP 版本与 GPU 架构gfx ID确保与库的支持范围匹配。3. 链接与调用*原生路径roc**直接在 HIP C 程序中#include对应头文件如rocblas.h链接时使用-lrocblas等选项适用于全新开发的 AMD 专属项目。移植路径hip**对既有 CUDA 项目将cublas*/curand*/cufft*等 API 对应替换为hipblas*/hiprand*/hipfft*即可在 HIP 层编译运行底层自动 marshalling 到 roc实现。hip* 系列的 API 命名与 CUDA 等价 API 高度对齐这正是该层设计的初衷——以最小代码改动将 CUDA 应用移植到 AMD GPU。模板路径rocPRIM/hipCUB/rocThrust以头文件形式直接#include使用无需单独链接适合在 kernel 内外使用规约、扫描、排序等并行原语。4. 面向 AI 工作负载的典型组合如果目标是深度学习场景通常的组合方式是MIOpen / Composable Kernel 提供卷积与 kernel 原语rocBLAS/hipBLAS 提供 GEMMrocRAND 提供权重初始化与数据增强所需的随机数rocFFT 用于信号/图像类预处理。这些库共同构成了 PyTorch、TensorFlow 等框架在 ROCm 上的加速底座参见 README.md 的 Core components 清单。总结ROCm 数学与计算库是一套层次清晰、分工明确的 GPU 计算加速组件ro* 原生库以 HIP 编写、面向 AMD 硬件深度优化是性能的根基hip* 封装库提供 CUDA 等价 API 与多后端 marshalling是迁移与可移植性的桥梁二者覆盖稠密/稀疏线性代数、FFT、随机数、并行原语与深度学习五大计算域并通过 rocm-libraries 超仓库统一管理源码与版本。对于新项目开发者建议直接选用 roc* 原生库获得最佳 AMD 性能对于存量 CUDA 代码hip* 系列是成本最低的迁移路径。选择具体库之前务必参照本仓库 components.yaml 核对版本与平台支持范围尤其是 hipSPARSELt 这类有硬件约束的组件。【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表