本申请涉及软件开发领域,特别是涉及一种热点函数的分离方法、装置、电子装置和存储介质。
背景技术:
1、在大型科学计算软件中,fortran编程语言由于其优越的运行速度和便捷的多维数组处理方式,在过去几十年来一直是计算材料、流体力学和大气等众多科学领域数值模拟计算的主要编程语言之一。这些科学计算程序通常包含复杂的逻辑处理和大量的数值求解计算过程,代码量动辄数万行乃至数十上百万行,使其运行速度通常十分缓慢。
2、随着计算规模的不断扩大,近年来不断有研究人员通过异构并行的方式加速程序计算,例如使用中央处理器和图像处理器混合计算,或使用搭载国产架构处理器的超级计算机,均属于异构并行加速计算的范畴。尽管计算程序的代码量十分庞大,但计算任务的耗时并非在各个函数中均匀分布,而是往往有一个或几个函数,其计算耗时占据大部分总耗时,这些函数通常被称为热点函数。大部分程序的优化加速方法都需要围绕计算程序中的计算热点函数开展大量的代码改造、迁移、优化、替换等工作,且在开发与测试过程中需要多次反复运行源程序,此时与热点函数无关的部分会影响开发效率,进而导致计算程序开发的效率低。
3、针对相关技术中存在计算程序开发的效率低的问题,目前还没有提出有效的解决方案。
技术实现思路
1、在本实施例中提供了一种热点函数的分离方法、装置、电子装置和存储介质,以解决相关技术中存在计算程序开发的效率低的问题。
2、第一个方面,在本实施例中提供了一种热点函数的分离方法,所述方法包括:
3、收集待分离热点函数对应的目标变量信息;其中,所述待分离热点函数为原始计算程序在运行过程中预设的函数;
4、根据所述目标变量信息生成目标代码,并将所述目标代码传递给所述原始计算程序,得到目标程序;
5、执行所述目标程序,获取所述待分离热点函数的目标变量信息,并根据所述目标变量信息生成目标热点函数的独立程序接口;所述目标热点函数为从原始计算程序中分离出的热点函数;
6、执行所述目标热点函数的程序接口检验后,针对所述目标热点函数进行程序开发。
7、在其中的一些实施例中,所述收集待分离热点函数对应的目标变量信息,包括:
8、收集原始计算程序中的变量信息;
9、调用所述待分离热点函数,并确定所述变量信息中与待分离热点函数相关的信息为目标变量信息。
10、在其中的一些实施例中,所述根据所述目标变量信息确定目标代码,并将所述目标代码传递给所述原始计算程序,得到目标程序,包括:
11、根据多个所述目标变量信息,分别生成多个所述目标子代码;
12、基于多个所述目标变量信息中的位置信息,将所述目标子代码传递至所述原始计算程序中对应的位置;
13、确定添加多个所述目标子代码的所述原始计算程序为目标程序。
14、在其中的一些实施例中,所述将所述目标子代码传递至所述原始计算程序中对应的位置,包括:
15、根据多个所述目标变量信息,判断所述目标变量信息对应的原始计算程序中是否需要传递所述目标子代码;
16、若是,则将所述目标子代码传递至所述原始计算程序中所述目标变量信息对应的位置。
17、在其中的一些实施例中,所述执行所述目标程序,获取所述待分离热点函数的目标变量信息,包括:
18、根据预设的进程次序,执行所述目标程序,并获取所述待分离热点函数的目标变量信息;
19、根据所述目标变量信息获取所述待分离热点函数的关键变量;其中所述关键变量包括所述待分离热点函数中被修改的变量。
20、在其中的一些实施例中,所述目标热点函数的程序接口用于读取所述目标变量信息并调用所述目标热点函数。
21、在其中的一些实施例中,所述根据所述目标变量信息生成目标热点函数的独立程序接口之后,包括:
22、运行所述目标热点函数的独立程序接口,获取所述关键变量;
23、获取所述原始计算程序中与所述关键变量对应的原始关键变量;判断所述关键变量的数据与原始关键变量的数据是否一致;
24、若所述关键变量的数据与所述原始关键变量的数据一致,则完成函数分离。
25、第二个方面,在本实施例中提供了一种热点函数的分离装置,所述装置包括:收集模块、传递模块以及分离模块;
26、所述收集模块,用于收集待分离热点函数对应的目标变量信息;其中,所述待分离热点函数为原始计算程序在运行过程中预设的函数;
27、所述传递模块,用于根据所述目标变量信息生成目标代码,并将所述目标代码传递给所述原始计算程序,得到目标程序;
28、所述分离模块,用于执行所述目标程序,获取所述待分离热点函数的目标变量信息,并根据所述目标变量信息生成目标热点函数的独立程序接口;所述目标热点函数为从原始计算程序中分离出的热点函数;执行所述目标热点函数的程序接口检验后,针对所述目标热点函数进行程序开发。
29、第三个方面,在本实施例中提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的热点函数的分离方法。
30、第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的热点函数的分离方法。
31、与相关技术相比,在本实施例中提供的一种热点函数的分离方法、装置、电子装置和存储介质,通过收集待分离热点函数对应的目标变量信息;其中,待分离热点函数为原始计算程序在运行过程中的执行次数超过预设次数的函数;根据目标变量信息生成目标代码,并将目标代码传递给原始计算程序,得到目标程序;执行目标程序,获取待分离热点函数的目标变量信息,并根据目标变量信息生成目标热点函数的程序接口;目标热点函数为从原始计算程序中分离出的热点函数;执行目标热点函数的程序接口检验后,针对目标热点函数进行程序开发;进而只需调用目标热点函数进行程序开发,有利于提高计算程序开发的效率。
32、本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
1.一种热点函数的分离方法,其特征在于,所述方法包括:
2.根据权利要求1所述的热点函数的分离方法,其特征在于,所述收集待分离热点函数对应的目标变量信息,包括:
3.根据权利要求1所述的热点函数的分离方法,其特征在于,所述根据所述目标变量信息确定目标代码,并将所述目标代码传递给所述原始计算程序,得到目标程序,包括:
4.根据权利要求3所述的热点函数的分离方法,其特征在于,所述将所述目标子代码传递至所述原始计算程序中对应的位置,包括:
5.根据权利要求1所述的热点函数的分离方法,其特征在于,所述执行所述目标程序,获取所述待分离热点函数的目标变量信息,包括:
6.根据权利要求1所述的热点函数的分离方法,其特征在于,所述目标热点函数的程序接口用于读取所述目标变量信息并调用所述目标热点函数。
7.根据权利要求5所述的热点函数的分离方法,其特征在于,所述根据所述目标变量信息生成目标热点函数的独立程序接口之后,包括:
8.一种热点函数的分离装置,其特征在于,所述装置包括:收集模块、传递模块以及分离模块;
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至权利要求7中任一项所述的热点函数的分离方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求7中任一项所述的热点函数的分离方法的步骤。