附录A:AMDGPU SVM 属性类型
概述kfd_ioctl_svm_attr_type枚举定义了 SVMShared Virtual Memory的所有属性类型用于控制 GPU 对共享虚拟内存的访问行为、数据位置偏好、以及一致性模式。enumkfd_ioctl_svm_attr_type{KFD_IOCTL_SVM_ATTR_PREFERRED_LOC,// 首选位置KFD_IOCTL_SVM_ATTR_PREFETCH_LOC,// 预取位置触发迁移KFD_IOCTL_SVM_ATTR_ACCESS,// GPU 访问权限可迁移KFD_IOCTL_SVM_ATTR_ACCESS_IN_PLACE,// GPU 访问权限不迁移KFD_IOCTL_SVM_ATTR_NO_ACCESS,// 移除 GPU 访问权限KFD_IOCTL_SVM_ATTR_SET_FLAGS,// 设置标志位KFD_IOCTL_SVM_ATTR_CLR_FLAGS,// 清除标志位KFD_IOCTL_SVM_ATTR_GRANULARITY// 迁移粒度};1. KFD_IOCTL_SVM_ATTR_PREFERRED_LOC1.1 功能设置内存的首选位置preferred location决定数据在空闲时应该驻留的位置。1.2 Value 取值值含义0(KFD_IOCTL_SVM_LOCATION_SYSMEM)系统内存CPUGPU_ID特定 GPU 的显存0xffffffff(UNDEFINED)未定义由系统决定1.3 内核处理caseKFD_IOCTL_SVM_ATTR_PREFERRED_LOC:prange-preferred_locattrs[i].value;break;1.4 作用当 GPU 发生 page fault 时svm_range_best_restore_location()会优先考虑preferred_loc如果preferred_loc是一个 GPU且该 GPU 可以访问数据会迁移到该 GPU影响 page fault 恢复时的数据放置策略1.5 使用示例// 设置首选位置为 GPU 0attrs[0].typeKFD_IOCTL_SVM_ATTR_PREFERRED_LOC;attrs[0].valuegpu_id_0;2. KFD_IOCTL_SVM_ATTR_PREFETCH_LOC2.1 功能设置预取位置并立即触发数据迁移。2.2 Value 取值与 PREFERRED_LOC 相同。2.3 内核处理caseKFD_IOCTL_SVM_ATTR_PREFETCH_LOC:prange-prefetch_locattrs[i].value;break;在svm_range_set_attr()中设置 prefetch_loc 后会触发rsvm_range_trigger_migration(mm,prange,migrated);2.4 与 PREFERRED_LOC 的区别属性行为PREFERRED_LOC设置偏好不立即迁移等 page fault 时生效PREFETCH_LOC设置位置并立即迁移数据2.5 使用场景在 GPU 计算前预先将数据迁移到目标 GPU 显存避免运行时 page fault 导致的性能抖动2.6 使用示例// 立即将数据迁移到 GPU 0attrs[0].typeKFD_IOCTL_SVM_ATTR_PREFETCH_LOC;attrs[0].valuegpu_id_0;3. KFD_IOCTL_SVM_ATTR_ACCESS3.1 功能授予指定 GPU 对内存的访问权限数据可以被迁移到该 GPU。3.2 Value 取值GPU ID指定哪个 GPU 获得访问权限。3.3 内核处理caseKFD_IOCTL_SVM_ATTR_ACCESS:gpuidxkfd_process_gpuidx_from_gpuid(p,attrs[i].value);bitmap_set(prange-bitmap_access,gpuidx,1);// 设置访问位bitmap_clear(prange-bitmap_aip,gpuidx,1);// 清除 in-place 位break;3.4 作用设置bitmap_access位图中对应 GPU 的位当 GPU 访问该内存时数据可能被迁移到该 GPU 的显存page fault 恢复时svm_range_best_restore_location()检查此位图3.5 迁移行为GPU 访问 → Page Fault → 检查 bitmap_access ↓ 如果 GPU 在 bitmap_access 中 ↓ 数据可迁移到该 GPU 显存4. KFD_IOCTL_SVM_ATTR_ACCESS_IN_PLACE4.1 功能授予指定 GPU 对内存的访问权限但数据保持原地不迁移。4.2 Value 取值GPU ID。4.3 内核处理caseKFD_IOCTL_SVM_ATTR_ACCESS_IN_PLACE:gpuidxkfd_process_gpuidx_from_gpuid(p,attrs[i].value);bitmap_clear(prange-bitmap_access,gpuidx,1);// 清除访问位bitmap_set(prange-bitmap_aip,gpuidx,1);// 设置 in-place 位break;4.4 与 ACCESS 的区别属性bitmap_accessbitmap_aip数据迁移ACCESS✅ 设置❌ 清除可迁移到 GPUACCESS_IN_PLACE❌ 清除✅ 设置不迁移远程访问4.5 适用场景多 GPU 共享访问同一内存避免数据在 GPU 间来回迁移ping-pongCPU 内存被多个 GPU 远程访问4.6 性能考虑ACCESS: 数据迁移到 GPU 显存带宽高延迟低 ACCESS_IN_PLACE: 远程访问PCIe/XGMI带宽受限但避免迁移开销5. KFD_IOCTL_SVM_ATTR_NO_ACCESS5.1 功能移除指定 GPU 对内存的访问权限。5.2 Value 取值GPU ID。5.3 内核处理caseKFD_IOCTL_SVM_ATTR_NO_ACCESS:gpuidxkfd_process_gpuidx_from_gpuid(p,attrs[i].value);bitmap_clear(prange-bitmap_access,gpuidx,1);// 清除访问位bitmap_clear(prange-bitmap_aip,gpuidx,1);// 清除 in-place 位break;5.4 作用同时清除bitmap_access和bitmap_aipGPU 尝试访问时会触发 page fault且无法恢复返回 -EACCES5.5 使用场景安全性限制特定 GPU 访问敏感数据资源管理在 GPU 不再需要访问时释放权限6. KFD_IOCTL_SVM_ATTR_SET_FLAGS6.1 功能设置OR指定的标志位。6.2 Value 取值标志位掩码可以是以下值的组合标志值说明KFD_IOCTL_SVM_FLAG_HOST_ACCESS0x01保证 CPU 可访问KFD_IOCTL_SVM_FLAG_COHERENT0x02细粒度一致性KFD_IOCTL_SVM_FLAG_HIVE_LOCAL0x04使用同 hive 的任意 GPUKFD_IOCTL_SVM_FLAG_GPU_RO0x08GPU 只读允许复制KFD_IOCTL_SVM_FLAG_GPU_EXEC0x10允许 GPU 执行KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY0x20GPU 主要读取KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED0x40保持 GPU 映射始终有效KFD_IOCTL_SVM_FLAG_EXT_COHERENT0x80扩展一致性device-scope atomics6.3 内核处理caseKFD_IOCTL_SVM_ATTR_SET_FLAGS:*update_mappingtrue;prange-flags|attrs[i].value;// OR 操作break;6.4 标志详解FLAG_COHERENT (0x02)启用细粒度一致性CPU 和 GPU 看到一致的内存视图性能开销较高FLAG_EXT_COHERENT (0x80)扩展一致性使用 device-scope atomics比 COHERENT 更强的一致性保证用于跨设备原子操作FLAG_GPU_ALWAYS_MAPPED (0x40)即使 XNACK 开启也保持 GPU 页表映射有效避免 page fault 开销类似于 XNACK 关闭的行为FLAG_GPU_RO (0x08)GPU 只读访问允许数据复制到多个 GPUreplication优化多 GPU 读取同一数据的场景7. KFD_IOCTL_SVM_ATTR_CLR_FLAGS7.1 功能清除AND NOT指定的标志位。7.2 Value 取值与 SET_FLAGS 相同的标志位掩码。7.3 内核处理caseKFD_IOCTL_SVM_ATTR_CLR_FLAGS:*update_mappingtrue;prange-flags~attrs[i].value;// AND NOT 操作break;7.4 使用示例// 设置细粒度一致性attrs[0].typeKFD_IOCTL_SVM_ATTR_SET_FLAGS;attrs[0].valueKFD_IOCTL_SVM_FLAG_COHERENT;// 清除细粒度一致性改为粗粒度attrs[0].typeKFD_IOCTL_SVM_ATTR_CLR_FLAGS;attrs[0].valueKFD_IOCTL_SVM_FLAG_COHERENT;8. KFD_IOCTL_SVM_ATTR_GRANULARITY8.1 功能设置迁移粒度控制 page fault 时迁移的内存块大小。8.2 Value 取值log2(页数)范围 0-63实际限制为 0x3F。Value迁移大小01 页 4KB12 页 8KB416 页 64KB9512 页 2MB8.3 内核处理caseKFD_IOCTL_SVM_ATTR_GRANULARITY:prange-granularitymin_t(uint32_t,attrs[i].value,0x3F);break;8.4 作用在 page fault 处理中size1ULprange-granularity;startALIGN_DOWN(addr,size);lastALIGN(addr1,size)-1;8.5 权衡粒度优点缺点小精确避免不必要迁移频繁 fault开销大大减少 fault 次数预取效果好可能迁移不需要的数据9. 属性总结表属性类型存储位置作用触发迁移PREFERRED_LOCprange-preferred_loc设置首选位置❌ 延迟PREFETCH_LOCprange-prefetch_loc设置位置并迁移✅ 立即ACCESSprange-bitmap_access授权 GPU 访问可迁移按需ACCESS_IN_PLACEprange-bitmap_aip授权 GPU 访问不迁移❌NO_ACCESS清除两个 bitmap移除 GPU 访问权限N/ASET_FLAGSprange-flags设置标志N/ACLR_FLAGSprange-flags清除标志N/AGRANULARITYprange-granularity迁移粒度N/A10. 典型使用场景10.1 单 GPU 计算// 1. 设置首选位置为 GPUattrs[0].typeKFD_IOCTL_SVM_ATTR_PREFERRED_LOC;attrs[0].valuegpu_id;// 2. 授权 GPU 访问attrs[1].typeKFD_IOCTL_SVM_ATTR_ACCESS;attrs[1].valuegpu_id;// 3. 预取数据到 GPUattrs[2].typeKFD_IOCTL_SVM_ATTR_PREFETCH_LOC;attrs[2].valuegpu_id;10.2 多 GPU 共享读取// 所有 GPU 就地访问数据保持在 CPUfor(inti0;inum_gpus;i){attrs[i].typeKFD_IOCTL_SVM_ATTR_ACCESS_IN_PLACE;attrs[i].valuegpu_ids[i];}10.3 细粒度一致性// 设置细粒度一致性attrs[0].typeKFD_IOCTL_SVM_ATTR_SET_FLAGS;attrs[0].valueKFD_IOCTL_SVM_FLAG_COHERENT;

相关新闻

Strapping管脚全解析:硬件配置核心指南

Strapping管脚全解析:硬件配置核心指南

目录 一、Strapping 管脚的核心定义与核心作用 1. 核心定义 2. 核心作用 二、Strapping 管脚的工作原理 1. 三个核心工作阶段 2. 核心硬件组成 三、Strapping 管脚的关键特性 四、Strapping 管脚的常见配置功能 1. 启动模式配置(最核心,MCU/FPG…

2026/7/6 7:54:41 阅读更多 →
网站频繁遭遇 DDoS 攻击,高防 CDN 如何快速响应?

网站频繁遭遇 DDoS 攻击,高防 CDN 如何快速响应?

高防 CDN 快速响应 DDoS 攻击的方法部署智能流量清洗系统 高防 CDN 需配备实时流量监测与清洗机制,通过分析流量特征(如请求频率、IP 分布)自动识别恶意流量。清洗中心通过黑洞路由或速率限制过滤异常流量,仅放行合法请求。启用 A…

2026/7/3 14:16:30 阅读更多 →
MMDetection3D 所有核心Backbone、Neck、数据集类型、完整模型算法详细剖析(超详细)

MMDetection3D 所有核心Backbone、Neck、数据集类型、完整模型算法详细剖析(超详细)

🎯 框架定位 MMDetection3D 是 OpenMMLab 生态中专注于3D目标检测、3D语义分割、多模态感知的工业级框架,支持点云、单/多视角图像、多传感器融合等输入,广泛适配自动驾驶、机器人导航、工业质检等场景。其模块化设计(Backbone→N…

2026/7/5 1:01:57 阅读更多 →

最新新闻

WSEN-ISDS传感器与PIC18F96J94微控制器的硬件架构与运动融合算法

WSEN-ISDS传感器与PIC18F96J94微控制器的硬件架构与运动融合算法

1. WSEN-ISDS传感器与PIC18F96J94微控制器的硬件架构解析WSEN-ISDS(型号2536030320001)是一款六轴MEMS惯性测量单元(IMU),采用电容式传感原理,集成了三轴加速度计和三轴陀螺仪。其核心参数包括:加速度计量程&#xff1…

2026/7/6 7:53:17 阅读更多 →
ICM-42688-P与PIC32MZ组合在工业运动控制中的应用

ICM-42688-P与PIC32MZ组合在工业运动控制中的应用

1. ICM-42688-P与PIC32MZ1024EFF144的黄金组合解析在工业自动化和机器人控制领域,精确的运动感知能力往往决定了整个系统的性能上限。TDK InvenSense的ICM-42688-P六轴MEMS惯性测量单元(IMU)与Microchip的PIC32MZ1024EFF144微控制器形成的技术组合,正在重…

2026/7/6 7:51:16 阅读更多 →
半导体前道工艺 8 大核心步骤详解:从晶圆到芯片的 1000+ 道工序

半导体前道工艺 8 大核心步骤详解:从晶圆到芯片的 1000+ 道工序

半导体前道工艺8大核心步骤深度解析:从硅片到芯片的千道工序在当今数字化时代,芯片已成为推动科技进步的核心引擎。一片指甲盖大小的硅片上,集成了数十亿个晶体管,这种近乎神奇的制造过程被称为半导体前道工艺。本文将带您深入探索…

2026/7/6 7:51:16 阅读更多 →
TC78H653FTG H桥驱动器在直流电机控制中的应用与优化

TC78H653FTG H桥驱动器在直流电机控制中的应用与优化

1. 项目背景与核心器件解析在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,始终占据着重要地位。根据市场调研数据显示,2023年全球直流电机市场规模已突破200亿美元,其中中小功率有刷电机在智能…

2026/7/6 7:49:16 阅读更多 →
TB9051FTG与PIC18F86J10实现静音直流电机驱动方案

TB9051FTG与PIC18F86J10实现静音直流电机驱动方案

1. 项目背景与核心需求直流电机在工业自动化、家用电器和机器人等领域广泛应用,但传统驱动方案常伴随明显的电磁噪声和机械振动。TB9051FTG这款来自东芝的H桥驱动器芯片,配合PIC18F86J10微控制器的PWM控制能力,能够实现真正意义上的静音电机操…

2026/7/6 7:49:16 阅读更多 →
TC78H653FTG与PIC18F46K42的直流有刷电机驱动方案

TC78H653FTG与PIC18F46K42的直流有刷电机驱动方案

1. 项目概述:直流有刷电机驱动方案在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便且成本低廉的特点,始终占据着重要地位。今天我要分享的是一套基于TC78H653FTG H桥驱动器和PIC18F46K42微控制器的驱动方案,这套组…

2026/7/6 7:49:16 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻