本申请提供了一种基于GPU的深度学习应用的性能优化方法及装置,该方案在GPU加载深度学习应用对应的汇编指令的过程中,将该汇编指令中的第一目标汇编指令替换为第二目标汇编指令。执行指令时,只需执行第二目标汇编指令,不再执行第一目标汇编指令,而且,执行完第二目标汇编指令后,按顺序继续执行第一目标汇编指令之后的其它汇编指令,从而实现改变GPU中高性能函数库的执行逻辑得到新的算子。由上述过程可见,该方案是将新算子与GPU中高性能函数库相结合,使得新算子也能达到较高的计算性能,该方案既能够满足GPU对新算子的支持,即通用性,同时,提高了GPU执行新算子时的整体性能,即达到高性能。
背景技术
在深度学习应用中,执行效率越来越成为一个关注的重点。但目前深度学习广泛存在的一个问题是:算法开发工程师不了解实际的部署硬件,可能导致写出来的深度学习应用存在效率低下的问题。因此,深度学习编译器应运而生,专门解决深度学习应用落地过程中遇到的性能问题。
但是,目前的深度学习编译器仍有性能提升空间,体现在如下两种方式:一种是芯片厂商派(或称为硬件编译器,如可以集成在GPU芯片中),芯片厂商将一些特定功能的计算(如卷积)进行深度优化,如进行汇编级代码重排等实现最大程度地发挥硬件的性能优势。另一种是框架派(可称为软件编译器,通过软件框架实现),是将深度学习视为整体优化的一个具体应用,通过预定义一系列规则,在制定的搜索空间内持续试错获得最优执行结果。
可见,厂商派能够最大程度地提升深度学习应用的运行性能,但是不支持深度学习应用中出现的新的算子。而框架派的优势在于能够支持新的算子,但运行性能低于厂商派。深度学习框架中,通常将一个深度学习模型抽象成一个由一些基本算子(Operator)组成的有向无环的数据流图,一个算子通常包括多个核函数,核函数由计算设备架构或一些GPU的函数库提供的操作组合而成。
可见,如何使深度学习应用具有高性能同时还能提高支持新算子的能力是目前亟需解决的问题。
实现思路