1. 引言
在 GPU 计算平台中,事件(Event)和队列(Queue)是实现异步任务调度、同步和高效资源利用的基础机制。ROCm平台遵循 HSA规范,允许用户空间应用通过队列提交任务,并通过事件机制实现任务完成的通知与同步。
在 ROCm 的测试代码中,常见如下用法:
queue.PlaceAndSubmitPacket(PM4ReleaseMemoryPacket(m_FamilyId, false,
m_pHsaEvent->EventData.HWData2, m_pHsaEvent->EventId));
这行代码体现了 queue 和 event 的紧密关联:应用通过向 queue 提交一个特定的 PM4 包(Release Memory Packet),并携带 event 的关键信息,从而实现 GPU 任务完成时自动信号 event,进而实现同步。
本文将详细剖析 queue 和 event 的关联原理、底层实现、数据结构、信号流程、同步机制。
2. 基本原理与设计目标
2.1 Queue 与 Event 的角色
-
Queue:应用与 GPU 之间的命令通道,应用通过 queue 提交任务,GPU 固件从 queue 取出任务并执行。
-
Event:一种同步原语,表示某个任务或状态的完成。应用可等待 event 被信号(signaled),以实现任务同步。
<
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



