(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202211154931.8 (22)申请日 2022.09.21 (71)申请人 上海交通大 学 地址 200240 上海市闵行区东川路80 0号 (72)发明人 陈榕 韩明聪 张汉泽 陈海波  臧斌宇  (74)专利代理 机构 上海汉声知识产权代理有限 公司 3123 6 专利代理师 胡晶 (51)Int.Cl. G06F 9/48(2006.01) G06F 9/50(2006.01) (54)发明名称 GPU任务实时抢占方法及系统 (57)摘要 本发明提供了一种GPU任务实时抢占方法及 系统, 包括: 步骤S1: 在离线阶段验证GPU内核的 幂等性, 并在GPU内核中进行代码插桩; 步骤S2: 在运行阶段, 初始化抢占标记与后台线程, 劫获 用户提交的GP U内核, 并缓存在GP U内核缓冲队列 中; 步骤S3: 在用户调用GPU任务抢占功能时, 暂 停后台线程, 设置抢占标记; 步骤S4: 在用户调用 GPU任务恢复功能时, 重置抢占标记, 并将被抢占 的GPU内核重新加入到GP U内核缓冲队列中, 恢复 后台线程。 本发明后台线程始终保持GPU运行时 中有多个异步提交的GP U内核, 避免了在每个GP U 内核执行完成后的同步操作带来的性能开销。 权利要求书2页 说明书6页 附图2页 CN 115408135 A 2022.11.29 CN 115408135 A 1.一种GPU任务实时抢占方法, 其特 征在于, 包括: 步骤S1: 在离线阶段验证GPU内核的幂等 性, 并在GPU内核中进行代码插 桩; 步骤S2: 在运行阶段, 初始化抢占标记与后台线程, 劫获用户提交的GPU内核, 并缓存在 GPU内核缓冲队列中, 使用后台线程将GPU内核缓冲队列的GPU内核提交到GPU运行时中; 步骤S3: 在用户调用GPU任务抢占功能时, 暂停后台线程, 设置抢占标记, 并根据当前运 行的GPU内核是否具 备幂等性决定是否 重置GPU计算单 元; 步骤S4: 在用户调用GPU任务恢复功能时, 重置抢占标记, 并将被抢占的GPU内核重新加 入到GPU内核缓冲队列中, 恢复后台线程。 2.根据权利要求1所述的GPU任务实时抢占方法, 其特 征在于, 所述 步骤S1包括: 步骤S1.1: 在离线阶段验证即将执行的GPU内核是否具备幂等性, 若无法验证, 则默认 其不具备幂等性; 步骤S1.2: 在离线阶段对即将执行的GPU内核代码进行插桩, 插桩的内容包括: 在GPU内 核开始运行时, 检查抢占标记变量, 若抢占标记变量的值为True, 则退出结束当前GPU内核, 否则继续执 行GPU内核。 3.根据权利要求1所述的GPU任务实时抢占方法, 其特 征在于, 所述 步骤S2包括: 步骤S2.1: 在GPU内存中创建抢占标记变量, 并初始化 为False, 然后创建后台线程; 步骤S2.2: 通过劫持GPU运行时动态链接库API调用, 劫获用户提交的GPU内核, 并将劫 获的GPU内核保存在GPU内核缓冲队列中; 步骤S2.3: 使用后台线程异步地将 GPU内核缓冲队列中的GPU内核提交到GPU运行 时中; 后台线程控制在GPU运行时中未执行完成的GPU内核的数量不超 过8个, 若GPU运行时中未执 行完成的GPU内核数量大于等于8个, 后台线程暂停提交GPU内核直到其数量小于8个。 4.根据权利要求3所述的GPU任务实时抢占方法, 其特 征在于, 所述 步骤S3包括: 步骤S3.1: 在用户调用GPU任务抢占功能后, 后台线程暂停提交GPU内核; 步骤S3.2: 将GPU中的抢占标记变量的值设置为True; 步骤S3.3: 根据离线 阶段验证的幂等性信息, 检查已经提交到GPU运行时中的GPU内核 是否都具 备幂等性, 若都具 备幂等性则重置GPU的计算单 元, 否则不重 置。 5.根据权利要求 4所述的GPU任务实时抢占方法, 其特 征在于, 所述 步骤S4包括: 步骤S4.1: 将GPU中的抢占标记变量的值设置为False; 步骤S4.2: 将在步骤S2.3中已经提交到GPU运行时但没有执行的GPU内核重新提交到 GPU运行时中; 步骤S4.3: 恢复后台线程, 使其继续 步骤S2.3 。 6.一种GPU任务实时抢占系统, 其特 征在于, 包括: 模块M1: 在离线阶段验证GPU内核的幂等 性, 并在GPU内核中进行代码插 桩; 模块M2: 在运行阶段, 初始化抢占标记与后台线程, 劫获用户提交的GPU内核, 并缓存在 GPU内核缓冲队列中, 使用后台线程将GPU内核缓冲队列的GPU内核提交到GPU运行时中; 模块M3: 在用户调用GPU任务抢占功能时, 暂停后台线程, 设置抢占标记, 并根据当前运 行的GPU内核是否具 备幂等性决定是否 重置GPU计算单 元; 模块M4: 在用户调用GPU任务恢复功能时, 重置抢占标记, 并将被抢占的GPU内核重新加 入到GPU内核缓冲队列中, 恢复后台线程。权 利 要 求 书 1/2 页 2 CN 115408135 A 27.根据权利要求6所述的GPU任务实时抢占系统, 其特 征在于, 所述模块M1包括: 模块M1.1: 在离线阶段验证即将执行的GPU内核是否具备幂等性, 若无法验证, 则默认 其不具备幂等性; 模块M1.2: 在离线阶段对即将执行的GPU内核代码进行插桩, 插桩的内容包括: 在GPU内 核开始运行时, 检查抢占标记变量, 若抢占标记变量的值为True, 则退出结束当前GPU内核, 否则继续执 行GPU内核。 8.根据权利要求6所述的GPU任务实时抢占系统, 其特 征在于, 所述模块M2包括: 模块M2.1: 在GPU内存中的创建抢占标记变量, 并初始化 为False, 然后创建后台线程; 模块M2.2: 通过劫持GPU运行时动态链接库API调用, 劫获用户提交的GPU内核, 并将劫 获的GPU内核保存在GPU内核缓冲队列中; 模块M2.3: 使用后台线程异步地将 GPU内核缓冲队列中的GPU内核提交到GPU运行 时中; 后台线程控制在GPU运行时中未执行完成的GPU内核的数量不超 过8个, 若GPU运行时中未执 行完成的GPU内核数量大于等于8个, 后台线程暂停提交GPU内核直到其数量小于8个。 9.根据权利要求8所述的GPU任务实时抢占系统, 其特 征在于, 所述模块M 3包括: 模块M3.1: 用户调用GPU任务抢占功能后, 后台线程暂停提交GPU内核; 模块M3.2: 将GPU中的抢占标记变量的值设置为True; 模块M3.3: 根据离线 阶段验证的幂等性信息, 检查已经提交到GPU运行时中的GPU内核 是否都具 备幂等性, 若都具 备幂等性则重置GPU的计算单 元, 否则不重 置。 10.根据权利要求9所述的GPU任务实时抢占系统, 其特 征在于, 所述模块M4包括: 模块M4.1: 将GPU中的抢占标记变量的值设置为False; 模块M4.2: 将在模块M2.3中已经提交到GPU运行时但没有执行的GPU内核重新提交到 GPU运行时中; 模块M4.3: 恢复后台线程, 使其继续模块M2.3 。权 利 要 求 书 2/2 页 3 CN 115408135 A 3

.PDF文档 专利 GPU任务实时抢占方法及系统

文档预览
中文文档 11 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共11页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 GPU任务实时抢占方法及系统 第 1 页 专利 GPU任务实时抢占方法及系统 第 2 页 专利 GPU任务实时抢占方法及系统 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 13:06:53上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。