(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
专利 GPU任务实时抢占方法及系统
文档预览
中文文档
11 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共11页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 13:06:53上传分享