[发明专利]一种基于CPU-GPU协同的数值计算软件加速方法在审
申请号: | 202210079946.6 | 申请日: | 2022-01-24 |
公开(公告)号: | CN114428643A | 公开(公告)日: | 2022-05-03 |
发明(设计)人: | 刘亚辉;黄聃;陈志广;卢宇彤 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F8/41;G06T1/20 |
代理公司: | 深圳市创富知识产权代理有限公司 44367 | 代理人: | 高冰 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 cpu gpu 协同 数值 计算 软件 加速 方法 | ||
本发明公开了一种基于CPU‑GPU协同的数值计算软件加速方法,方法将程序划分基本块,通过代码分析模块预估基本块运行信息,包括基本块是否为计算密集型任务,是否易于并行,计算任务内存拷贝时间是否小于CPU执行时间。根据分析结果将满足上述条件的基本块标记为GPU模块,其余为CPU模块。GPU模块即时编译为GPU代码进行执行,CPU模块若存在热点代码则即时编译为机器码执行,否则解释执行。该方法采用CPU‑GPU协同即时编译方式,充分利用CPU、GPU计算资源,运行效率高于CPU或GPU单独执行,同时发挥解释型语言即时编译的优势,显著提升数值计算软件性能。
技术领域
本发明涉及异构计算技术领域,尤其涉及一种基于CPU-GPU协同的数值计算软件加速方法。
背景技术
CPU-GPU协同应用于并行计算任务,协同有两种,其一为CPU负责管理GPU,为GPU提供计算数据并接收计算结果,GPU承担所有的计算任务;其二为CPU管理GPU的同时负责一部分计算任务。
数值计算软件以数值方式解决线程和非线性问题,使用高级编程语言,编码简单,基于CPU采用解释执行的方式运行。以Octave为例,Octave具有与Matlab基本一致的语法规范,弱类型,但解释执行效率低下。
为解决数值计算软件解释执行效率低下的问题,Matlab引入即时编译技术。在Matlab中,即时编译器在程序的执行过程中将代码编译优化为本地代码,包括将源代码或字节码转化为机器码,然后直接执行,显著提升性能。与静态编译相比,即时编译可以选择性地编译热点代码,节省不必要的编译时间和空间,从而获得更高的执行效率。
Octave在2012年引入即时编译技术,但截至目前依然处于初级阶段,且发展趋于停滞。同时,Octave中的即时编译器完成度较低,与原有的Octave解释器耦合度较高,导致Octave版本更新时,JIT要同步更新,维护困难。在Octave 6.1.0之后,Octave已放弃对此JIT编译器的兼容。
目前,数值计算软件执行方法并没有充分发挥硬件优势,若是基于CPU的即时编译,则GPU计算资源浪费;若是利用CPU-GPU协同并行计算,则没有充分利用解释型语言即时编译带来的性能提升。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于CPU-GPU协同的数值计算软件加速方法,本发明充分利用CPU、GPU计算资源,将计算密集型易于并行的代码即时编译为GPU代码进行执行,其余代码若为热点代码则即时编译为机器码基于CPU进行执行,否则基于CPU进行解释执行,从而提高执行效率。
为实现上述目的,本发明提供了一种基于CPU-GPU协同的数值计算软件加速方法,包括:
将源程序进行基本块划分;
通过代码分析模块预估基本块运行信息;
根据运行信息将基本块划分为GPU模块和CPU模块;
对于GPU模块进行即时编译得到GPU代码;
对于CPU模块进行即时编译或解释执行。
进一步的,所述将源程序进行基本块划分之前,还包括对源程序进行语法树构建、类型推断。
进一步的,所述将源程序进行基本块划分,每个基本块满足:
(1)控制流只能从基本块的入口语句进入,所述入口语句为程序的第一条语句、跳转的目标语句或者条件跳转的下一条语句;
(2)控制流只能从基本快的结束语句退出,所述结束语句为跳转语句、停语句或者下一入口语句的前一条语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210079946.6/2.html,转载请声明来源钻瓜专利网。