一种硬件加速方法、编译器以及设备技术

技术编号:14424797 阅读:49 留言:0更新日期:2017-01-13 03:27
本发明专利技术实施例公开了一种硬件加速方法、编译器和设备,用于提高代码执行效率从而实现硬件加速。本发明专利技术实施例方法包括:编译器获取编译策略信息以及源代码;所述编译策略信息指示第一代码类型与第一处理器匹配,第二代码类型与第二处理器匹配;所述编译器根据所述编译策略信息分析所述源代码中的代码段,确定属于第一代码类型的第一代码段或属于第二代码类型的第二代码段;所述编译器将第一代码段编译为第一可执行代码,将所述第一可执行代码发往所述第一处理器;将第二代码段编译为第二可执行代码,将所述第二可执行代码发往所述第二处理器。

【技术实现步骤摘要】

本专利技术涉及计算机
,特别涉及一种硬件加速方法、编译器以及设备
技术介绍
源代码有时也称为源程序。源代码是指未编译的按照一定的程序设计语言规范书写的程序指令序列。因此,源代码是一系列人类可读的计算机语言指令。在现代程序语言中,计算机源代码的最终目的是将人类可读的程序指令序列翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。基于以上说明,目前代码编译以及执行流程如下:编译器在获得源代码后,将源代码编译为目标代码,然后将目标代码发送给执行代码的硬件如CPU(CentralProcessingUnit,中央处理器),由CPU执行目标代码获得执行结果。但是以上方案代码执行效率仍然较低。
技术实现思路
本专利技术实施例提供了一种硬件加速方法、编译器以及设备,用于提高代码执行效率从而实现硬件加速。本专利技术实施例一方面提供了一种硬件加速方法,包括:编译器获取编译策略信息以及源代码;所述编译策略信息指示第一代码类型与第一处理器匹配,第二代码类型与第二处理器匹配;所述编译器根据所述编译策略信息分析所述源代码中的代码段,确定属于第一代码类型的第一代码段或属于第二代码类型的第二代码段;所述编译器将第一代码段编译为第一可执行代码,将所述第一可执行代码发往所述第一处理器;将第二代码段编译为第二可执行代码,将所述第二可执行代码发往所述第二处理器。结合一方面的实现方式,在第一种可选的实现方式中,所述将所述第二可执行代码发往所述第二处理器包括:所述编译器通过调度管理器将所述第二可执行代码发送给所述第二处理器;或者,所述编译器在所述第二可执行代码中添加调用第二处理器的指示信息,通过调度管理器将所述第二可执行代码发送给所述第一处理器,使所述第一处理器获取到所述指示信息后将所述第二可执行代码发往所述第二处理器。结合一方面的实现方式,在第二种可选的实现方式中,所述第一处理器为CPU,第二处理器为FPGA;所述编译器根据所述编译策略信息分析所述源代码中的代码段,确定属于第一代码类型的第一代码段或属于第二代码类型的第二代码段包括:所述编译器统计所述源代码中的代码段的循环执行次数和/或CPU的执行时间,若统计得到的参数超过第一预定阈值,则确定该代码段属于第二代码段,否则确定该代码段属于第一代码段;或者,所述编译器将所述源代码中的代码段与所述第二代码段的特征规则进行比较,若与所述第二代码段的特征规则匹配,则确定该代码段为第二代码段,否则,确定该代码段为第一代码段;或者,所述编译器读取所述源代码中的加速标识信息,依据所述加速标识信息的指示确定所述源代码中的代码属于第一代码段或第二代码段。结合一方面的第二种可选的实现方式,在第三种可选的实现方式中,所述编译器统计所述源代码中的代码段的循环执行次数和/或CPU的执行时间包括:所述编译器调用统计指令集通过所述源代码中的功能代码确定所述源代码中的代码段的循环执行次数和/或CPU的执行时间;或者,所述编译器获取定时统计的代码执行统计报表确定所述源代码中的代码段的循环执行次数和/或CPU的执行时间。结合一方面、一方面的第一种、第二种或者第三种可选的实现方式,在第四种可选的实现方式中,若所述第二代码段对应进程的优先级高于正在所述第二处理器中执行的可执行代码对应的进程的优先级,在将所述第二可执行代码发往所述第二处理器之前,所述方法还包括:若所述第二处理器的繁忙度高于第二预定阈值,则停止正在所述第二处理器中执行的可执行代码;将正在所述第二处理器中执行的可执行代码对应的代码段编译为与第一处理器匹配的可执行代码,发送给所述第一处理器。结合一方面、一方面的第一种、第二种或者第三种可选的实现方式,在第五种可选的实现方式中,若第一代码段属于主代码段,所述第二代码段从属所述主代码段,则所述方法还包括:在所述第一可执行代码以及所述第二可执行代码中添加交互指令,使所述第二处理器向所述第一处理器返回所述第二可执行代码的执行结果。本专利技术实施例二方面提供了一种硬件加速方法,包括:编译器获取编译策略信息以及源代码;所述编译策略信息指示第一代码类型与第一处理器匹配,第二代码类型与第二处理器匹配;所述编译器根据所述编译策略信息将所述源代码中的代码段编译为与第一处理器匹配的第一可执行代码,将所述第一可执行代码发往所述第一处理器;若接收到所述第一处理器统计的所述第一可执行代码的第一执行信息,并依据所述第一执行信息确定所述第一可执行代码对应的代码段与第二处理器匹配,则将所述第一可执行代码对应的代码段编译为第二可执行代码,将所述第二可执行代码发往第二处理器。结合二方面的实现方式,在第一种可选的实现方式中,在将所述第二可执行代码发往第二处理器之后,所述方法还包括:接收来自所述第二处理器执行所述第二可执行代码的第二执行信息,若依据所述第二执行信息确定所述第二可执行代码对应的代码段与所述第二处理器匹配度低于期望值,则在所述第二处理器卸载所述第二可执行代码,将所述第二可执行代码对应的代码段对应的第一可执行代码发往所述第一处理器。本专利技术实施例三方面还提供了一种编译器,包括:获取单元,用于获取编译策略信息以及源代码;所述编译策略信息指示第一代码类型与第一处理器匹配,第二代码类型与第二处理器匹配;确定单元,用于根据所述编译策略信息分析所述源代码中的代码段,确定属于第一代码类型的第一代码段或属于第二代码类型的第二代码段;编译单元,用于将第一代码段编译为第一可执行代码,将第二代码段编译为第二可执行代码;发送单元,用于将所述第一可执行代码发往所述第一处理器,将所述第二可执行代码发往所述第二处理器。结合三方面的实现方式,在第一种可选的实现方式中,所述发送单元用于通过调度管理器将所述第二可执行代码发送给所述第二处理器;或者,所述编译单元还用于在所述第二可执行代码中添加调用第二处理器的指示信息;所述发送单元还用于将所述第二可执行代码发送给调度管理器,通过调度管理器将所述第二可执行代码发送给所述第一处理器,使所述第一处理器获取到所述指示信息后将所述第二可执行代码发往所述第二处理器。结合三方面的实现方式,在第二种可选的实现方式中,所述第一处理器为CPU,第二处理器为FPGA;所述确定单元用于统计所述源代码中的代码段的循环执行次数和/或CPU的执行时间,若统计得到的参数超过第一预定阈值,则确定该代码段属于第二代码段,否则确定该代码段属于第一代码段;或者,所述确定单元用于将所述源代码中的代码段与所述第二代码段的特征规则进行比较,若与所述第二代码段的特征规则匹配,则确定该代码段为第二代码段,否则,确定该代码段为第一代码段;或者,所述确定单元用于读取所述源代码中的加速标识信息,依据所述加速标识信息的指示确定所述源代码中的代码属于第一代码段或第二代码段。结合三方面的第二种可选的实现方式,在第三种可选的实现方式中,所述确定单元用于调用统计指令集通过所述源代码中的功能代码确定所述源代码中的代码段的循环执行次数和/或CPU的执行时间;或者,所述确定单元用于获取定时统计的代码执行统计报表确定所述源代码中的代码段的循环执行次数和/或CPU的执行时间。结合三方面、三方面的第一种、第二种或者第三种可选的实现方式,在第四种可选的实现本文档来自技高网...
一种硬件加速方法、编译器以及设备

【技术保护点】
一种硬件加速方法,其特征在于,包括:编译器获取编译策略信息以及源代码;所述编译策略信息指示第一代码类型与第一处理器匹配,第二代码类型与第二处理器匹配;所述编译器根据所述编译策略信息分析所述源代码中的代码段,确定属于第一代码类型的第一代码段或属于第二代码类型的第二代码段;所述编译器将第一代码段编译为第一可执行代码,将所述第一可执行代码发往所述第一处理器;将第二代码段编译为第二可执行代码,将所述第二可执行代码发往所述第二处理器。

【技术特征摘要】
1.一种硬件加速方法,其特征在于,包括:编译器获取编译策略信息以及源代码;所述编译策略信息指示第一代码类型与第一处理器匹配,第二代码类型与第二处理器匹配;所述编译器根据所述编译策略信息分析所述源代码中的代码段,确定属于第一代码类型的第一代码段或属于第二代码类型的第二代码段;所述编译器将第一代码段编译为第一可执行代码,将所述第一可执行代码发往所述第一处理器;将第二代码段编译为第二可执行代码,将所述第二可执行代码发往所述第二处理器。2.根据权利要求1所述方法,其特征在于,所述将所述第二可执行代码发往所述第二处理器包括:所述编译器通过调度管理器将所述第二可执行代码发送给所述第二处理器;或者,所述编译器在所述第二可执行代码中添加调用第二处理器的指示信息,通过调度管理器将所述第二可执行代码发送给所述第一处理器,使所述第一处理器获取到所述指示信息后将所述第二可执行代码发往所述第二处理器。3.根据权利要求1所述方法,其特征在于,所述第一处理器为CPU,第二处理器为FPGA;所述编译器根据所述编译策略信息分析所述源代码中的代码段,确定属于第一代码类型的第一代码段或属于第二代码类型的第二代码段包括:所述编译器统计所述源代码中的代码段的循环执行次数和/或CPU的执行时间,若统计得到的参数超过第一预定阈值,则确定该代码段属于第二代码段,否则确定该代码段属于第一代码段;或者,所述编译器将所述源代码中的代码段与所述第二代码段的特征规则进行比较,若与所述第二代码段的特征规则匹配,则确定该代码段为第二代码段,否则,确定该代码段为第一代码段;或者,所述编译器读取所述源代码中的加速标识信息,依据所述加速标识信息的指示确定所述源代码中的代码属于第一代码段或第二代码段。4.根据权利要求3所述方法,其特征在于,所述编译器统计所述源代码中的代码段的循环执行次数和/或CPU的执行时间包括:所述编译器调用统计指令集通过所述源代码中的功能代码确定所述源代码中的代码段的循环执行次数和/或CPU的执行时间;或者,所述编译器获取定时统计的代码执行统计报表确定所述源代码中的代码段的循环执行次数和/或CPU的执行时间。5.根据权利要求1至4任意一项所述方法,其特征在于,若所述第二代码段对应进程的优先级高于正在所述第二处理器中执行的可执行代码对应的进程的优先级,在将所述第二可执行代码发往所述第二处理器之前,所述方法还包括:若所述第二处理器的繁忙度高于第二预定阈值,则停止正在所述第二处理器中执行的可执行代码;将正在所述第二处理器中执行的可执行代码对应的代码段编译为与第一处理器匹配的可执行代码,发送给所述第一处理器。6.根据权利要求1至4任意一项所述方法,其特征在于,若第一代码段属于主代码段,所述第二代码段从属所述主代码段,则所述方法还包括:在所述第一可执行代码以及所述第二可执行代码中添加交互指令,使所述第二处理器向所述第一处理器返回所述第二可执行代码的执行结果。7.一种硬件加速方法,其特征在于,包括:编译器获取编译策略信息以及源代码;所述编译策略信息指示第一代码类型与第一处理器匹配,第二代码类型与第二处理器匹配;所述编译器根据所述编译策略信息将所述源代码中的代码段编译为与第一处理器匹配的第一可执行代码,将所述第一可执行代码发往所述第一处理器;若接收到所述第一处理器统计的所述第一可执行代码的第一执行信息,并依据所述第一执行信息确定所述第一可执行代码对应的代码段与第二处理器匹配,则将所述第一可执行代码对应的代码段编译为第二可执行代码,将所述第二可执行代码发往第二处理器。8.根据权利要求7所述方法,其特征在于,在将所述第二可执行代码发往第二处理器之后,所述方法还包括:接收来自所述第二处理器执行所述第二可执行代码的第二执行信息,若依据所述第二执行信息确定所述第二可执行代码对应的代码段与所述第二处
\t理器匹配度低于期望值,则在所述第二处理器卸载所述第二可执行代码,将所述第二可执行代码对应的代码段对应的第一可执行代码发往所述第一处理器。9.一种编译器,其特征在于,包括:获取单元,用于获取编译策略信息以及源代码;所述编译策略信息指示第一代码类型与第一处理器匹配,第二代码类型与第二处理器匹配;确定单元,用于根据所述编译策略信息分析所述源代码中的代码段,确定属于第一代码类型的第一代码段或属于第二代码类型的第二代码段;编译单元,用于将第一代码段编译为第一可执行代码,将第二代码段编译为第二可执行代码;发送单元,用于将所述第一可执行代码发往所述第一处理器,将所述第二可执行代码发往所述第二处理器。10.根据权利要求9所述的编译器,其特征在于,所述发送单元用于通过调度管理器将所述第二可执行代码发送给所述第二处理器;或者,所述编译单元还用于在所述第二可执行代码中添加调用第二处理器的指示信息;所述发送单元还用于将所述第二可执行代码发送给调度管理器,通过调度管理器将所述第二可执行代码发送给所述第一处理器,使所述第一处理器获取到所述指示信息后将所述第二可执行代码发往所述第二处理器。11.根据权利要求9所述的编译器,其特征在于,所述第一处理器为CPU,第二...

【专利技术属性】
技术研发人员:陈建周洪胡新宇管红光张小俊
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1