尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ROCm 环境变量设置计算单元数量:HSA_CU_MASK 与 ROC_GLOBAL_CU_MASK 实战指南
ROCm 环境变量设置计算单元数量HSA_CU_MASK 与 ROC_GLOBAL_CU_MASK 实战指南【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build本篇技术指南围绕 legacy-rocm-build 仓库中 docs/reference/environment-variables/setting-cus.rst 的核心内容展开系统讲解如何通过HSA_CU_MASK与ROC_GLOBAL_CU_MASK两个环境变量控制 AMD GPU 计算单元CU的启用范围。读完本文你将掌握这两类变量的语法规则、作用层级、与 GPU 隔离变量的协同方式以及常见的错误配置场景能够在实际计算负载中按需屏蔽或启用 CU。CDNA 2 / CDNA 3 架构中计算单元Compute Unit的结构示意图计算单元CU是什么在 AMD GPU 架构中计算单元Compute UnitCU是基础的可编程执行引擎负责运行复杂程序。AMD 设备架构建立在统一、可编程的计算引擎之上这些引擎即计算单元。每个计算单元内部包含 SIMD 核心、标量与向量 ALUSALU/VALU、寄存器文件、L0/L1 各级缓存等资源并依靠波前调度器wavefront scheduler决定每个时钟周期执行哪个波前从而实现延迟隐藏。完整定义可参考 docs/reference/glossary/device-hardware.rst。不同 GPU 的计算单元数量与组织方式不同例如MI100 总计 120 个 CU物理上组织为 8 个 Shader EngineSE每个 SE 含 15 个 CU每个 CU 又分为 4 个 SIMD 单元见 docs/reference/gpu-arch/mi100.mdMI250 的每个 GCD 有 104 个活跃 CU见 docs/reference/gpu-arch/mi250.mdMI300 系列采用 XCD/GCD 芯片设计计算元素集中于 XCD 内见 docs/reference/gpu-arch/mi300.md。在实际使用 GPU 加速计算负载时有时需要配置硬件对计算单元的占用方式。例如在多租户共享、性能隔离、故障规避或基准测试场景下希望让应用只用部分 CU。这是一个相对高级的选项建议在动手实验前先完整阅读本指南。两个环境变量及其作用层级GPU 驱动提供了两个环境变量用于设置使用的计算单元数量环境变量作用层级说明ROC_GLOBAL_CU_MASK运行时HIP / OpenCL设置在 HIP 或 OpenCL 运行时创建的队列上的 CU 掩码HSA_CU_MASK驱动更低层级设置在驱动中更低层级的队列创建上的掩码同时也会作用于被剖析profiling的队列两者的关键区别在于生效的队列创建层级ROC_GLOBAL_CU_MASK作用在 HIP/OpenCL 运行时创建的队列上而HSA_CU_MASK作用在驱动内部更底层的队列创建路径上并且会覆盖到被性能剖析工具监控的队列。正因为HSA_CU_MASK位于更底层它的影响范围更广在用 rocprof 等工具剖析队列时也需要依赖它来限制剖析队列的 CU 集合。注意这两个环境变量只影响 ROCm 软件栈中的计算应用不影响图形应用如 OpenGL/Vulkan 渲染。语法规则两个环境变量使用相同的语法形式为以分号分隔的CU_Set列表ID [0-9][0-9]* ex. base 10 numbers ID_list (ID | ID-ID)[, (ID | ID-ID)]* ex. 0,2-4,7 GPU_list ID_list ex. 0,2-4,7 CU_list 0x[0-F]* | ID_list ex. 0x337F OR 0,2-4,7 CU_Set GPU_list : CU_list ex. 0,2-4,7:0-15,32-47 OR 0,2-4,7:0x337F HSA_CU_MASK CU_Set [; CU_Set]* ex. 0,2-4,7:0-15,32-47; 3-9:0x337F逐项解读ID十进制数字表示单个 GPU 索引或单个 CU 编号。ID_list由单个 ID 或ID-ID区间组成的逗号分隔列表例如0,2-4,7表示 ID 0、2、3、4、7。注意区间2-4是闭区间包含端点。GPU_list即 GPU 索引列表例如0,2-4,7用于指定掩码作用于哪些 GPU。CU_list计算单元列表支持两种写法十六进制位掩码0x[0-F]*例如0x337F每一位代表一个 CUbit 0 对应 CU 0bit 1 对应 CU 1依此类推十进制 ID 列表同ID_list例如0,2-4,7。CU_SetGPU_list : CU_list的组合把一组 CU 掩码绑定到一组 GPU 上例如0,2-4,7:0-15,32-47或0,2-4,7:0x337F。HSA_CU_MASK及ROC_GLOBAL_CU_MASK一个或多个以分号;分隔的CU_Set例如0,2-4,7:0-15,32-47; 3-9:0x337F表示对 GPU 0/2/3/4/7 启用 CU 0-15 与 32-47同时对 GPU 3-9 应用十六进制掩码0x337F。掩码语义启用与禁用规则掩码的语义遵循以下规则GPU 索引基于ROCR_VISIBLE_DEVICES重排序之后的结果。也就是说掩码中的 GPU 编号不是物理槽位编号而是应用在ROCR_VISIBLE_DEVICES暴露并重排后的设备序列中的索引。对被列出的 GPU掩码中列出的 CU 被启用其余 CU 被禁用。对未列出的 GPU不受影响其全部 CU 保持启用。例如HSA_CU_MASK0:0-31表示仅对可见设备序列中的第 1 个 GPU 启用 CU 0 至 31其余 CU 全部关闭其他 GPU 不受任何影响CU 全部可用。与 GPU 隔离变量的配合由于掩码中的 GPU 索引取的是ROCR_VISIBLE_DEVICES重排后的编号因此在设置 CU 掩码之前往往先要通过 GPU 隔离变量缩小可见设备范围。若想从系统中排除某些 GPU 设备应当使用ROCR_VISIBLE_DEVICES而不是 CU 掩码——CU 掩码只能限制 GPU 内部的 CU无法隐藏整个 GPU 设备。ROCR_VISIBLE_DEVICES接受设备索引或 UUID 列表例如export ROCR_VISIBLE_DEVICES0,GPU-4b2c1a9f-8d3e-6f7a-b5c9-2e4d8a1f6c3b详细说明参见 docs/reference/system-optimization/gpu-isolation.md。完整的 ROCm 环境变量总览含 HIP、ROCR-Runtime、HIPCC 及各 ROCm 库的环境变量参见 docs/reference/environment-variables/index.rst。语法错误与解析终止规则变量解析在遇到语法错误时立即停止出错的CU_Set及其之后的所有内容都会被忽略。因此若一条长变量值中后续还有希望生效的配置请确保它前面的每一段都完全合法。以下是几类明确的语法错误情形重复的 GPU 或 CU ID同一 GPU 或 CU 在列表中重复出现例如0,0:0-15视为语法错误。掩码不含任何可用 CUCU_list为0x0十六进制掩码全 0时视为语法错误因为此时没有任何 CU 被启用。非法字符或非法结构不符合上述文法如使用了非十六进制字符、缺失冒号分隔、空段等的任何输入都会触发解析停止。设备相关的合法性约束并非所有 CU 配置在所有设备上都合法。典型限制来自WGPWorkgroup Processor结构WGP 是 AMD Radeon GPU 上的硬件单元包含两个计算单元及其关联资源用于高效调度和执行波前见 docs/reference/glossary/device-hardware.rst。在可以将两个 CU 组合成一个 WGP即内核以 WGP 模式运行的设备上不允许只禁用 WGP 中的单个 CU。换言之如果你的掩码尝试关闭 WGP 中的一半 CU驱动会将其视为非法配置。因此在为 RadeonRDNA 系设备设置 CU 掩码时应始终按成对WGP 粒度的方式启用或禁用 CU而不是任意指定单个 CU。实战示例示例 1单 GPU 启用部分 CU# 仅对可见设备序列中的第 1 个 GPU 启用 CU 0-15 和 CU 32-47 export HSA_CU_MASK0:0-15,32-47 ./your_hip_application示例 2多 GPU 分别设置# GPU 0/2/3/4/7 启用 CU 0-15 与 32-47GPU 3-9 应用十六进制掩码 0x337F export ROC_GLOBAL_CU_MASK0,2-4,7:0-15,32-47; 3-9:0x337F ./your_application示例 3十六进制位掩码# 0x337F 0011 0011 0111 1111即启用 CU 0-6、8-9、12-13 export HSA_CU_MASK0:0x337F ./your_application示例 4先隔离 GPU再限制 CU# 只暴露 2 个 GPU然后只让第 1 个 GPU 使用一半 CU export ROCR_VISIBLE_DEVICES0,1 export HSA_CU_MASK0:0-31 ./your_application在 CHANGELOG.md 的 SDK 演进记录中可以看到ROCm 的剖析与可见性机制一直在与ROCR_VISIBLE_DEVICES等隔离变量协同演进因此在实际使用中请留意当前 ROCm 版本的对应行为本指南中的变量语法与语义以当前仓库文档 docs/reference/environment-variables/setting-cus.rst 为准。【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Osmedeus 安全自动化编排引擎开发指南:架构、Step 类型与工程实践全解析

Osmedeus 安全自动化编排引擎开发指南:架构、Step 类型与工程实践全解析

Osmedeus 安全自动化编排引擎开发指南:架构、Step 类型与工程实践全解析 【免费下载链接】osmedeus A Modern Orchestration Engine for Security 项目地址: https://gitcode.com/GitHub_Trending/os/osmedeus Osmedeus(仓库路径:READ…

📅 2026/9/17 18:43:29
External Secrets Operator PushSecret `dataTo` 完全指南:Kubernetes 密钥批量推送、正则过滤与键名重写

External Secrets Operator PushSecret `dataTo` 完全指南:Kubernetes 密钥批量推送、正则过滤与键名重写

External Secrets Operator PushSecret dataTo 完全指南:Kubernetes 密钥批量推送、正则过滤与键名重写 【免费下载链接】external-secrets External Secrets Operator reads information from a third-party service like AWS Secrets Manager and automatically i…

📅 2026/9/17 18:43:29
LabVIEW调用ZLGCANAPI实现CAN Bootloader固件升级

LabVIEW调用ZLGCANAPI实现CAN Bootloader固件升级

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/17 18:43:29
MORE NEWS

更多资讯

📰

信号与系统实验:采样率、FFT与可复现仿真

简介:北京理工大学信号与系统实验报告完整记录了基于MATLAB的信号时域描述与运算实验,是信息工程类本科生学习信号与系统课程的实用参考。资源面向初学者,系统梳理连续时间信号与离散时间信号的向量表示法、符号对象表示法,并逐一…

📰

智慧管网大数据平台综合解决方案:从感知接入到数据治理

简介:智慧城市智慧管网智慧管线大数据云平台建设综合解决方案,面向智慧城市、城建档案管理、市政规划及管线权属单位的管理和技术人员,旨在破解地下管线底数不清、权属单位信息孤岛、道路反复开挖、应急处置低效等痛点。整套方案共1个pptx文件…

📰

没有最好的进销存,只有最合适的:4款主流进销存软件全景对比与选型指南

做电商的老板,迟早要面对一个问题:进销存软件到底选哪个? 很多老板一开始觉得店小,用个Excel表格就能管好货和账。可一旦日订单量突破100单,或者SKU超过50个,就会发现Excel表要么频繁出错,要么根…

📰

鸿蒙生态下的前端开发:构建跨设备一致体验的高性能应用

第一章:鸿蒙生态崛起与前端开发新机遇 随着万物互联时代的加速到来,操作系统需要突破单一设备的局限,提供无缝流转的体验。HarmonyOS(鸿蒙操作系统)应运而生,其分布式能力、流畅性能和安全特性,为开发者开辟了全新的疆域。作为鸿蒙应用的前端开发者,我们站在技术变革的…

📰

鸿蒙开发工程师深度解析:技能要求、面试准备与项目实战

引言:鸿蒙生态崛起与开发人才需求 近年来,随着万物互联时代的加速到来,华为推出的HarmonyOS(鸿蒙操作系统)凭借其分布式架构、全场景协同等独特优势,迅速在智能终端领域占据重要地位。鸿蒙不再局限于手机,而是面向包括智慧屏、平板、手表、车机、PC乃至各种IoT设备的全…

📰

智慧军校解决方案:从PPT到可部署的技术契约

简介:本资源是一份面向军事院校信息化建设管理者、教育技术骨干及智慧校园规划人员的综合性解决方案PPT,聚焦人工智能、大数据与智慧城市技术在军校场景的深度落地。全文共101页,系统阐述智慧军校九大核心体系:从基础环境&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬