(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210780174.9
(22)申请日 2022.07.04
(71)申请人 上海交通大 学
地址 200240 上海市闵行区东川路80 0号
(72)发明人 陈榕 韩明聪 陈海波 臧斌宇
(74)专利代理 机构 上海汉声知识产权代理有限
公司 3123 6
专利代理师 胡晶
(51)Int.Cl.
G06F 9/48(2006.01)
G06F 9/50(2006.01)
G06F 9/54(2006.01)
G06F 8/41(2018.01)
G06F 9/30(2006.01)
G06T 1/20(2006.01)
(54)发明名称
GPU动态多 任务可控并发执 行方法及系统
(57)摘要
本发明提供了一种GPU动态多任务可控并发
执行方法及系统, 包括: 步骤S1: 在程序编译阶段
生成一个或多个proxy kernel作为待执行
kernel的入口; 步骤S2: 在程序运行阶段, 用户动
态选择并发执行的待执行kernel; 步骤S3: 根据
选择的待执行kernel所需要的寄存器 数量, 选择
proxykernel提交到GPU中; 步骤S4: 用户通过
proxykernel动态控制各个待执行kernel使用的
计算单元数量, 跳转到待执行kernel并执行。 本
发明通过proxy kernel为待执行kernel动态分
配指定数量的计算单元, 可以实现GPU程序运行
阶段细粒度的计算单 元分配。
权利要求书3页 说明书9页 附图2页
CN 115114003 A
2022.09.27
CN 115114003 A
1.一种GPU动态多任务可控并发执 行方法, 其特 征在于, 包括:
步骤S1: 在程序编译阶段生成一个或多个proxy kernel作为待执 行kernel的入口;
步骤S2: 在程序运行阶段, 用户动态选择并发执 行的待执 行kernel;
步骤S3: 根据选择的待执行kernel所需要的寄存器数量, 选择proxykernel提交到GPU
中;
步骤S4: 用户通过proxy kernel动态控制各个待执行kernel使用的计算单元数量, 跳
转到待执 行kernel并执 行。
2.根据权利要求1所述的GPU动态多任务可控并发执行方法, 其特征在于, 在所述步骤
S1中:
生成一个或多个proxy kernel的源代码, 每个proxy kernel拥有相同的源代码, 每个
proxy kernel具有不同的寄存器数量; proxy kernel是所有待执行kernel的入口, 所有 并
发执行的kernel都从proxy kernel跳转执行; 将proxykernel和待执行kernel的源代码编
译为二进制文件; 将编译过的proxy kernel和待执行kernel所在的二进制文件加载到GPU
内存中;
proxy kernel的参数包括待执行kernel函数入口地址、 待执行kernel参数地址以及待
执行kernel使用的计算单 元数量;
对于每一个CUOc cupancy都生成对应最大寄存器数量的proxy kernel。
3.根据权利要求1所述的GPU动态多任务可控并发执行方法, 其特征在于, 在所述步骤
S2中:
根据用户的需求选择并发执行的待执行kernel, 并根据选择的待执行kernel所需要的
寄存器数量, 选择proxykernel;
选择的proxy kernel应满足以下两点: 首先, 其使用的寄存器数量应大于选择的待执
行kernel所需要的寄存器数量; 其次, 其应该是满足前述条件的所有proxy kernel中, 使用
寄存器数量 最少的。
4.根据权利要求1所述的GPU动态多任务可控并发执行方法, 其特征在于, 在所述步骤
S3中:
根据用户的需求为每个待执行kernel分配计算单元数量, 设置proxykernel的启动参
数并启动proxykernel;
启动的proxy kernel的线程块数量为GPU计算单元数量与当前proxykernel的
CUOccupancy的积;
启动的proxy kernel的每个线程块所包含的线程数量为所有待执行kernel的线程块
最大线程数量;
启动的proxykernel的动态共享内存大小为所有待执行kernel所使用的最大共享内存
大小。
5.根据权利要求1所述的GPU动态多任务可控并发执行方法, 其特征在于, 在所述步骤
S4中:
在GPU中执行proxykernel, 根据当前所处的计算单元ID选择对应的待执行kernel, 设
置参数并跳转到待执 行kernel执 行;
proxy kernel设置待执 行kernel的函数参数、 线程 块ID以及线程 ID;权 利 要 求 书 1/3 页
2
CN 115114003 A
2使用JMP指令跳转到待执 行kernel的函数入口地址 。
6.一种GPU动态多任务可控并发执 行系统, 其特 征在于, 包括:
模块M1: 在程序编译阶段生成一个或多个proxy kernel作为待执 行kernel的入口;
模块M2: 在程序运行阶段, 用户动态选择并发执 行的待执 行kernel;
模块M3: 根据选择的待执行kernel所需要的寄存器数量, 选择proxykernel提交到GPU
中;
模块M4: 用户通过proxy kernel动态控制各个待执行kernel使用的计算单元数量, 跳
转到待执 行kernel并执 行。
7.根据权利要求6所述的GPU动态多任务可控并发执行系统, 其特征在于, 在所述模块
M1中:
生成一个或多个proxy kernel的源代码, 每个proxy kernel拥有相同的源代码, 每个
proxy kernel具有不同的寄存器数量; proxy kernel是所有待执行kernel的入口, 所有 并
发执行的kernel都从proxy kernel跳转执行; 将proxykernel和待执行kernel的源代码编
译为二进制文件; 将编译过的proxy kernel和待执行kernel所在的二进制文件加载到GPU
内存中;
proxy kernel的参数包括待执行kernel函数入口地址、 待执行kernel参数地址以及待
执行kernel使用的计算单 元数量;
对于每一个CUOc cupancy都生成对应最大寄存器数量的proxy kernel。
8.根据权利要求6所述的GPU动态多任务可控并发执行系统, 其特征在于, 在所述模块
M2中:
根据用户的需求选择并发执行的待执行kernel, 并根据选择的待执行kernel所需要的
寄存器数量, 选择proxykernel;
选择的proxy kernel应满足以下两点: 首先, 其使用的寄存器数量应大于选择的待执
行kernel所需要的寄存器数量; 其次, 其应该是满足前述条件的所有proxy kernel中, 使用
寄存器数量 最少的。
9.根据权利要求6所述的GPU动态多任务可控并发执行系统, 其特征在于, 在所述模块
M3中:
根据用户的需求为每个待执行kernel分配计算单元数量, 设置proxykernel的启动参
数并启动proxykernel;
启动的proxy kernel的线程块数量为GPU计算单元数量与当前proxykernel的
CUOccupancy的积;
启动的proxy kernel的每个线程块所包含的线程数量为所有待执行kernel的线程块
最大线程数量;
启动的proxykernel的动态共享内存大小为所有待执行kernel所使用的最大共享内存
大小。
10.根据权利要求6所述的GPU动态多任务可控 并发执行系统, 其特征在于, 在所述模块
M4中:
在GPU中执行proxykernel, 根据当前所处的计算单元ID选择对应的待执行kernel, 设
置参数并跳转到待执 行kernel执 行;权 利 要 求 书 2/3 页
3
CN 115114003 A
3
专利 GPU动态多任务可控并发执行方法及系统
文档预览
中文文档
15 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共15页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 13:25:21上传分享