当前位置: 首页 > article >正文

05 - rocrtst 功能测试详解

本文档深入介绍rocrtst功能测试套件suites/functional/中的各个测试模块帮助你理解每个测试验证的 HSA API 功能。1. 功能测试概览功能测试注册在rocrtstFunc测试套件下共 26 个源码模块涵盖 ROCr Runtime 的核心 API。运行所有功能测试sudorocrtst64--gtest_filterrocrtstFunc.*按功能领域可分为以下 6 类功能测试 (rocrtstFunc) ├── 内存管理 ─── memory_basic / memory_allocation / memory_access │ memory_alignment / memory_atomics / metadata_prefetch │ svm_memory / virtual_memory ├── 队列与信号 ─ counted_queues / aql_barrier_bit │ signal_kernel / signal_concurrent ├── 设备管理 ─── agent_props / filter_devices / cu_masking / cuid ├── 生命周期 ─── concurrent_init / concurrent_shutdown │ concurrent_init_shutdown / reference_count ├── 进程与调试 ─ ipc / debug_basic / gpu_coredump └── 其他 ─────── deallocation_notifier / time_stamp / test_fault_example2. 内存管理类测试2.1 memory_basic — 基本内存操作源文件memory_basic.h/memory_basic.cc验证 HSA 内存池的基本查询和分配能力。测试用例说明Memory_Max_Mem测试单次最大内存分配量Memory_Available查询可用内存量sudorocrtst64--gtest_filterrocrtstFunc.Memory_Max_Mem:rocrtstFunc.Memory_Available涉及 APIhsa_amd_memory_pool_get_info()、hsa_amd_memory_pool_allocate()2.2 memory_allocation — 内存分配策略源文件memory_allocation.h/memory_allocation.cc测试不同内存分配场景。测试用例说明GroupMemoryAllocationTest动态组内存分配LDSMemoryAllocateAndFreeTest基本分配与释放MemoryAllocateContiguousTest连续内存分配sudorocrtst64--gtest_filterrocrtstFunc.*MemoryAllocat*:rocrtstFunc.*GroupMemory*涉及 APIhsa_amd_memory_pool_allocate()、hsa_amd_memory_pool_free()2.3 memory_access — 内存访问源文件memory_access.h/memory_access.cc验证 CPU 和 GPU 之间的交叉内存访问。测试用例说明MemoryAccessTestsCPU 访问 GPU 内存 GPU 访问 CPU 内存MemoryAccessCoherent一致性内存访问测试sudorocrtst64--gtest_filterrocrtstFunc.MemoryAccess*涉及 APIhsa_amd_agents_allow_access()、hsa_amd_memory_pool_allocate()2.4 memory_alignment — 内存对齐源文件memory_alignment.h/memory_alignment.cc测试用例说明Memory_Alignment_Test验证各内存池返回的对齐要求涉及 APIhsa_amd_memory_pool_get_info(HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_ALIGNMENT)2.5 memory_atomics — 内存原子操作源文件memory_atomics.h/memory_atomics.cc通过 GPU kernel 验证各种原子操作的正确性。测试用例原子操作Memory_Atomic_Add_Test原子加Memory_Atomic_Sub_Test原子减Memory_Atomic_And_Test原子与Memory_Atomic_Or_Test原子或Memory_Atomic_Xor_Test原子异或Memory_Atomic_Min_Test原子最小值Memory_Atomic_Max_Test原子最大值Memory_Atomic_Inc_Test原子自增Memory_Atomic_Dec_Test原子自减Memory_Atomic_Xchg_Test原子交换# 运行所有原子操作测试sudorocrtst64--gtest_filterrocrtstFunc.Memory_Atomic_*涉及 KernelatomicOperations_kernels.cl2.6 metadata_prefetch — 内存预取源文件metadata_prefetch.h/metadata_prefetch.cc测试用例说明Test_MetadataPrefetchPacket测试元数据预取 AQL 包涉及 APIAQL Vendor Specific 包提交2.7 svm_memory — 共享虚拟内存 (SVM)源文件svm_memory.h/svm_memory.cc验证 SVMShared Virtual Memory功能CPU 和 GPU 共享同一虚拟地址空间。测试用例说明SvmMemory_Basic_TestSVM 创建/销毁、预取、批量丢弃SvmMemory_Negative_TestSVM 丢弃操作的负面测试sudorocrtst64--gtest_filterrocrtstFunc.SvmMemory*涉及 APIhsa_amd_svm_attributes_set()、hsa_amd_svm_prefetch_async()⚠️ SVM 功能需要 GPU 和驱动支持通常 gfx90a 及 XNACK 模式。2.8 virtual_memory — 虚拟内存管理源文件virtual_memory.h/virtual_memory.cc测试 HSA 虚拟内存管理 API地址预留、物理内存映射等。测试用例说明VirtMemory_Basic_Test创建/销毁、引用计数、部分映射VirtMemory_Access_TestCPU↔GPU、GPU↔GPU 虚拟内存访问VirtMemory_Accounting_Test内存计量测试VirtMemory_Aliasing_Test虚拟地址别名多个VA映射同一物理页VirtMemory_Interprocess_Test虚拟内存跨进程共享sudorocrtst64--gtest_filterrocrtstFunc.VirtMemory_*涉及 APIhsa_amd_vmem_address_reserve()、hsa_amd_vmem_map()、hsa_amd_vmem_set_access()3. 队列与信号类测试3.1 counted_queues — 计数队列源文件counted_queues.h/counted_queues.cc测试 AMD 扩展的计数队列Counted QueueAPI。测试用例说明Counted_Queue_Basic_Test基本 API 创建/销毁Counted_Queue_Same_Priority_Max_Limit_Test同优先级最大队列数限制Counted_Queue_Invalid_Args_Test无效参数处理Counted_Queue_Multiple_Priorities_Limit_Test多优先级队列限制Counted_Queue_Set_Priority_Nack_Test设置优先级XNACK 模式Counted_Queue_Set_CUMask_Nack_Test设置 CU 掩码XNACK 模式Counted_Queue_Dispatch_Test队列任务分发Counted_Queue_Multithreaded_Dispatch_Test多线程分发Counted_Queue_Overflow_And_Wraparound_Test队列溢出与回绕sudorocrtst64--gtest_filterrocrtstFunc.Counted_Queue_*3.2 signal_concurrent — 信号并发操作源文件signal_concurrent.h/signal_concurrent.cc测试用例说明Signal_Destroy_Concurrently并发销毁信号Signal_Max_Consumer最大消费者数量Signal_Create_Concurrently并发创建信号sudorocrtst64--gtest_filterrocrtstFunc.Signal_*涉及 APIhsa_signal_create()、hsa_signal_destroy()3.3 signal_kernel — 信号与 Kernel 交互源文件signal_kernel.h/signal_kernel.cc测试 GPU kernel 中的信号操作目前为 DISABLED 状态。测试用例说明DISABLED_Signal_Kernel_SetKernel 中设置信号DISABLED_Signal_Kernel_Multi_SetKernel 中多次设置DISABLED_Signal_Kernel_WaitKernel 中等待信号DISABLED_Signal_Kernel_Multi_WaitKernel 中多重等待3.4 aql_barrier_bit — AQL 屏障位源文件aql_barrier_bit.h/aql_barrier_bit.cc测试 AQL 包中的 Barrier 位功能目前为 DISABLED 状态。测试用例说明DISABLED_Aql_Barrier_Bit_Set设置屏障位的行为验证DISABLED_Aql_Barrier_Bit_Not_Set未设置屏障位的行为验证4. 设备管理类测试4.1 agent_props — Agent 属性查询源文件agent_props.h/agent_props.cc测试用例说明AgentPropertiesTests查询 GPU 的 UUID 和时钟计数器sudorocrtst64--gtest_filterrocrtstFunc.AgentPropertiesTests涉及 APIhsa_agent_get_info()4.2 filter_devices — 设备过滤源文件filter_devices.h/filter_devices.cc测试用例说明Filter_Devices_Test验证ROCR_VISIBLE_DEVICES环境变量的过滤功能4.3 cu_masking — CU 掩码源文件cu_masking.h/cu_masking.cc测试用例说明DISABLED_CU_Masking设置计算单元掩码限制 kernel 使用的 CU 数量涉及 APIhsa_amd_queue_cu_set_mask()涉及 Kernelcu_mask_kernels.cl⚠️ 当前为 DISABLED 状态等待修复。4.4 cuid — CU 标识源文件cuid.h/cuid.cc测试用例说明Cuid_GPU_Validation_Test验证 GPU CU ID 功能需要编译时定义HSA_ENABLE_AMDCUID_SUPPORT宏。5. 生命周期类测试5.1 concurrent_init — 并发初始化源文件concurrent_init.h/concurrent_init.cc测试用例说明Concurrent_Init_Test多线程同时调用hsa_init()5.2 concurrent_shutdown — 并发关闭源文件concurrent_shutdown.h/concurrent_shutdown.cc测试用例说明Concurrent_Shutdown多线程同时调用hsa_shut_down()5.3 concurrent_init_shutdown — 并发初始化与关闭源文件concurrent_init_shutdown.h/concurrent_init_shutdown.cc测试用例说明Concurrent_Init_Shutdown_Test多线程交替执行 init 和 shutdown5.4 reference_count — 引用计数源文件reference_count.h/reference_count.cc测试用例说明Reference_Count验证hsa_init()/hsa_shut_down()的引用计数机制Max_Reference_Count测试最大引用计数sudorocrtst64--gtest_filterrocrtstFunc.Reference_Count:rocrtstFunc.Max_Reference_Count涉及 APIhsa_init()、hsa_shut_down()6. 进程与调试类测试6.1 ipc — 进程间通信源文件ipc.h/ipc.cc测试用例说明IPC测试跨进程的 GPU 内存共享涉及 APIhsa_amd_ipc_memory_create()、hsa_amd_ipc_memory_attach()6.2 debug_basic — 调试基础源文件debug_basic.h/debug_basic.cc测试用例说明DISABLED_DebugBasicTests使用 debug trap 指令的向量加法测试涉及 Kernelvector_add_debug_trap_kernel.cl6.3 gpu_coredump — GPU 核心转储源文件gpu_coredump.h/gpu_coredump.cc测试 GPU 发生故障时的核心转储功能。测试用例说明GpuCoreDump_DefaultPattern默认转储路径模式GpuCoreDump_CustomPattern自定义路径模式GpuCoreDump_DisableFlag禁用标志GpuCoreDump_PatternSubstitution路径模式中的变量替换GpuCoreDump_InvalidPath无效路径处理GpuCoreDump_ContentIntegrity转储内容完整性GpuCoreDump_PipePattern管道模式转储sudorocrtst64--gtest_filterrocrtstFunc.GpuCoreDump_*7. 其他功能测试7.1 deallocation_notifier — 内存释放通知源文件deallocation_notifier.h/deallocation_notifier.cc测试用例说明Deallocation_Notifier_Test注册和触发内存释放回调涉及 APIhsa_amd_register_deallocation_callback()7.2 time_stamp — 时间戳源文件time_stamp.h/time_stamp.cc测试用例说明Time_Stamp验证 HSA 系统时间戳的正确性涉及 APIhsa_system_get_info(HSA_SYSTEM_INFO_TIMESTAMP)7.3 test_fault_example — 故障处理示例源文件test_fault_example.h/test_fault_example.cc通用测试模板示例也作为新测试用例的参考。测试用例说明Test_Example标准测试流程示例Test_Example_InterruptDisabled禁用中断模式的测试示例8. 功能测试速查表筛选命令说明--gtest_filterrocrtstFunc.*全部功能测试--gtest_filterrocrtstFunc.*Memory*所有内存相关测试--gtest_filterrocrtstFunc.*Svm*SVM 测试--gtest_filterrocrtstFunc.*VirtMemory*虚拟内存测试--gtest_filterrocrtstFunc.*Signal*信号测试--gtest_filterrocrtstFunc.Counted_Queue_*计数队列测试--gtest_filterrocrtstFunc.*Concurrent*并发生命周期测试--gtest_filterrocrtstFunc.GpuCoreDump_*GPU 核心转储测试--gtest_filterrocrtstFunc.Memory_Atomic_*原子操作测试9. DISABLED 测试汇总以下测试默认不运行需要--gtest_also_run_disabled_tests参数测试禁用原因DISABLED_CU_Masking等待修复DISABLED_Signal_Kernel_*(4 个)信号 kernel 交互待完善DISABLED_Aql_Barrier_Bit_*(2 个)屏障位功能待完善DISABLED_DebugBasicTests调试功能依赖特定环境上一篇04-运行第一个测试下一篇06-性能测试详解 — 性能测试模块与数据解读

相关文章:

05 - rocrtst 功能测试详解

本文档深入介绍 rocrtst 功能测试套件(suites/functional/)中的各个测试模块,帮助你理解每个测试验证的 HSA API 功能。 1. 功能测试概览 功能测试注册在 rocrtstFunc 测试套件下,共 26 个源码模块,涵盖 ROCr Runtim…...

别再百度了!工程师私藏的5个免费Datasheet查询网站(附使用技巧)

工程师必备:5个高效Datasheet查询工具与实战技巧 每次调试电路板时,最让人抓狂的莫过于找不到最新版的元器件规格书。上周我就遇到一个案例:某款MCU的旧版手册标注的引脚功能与实际芯片不符,导致整个通信模块无法工作。这种经历让…...

04 - 运行 rocrtst 第一个测试

本文档帮助你成功运行 rocrtst 的第一个测试,并掌握各种运行方式。 1. 运行前检查清单 在运行测试之前,确认以下条件: # ✅ 1. rocrtst64 已构建并安装 ls $ROCM_PREFIX/bin/rocrtst64# ✅ 2. GPU kernel 已编译(检查你的 GPU …...

Arm SME架构下的矩阵运算优化实践

1. Arm SME架构下的矩阵运算优化概述矩阵乘法作为高性能计算的核心运算,其效率直接影响深度学习推理、信号处理、科学计算等关键领域的性能表现。Arm SME(Scalable Matrix Extension)架构通过引入可扩展的矩阵寄存器(ZA&#xff0…...

保姆级教程:手把手教你用Intel RealSense D435i进行动态标定(附打印目标尺寸)

深度相机动态标定实战:从原理到精准优化的完整指南 在计算机视觉和机器人领域,深度相机的标定质量直接决定了三维感知的精度。许多开发者在初次使用Intel RealSense D435i这类设备时,常常会遇到深度图像噪点多、边缘模糊或数据空洞等问题。这…...

Python 爬虫高级实战:异地多机房爬虫协同采集

前言 随着爬虫业务规模扩张,单机、单机房部署模式逐渐暴露出单点故障、IP 池单一、地域访问延迟高、目标站点区域风控封禁、单机房带宽资源瓶颈等一系列问题。单一机房所有爬虫出口 IP 归属同一运营商、同一地域,极易被目标站点基于地域、IP 段整体封禁…...

NLP基石:从n-gram到现代语言模型的演进之路

1. 语言模型的起源与核心思想 语言模型这个概念最早可以追溯到上世纪中叶的信息论研究。当时科学家们试图用数学方法描述人类语言的规律性,于是提出了"用概率衡量句子合理性"的基本思路。想象一下,当你听到"今天天气真好"和"天…...

Python 爬虫进阶技巧:内网公开资源合规爬虫采集

前言 在企业园区、高校校园、政务机关、科研机构等封闭网络环境中,普遍存在内网公开资源服务节点,这类资源仅对内网 IP 段开放访问权限,外网无法直接穿透接入,包含公开文档库、共享文件服务器、内部资讯公告、教学资源库、政务公…...

反向传播不神秘:手把手调试一个计算图,看梯度是怎么‘流’回来的

反向传播不神秘:手把手调试一个计算图,看梯度是怎么"流"回来的 在深度学习的实践中,我们常常会调用loss.backward()这样的魔法函数,然后梯度就自动计算好了。但这个过程究竟发生了什么?为什么调整参数时梯度…...

最新OpenClaw 2.7.1 Windows 环境快速部署教程

Windows 一键部署 OpenClaw v2.7.1 教程|5 分钟搭建本地 AI 智能体 在开源 AI 工具持续更新的当下,OpenClaw(小龙虾)凭借本地运行、零代码操控、自动化执行等特点,成为广受用户欢迎的本地 AI 智能体,GitHu…...

重磅发布!2026网络安全六大趋势,决定企业安全布局

安全牛重磅发布!2026 网络安全六大趋势,决定企业安全布局 《2026年网络安全趋势研究报告》,立足 2025 年网络安全行业发展背景,分析了当下行业核心特征与挑战,预判 2026 年网络安全六大核心技术发展趋势,并…...

爱快路由器下搞定水星AC跨三层管理AP:一个Option字段引发的抓包实战

爱快路由器下搞定水星AC跨三层管理AP:一个Option字段引发的抓包实战 当企业网络规模扩大,跨三层管理无线AP成为刚需。最近在帮客户部署水星(Mercury)无线AC控制器时,遇到了一个看似简单却耗费数小时才解决的"坑&q…...

Windows 11系统优化深度指南:使用Win11Debloat实现高效系统清理与性能提升

Windows 11系统优化深度指南:使用Win11Debloat实现高效系统清理与性能提升 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes …...

XUnity.AutoTranslator:打破语言障碍的Unity游戏实时翻译插件终极指南

XUnity.AutoTranslator:打破语言障碍的Unity游戏实时翻译插件终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言不通而错过心爱的外语游戏?是否对复杂的游…...

5分钟掌握暗黑破坏神2存档编辑:免费Web工具完整指南

5分钟掌握暗黑破坏神2存档编辑:免费Web工具完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2中反复刷装备而烦恼吗?想快速体验不同职业的build却不想从头练级?d2s-ed…...

ARM AMBA总线演进史:从AHB到AXI,再到CHI和ACE,我们经历了什么?

ARM AMBA总线演进史:从AHB到AXI,再到CHI和ACE的技术脉络解析 二十年前,当ARM首次提出AMBA总线架构时,恐怕很少有人能预见它会在今天的SoC设计中占据如此核心的地位。从最初的AHB到如今的CHI,AMBA总线的每一次迭代都精准…...

Windows 10/11上安装VisIt 3.1.0踩坑实录:关防火墙、调显卡、解决窗口乱飞

Windows平台VisIt 3.1.0科学可视化工具实战避坑指南 科研可视化工具VisIt在Windows系统上的安装过程就像穿越雷区——杀毒软件误报、显卡驱动冲突、窗口显示异常等问题层出不穷。上周帮实验室三位同事调试环境时,我发现即使按照官方文档操作,仍有80%的概…...

从课堂到代码:三大数学可视化工具实战解析

1. 数学可视化工具的选择困境 第一次接触数学可视化工具时,我被各种选项搞得眼花缭乱。作为数学老师,我需要一个能让学生快速上手的工具;作为编程爱好者,我又希望它能支持更复杂的算法可视化。经过多年实践,我发现Desm…...

SAS协议深度解析:数据中心存储的基石与未来演进

1. 项目概述:SAS协议的现状与未来如果你在数据中心存储领域待过几年,肯定听过一种论调:“SAS(Serial Attached SCSI)快不行了,NVMe over PCIe才是未来。” 这话听起来挺有道理,毕竟NVMe SSD那动…...

用TensorFlow Lite Micro在Arduino上跑个‘Hello World’:从模型部署到LED闪烁的完整流程

在Arduino Nano 33 BLE Sense上部署TinyML模型的实战指南 当微控制器遇上机器学习,TinyML技术正在重新定义边缘计算的边界。本文将带您完成从TensorFlow Lite模型训练到Arduino硬件部署的全流程,通过控制LED亮度直观展示正弦波预测结果,让算…...

【DL】信息注入

在多模态生成(如文生图、3D生成)和视觉语言模型(VLM/VLA)的架构设计中,如何将外部条件(如文本、音频、时间步、控制信号)优雅且高效地“注入”到主干网络(Backbone)中,是决定模型性能的核心。 以下是深度整合了底层张量维度差异的 5 大类主流信息注入方法全景指南:…...

【限时解密】Midjourney Anthotype印相黄金比例:1:1.618构图×植物色素衰减曲线=不可复制的复古质感

更多请点击: https://intelliparadigm.com 第一章:Midjourney Anthotype印相的本质溯源与时代语境 Anthotype(植物感光印相)是一种源于19世纪的古老摄影工艺,利用植物提取物(如甜菜根、黑醋栗或蒲公英花汁…...

二分查找算法:中间值左偏还是右偏?

还记得吗?我们在前面探讨了区间的选择和主循环的停止判断条件,但是没有提到 中间索引位置的计算公式 middle(st, ed)。当区间的长度是奇数时,中间索引只有一个位置 mid (st ed) / 2,而当区间长度是偶数时,中间索引就…...

Efficient-KAN:突破传统神经网络瓶颈的Kolmogorov-Arnold网络实战指南

Efficient-KAN:突破传统神经网络瓶颈的Kolmogorov-Arnold网络实战指南 【免费下载链接】efficient-kan An efficient pure-PyTorch implementation of Kolmogorov-Arnold Network (KAN). 项目地址: https://gitcode.com/GitHub_Trending/ef/efficient-kan 深…...

Intel Stratix 10 SoC:三层异构计算架构与ARM Cortex-A53的工程实践

1. 项目概述:Altera Stratix 10 SoC的“秘密武器”2013年,当Altera(现为Intel PSG)在EE Times上揭开其Stratix 10片上系统(SoC)的神秘面纱时,整个嵌入式与高性能计算领域都为之侧目。核心的爆点…...

为什么顶尖投行/律所/药企已将Perplexity设为默认搜索端口?:拆解其底层Provenance Graph引擎与ChatGPT RAG架构的7层信任差

更多请点击: https://intelliparadigm.com 第一章:Perplexity与ChatGPT搜索范式的根本性分野 Perplexity 和 ChatGPT 代表两种截然不同的信息交互哲学:前者以**可验证的溯源驱动**为核心,后者以**生成连贯性优先**为设计原则。这…...

工程师视角:从生物钟原理到实战,系统化解决跨时区时差问题

1. 时差反应的本质与挑战:为什么我们会被“时差”困扰?作为一名常年需要跨时区协作的硬件工程师,我对“时差”这个词有着切肤之痛。无论是为了一个紧急的客户会议飞往硅谷,还是参加一年一度的慕尼黑电子展,跨越多个时区…...

Windows下MIT Kerberos Ticket Manager从安装到实战:一键Keytab登录与票据管理保姆教程

Windows下MIT Kerberos Ticket Manager从安装到实战:一键Keytab登录与票据管理保姆教程 在企业级IT环境中,Kerberos认证是保障系统安全的重要机制。但对于需要频繁进行认证操作的开发者和运维人员来说,反复输入密码不仅效率低下,还…...

别再折腾官网了!手把手教你从Kaggle快速下载20bn-jester-v1手势数据集(附完整合并教程)

高效获取20bn-jester-v1手势数据集的Kaggle实战指南 在计算机视觉和手势识别领域,20bn-jester-v1数据集因其大规模、高质量的视频标注而备受研究者青睐。然而,许多开发者在第一步——数据获取上就遇到了意想不到的障碍。官方下载渠道不仅速度缓慢&#…...

硬件工程师如何高效阅读技术博客:从EDA工具到IP核的实战学习指南

1. 从“本周最佳”到深度解析:一位硬件工程师的EDA与IP博客阅读笔记每周五下午,当项目代码编译的进度条缓慢爬升时,我总会习惯性地打开几个固定的书签,快速浏览过去一周里全球同行们又分享了哪些新想法、新工具或是踩了哪些新坑。…...