CN116991429A - 计算机程序的编译调优方法、装置和存储介质 - Google Patents
计算机程序的编译调优方法、装置和存储介质 Download PDFInfo
- Publication number
- CN116991429A CN116991429A CN202311266395.5A CN202311266395A CN116991429A CN 116991429 A CN116991429 A CN 116991429A CN 202311266395 A CN202311266395 A CN 202311266395A CN 116991429 A CN116991429 A CN 116991429A
- Authority
- CN
- China
- Prior art keywords
- sample
- training
- target
- cost function
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000004590 computer program Methods 0.000 title claims abstract description 54
- 238000003860 storage Methods 0.000 title claims abstract description 11
- 238000012549 training Methods 0.000 claims abstract description 130
- 230000006870 function Effects 0.000 claims abstract description 100
- 238000005457 optimization Methods 0.000 claims description 78
- 230000008569 process Effects 0.000 claims description 15
- 238000000605 extraction Methods 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012803 optimization experiment Methods 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011423 initialization method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种计算机程序的编译调优方法、装置和存储介质,其中,该编译调优方法包括:选择样本硬件集合和样本程序集合并为每个样本程序随机生成优化序列,对每种样本程序与优化序列的组合进行编译、特征抽取以及运行,得到训练数据集,基于训练数据集对预设的多任务学习模型进行训练,得到预训练模型,基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型,利用该目标成本函数模型对目标源程序进行调优,得到目标源程序的最优优化序列。通过本申请,解决了相关技术中计算机程序编译调优效率低下的问题,提高了计算机程序的编译调优效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种计算机程序的编译调优方法、装置和存储介质。
背景技术
计算机中的编译器是一种把高级程序设计语言书写的源程序翻译成等价的机器语言格式目标程序的翻译程序。在编译过程中,编译器会对源程序进行优化,在保证语义等价性的前提下,使程序执行更快且使用更少的资源。其中,一个典型的编译器往往具有很多优化选项,为了提升编译后目标程序的性能,同时方便使用者选择优化选项,编译调优方法开始出现。
目前的编译调优方法通常定义优化空间,每轮迭代中,基于成本函数模型在优化空间中进行搜索,根据搜索到的优化序列对程序进行编译,其中,成本函数模型是基于机器学习模型构建的。然而,编译过程是与目标硬件相关的,同一源程序在不同目标硬件上对应的最优优化序列一般不同。对于同一源程序,当采用上述编译调优方法在不同硬件上调优时,需要分别在线采样训练数据集,对各自的成本函数进行更新。采样过程涉及程序的编译和运行,因此调优过程耗时长,调优效率低。
针对相关技术中存在计算机程序编译调优效率低下的问题,目前还没有提出有效的解决方案。
发明内容
在本实施例中提供了一种计算机程序的编译调优方法、装置和存储介质,以解决相关技术中计算机程序编译调优效率低下的问题。
第一个方面,在本实施例中提供了一种计算机程序的编译调优方法,包括:
选择样本硬件集合和样本程序集合,并为所述样本程序集合中的每个样本程序随机生成优化序列;
在所述样本硬件集合中的样本硬件上对每种所述样本程序与所述优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;
基于所述训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;
基于所述预训练模型进行成本函数模型的初始化,得到目标成本函数模型;
利用所述目标成本函数模型对目标源程序进行调优,得到所述目标源程序的最优优化序列。
在其中的一些实施例中,所述优化序列为所述样本硬件的编译器的优化选项的集合。
在其中的一些实施例中,所述在所述样本硬件集合中的样本硬件上对每种所述样本程序与所述优化序列的组合进行编译、特征抽取以及运行,得到训练数据集,包括:
将任意一种所述样本程序与任意一种所述优化序列构成组合;
根据所述组合中的所述优化序列,在不同所述样本硬件上对同一所述组合中的所述样本程序进行编译,并对编译结果进行特征抽取,得到特征数据;
在所述样本硬件集合中的不同所述样本硬件上运行所述组合中的所述样本程序,并测量运行时间,得到运行时间数据;
根据所述特征数据和所述运行时间数据,得到所述训练数据集。
在其中的一些实施例中,所述基于所述训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型,包括:
以所述特征数据作为输入数据,以所述运行时间数据作为输出数据,对所述多任务学习模型进行训练,得到所述训练完备的预训练模型。
在其中的一些实施例中,所述基于所述预训练模型进行成本函数模型的初始化,得到目标成本函数模型,包括:
若待调优的目标硬件属于所述样本硬件集合,则按照所述预训练模型中与所述目标硬件对应的调优结构进行所述成本函数模型的初始化,得到所述目标成本函数模型。
在其中的一些实施例中,所述基于所述预训练模型进行成本函数模型的初始化,得到目标成本函数模型,还包括:
若待调优的目标硬件不属于所述样本硬件集合,则将所述预训练模型的共享层作为所述目标成本函数模型的共享层,并对所述目标成本函数模型的网络层进行随机初始化。
在其中的一些实施例中,所述利用所述目标成本函数模型对目标源程序进行调优,得到所述目标源程序的最优优化序列,包括:
在当前迭代过程中,基于当前的目标成本函数获取相应的候选优化序列;
根据所述候选优化序列,在待调优的目标硬件上对所述目标源程序进行编译和运行,得到目标运行时间数据,并根据所述目标运行时间数据扩充调优数据集;
判断当前迭代次数是否小于预设的迭代次数阈值;若是,则基于所述调优数据集更新所述目标成本函数模型,并在下一次迭代中基于更新后的目标成本函数模型对所述目标源程序进行调优;否则,将当前的所述调优数据集中时长最短的运行时间数据对应的所述候选优化序列确定为所述目标源程序的所述最优优化序列。
第二个方面,在本实施例中提供了一种计算机程序的编译调优装置,包括生成模块、获取模块、训练模块、初始化模块以及调优模块,其中:
所述生成模块,用于选择样本硬件集合和样本程序集合,并为所述样本程序集合中的每个样本程序随机生成优化序列;
所述获取模块,用于在所述样本硬件集合中的样本硬件上对每种所述样本程序与所述优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;
所述训练模块,用于基于所述训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;
所述初始化模块,用于基于所述预训练模型进行成本函数模型的初始化,得到目标成本函数模型;
所述调优模块,用于利用所述目标成本函数模型对目标源程序进行调优,得到所述目标源程序的最优优化序列。
第三个方面,在本实施例中提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的计算机程序的编译调优方法。
第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的计算机程序的编译调优方法。
与相关技术相比,在本实施例中提供的计算机程序的编译调优方法、装置和存储介质,通过选择样本硬件集合和样本程序集合,并为样本程序集合中的每个样本程序随机生成优化序列;在样本硬件集合中的样本硬件上对每种样本程序与优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;基于训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型;利用目标成本函数模型对目标源程序进行调优,得到目标源程序的最优优化序列,解决了相关技术中计算机程序编译调优效率低下的问题,提高了计算机程序的编译调优效率。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本实施例的计算机程序的编译调优方法的终端硬件结构框图;
图2是本实施例的计算机程序的编译调优方法的流程图;
图3是本实施例的用于初始化成本函数模型的预训练模型的结构示意图;
图4是本优选实施例的计算机程序的编译调优方法的流程图;
图5是本实施例的计算机程序的编译调优装置的结构框图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
在本实施例中提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。比如在终端上运行,图1是本实施例的计算机程序的编译调优方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限制。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的计算机程序的编译调优方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(NetworkInterface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(RadioFrequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种计算机程序的编译调优方法,图2是本实施例的计算机程序的编译调优方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,选择样本硬件集合和样本程序集合,并为样本程序集合中的每个样本程序随机生成优化序列。
具体地,上述样本硬件集合中的样本硬件可以为主流硬件,如英特尔(Intel)、超威半导体(Advanced Micro Devices,简称AMD)、ARM(Adanced RISC Machines)等公司出产的常用中央处理器芯片;上述样本程序集合中的样本程序可以为计算机技术领域中编译器优化实验常用的基准测试套件,如Cbench基准测试套件、polybench基准测试套件等。优化序列可以为编译器的优化选项的集合,一个编译器可以有多个优化选项,每一优化选项可以有开启或关闭两种状态。
步骤S202,在上述样本硬件集合中的样本硬件上对每种样本程序与优化序列的组合进行编译、特征抽取以及运行,得到训练数据集。
具体地,以样本程序集合中的某一样本程序与某一种优化序列构成一个二元组,根据该二元组中的优化序列,在上述样本硬件集合中的不同样本硬件上对同一二元组中的样本程序进行编译和运行。其中,在编译过程中,针对编译得到的中间表示(IntermediateRepresentation,简称IR)进行特征抽取,得到该二元组的特征数据,该特征数据可以为算术指令、循环信息、内存操作、并行信息等多种数据,通过这一操作,样本程序可以被转化表达为机器学习模型能够识别的形式。此外,在运行过程中,测量该二元组在不同硬件上的运行时间,记录该运行时间数据。所有二元组的特征数据与运行时间数据构成训练数据集。
步骤S203,基于训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型。
具体地,以特征数据作为输入数据,以运行时间数据作为输出数据,对预设的多任务学习模型进行训练,得到训练完备的预训练模型。图3是本实施例的用于初始化成本函数模型的预训练模型的结构示意图,如图3所示,该多任务学习模型包括共享层,以及与特定任务相关的网络层,如图3中的网络层1,网络层2以及网络层3;其中,可以采用全连接层、卷积层等结构作为该预训练模型的网络层,也可以引入注意力机制等。该多任务学习模型的输出为各样本硬件所对应的运行时间的预测结果,例如硬件1预测头对应在作为样本硬件的硬件1上的运行时间的预测结果。同理,还能得到硬件2预测头对应在硬件2上的运行时间的预测结果,硬件3预测头对应在硬件3上的运行时间的预测结果。在进行上述训练时,可以将预测程序在某一硬件上的运行时间作为一个子任务,多个子任务构成多任务学习模型。
步骤S204,基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型。
具体地,上述成本函数模型将用于目标源程序的调优过程,在执行调优过程之前,首先利用上述训练完备的预训练模型对该成本函数模型进行初始化,即将预训练模型中各层的参数或权重复制给目标成本函数模型;具体地,若待调优的目标硬件属于样本硬件集合,即预训练模型中存在与待调优的目标硬件对应的预测头,则按照预训练模型中与该目标硬件对应的调优结构进行成本函数模型的初始化,将该对应调优结构中共享层与网络层的参数或权重直接复制给目标成本函数模型;若待调优的目标硬件不属于样本硬件集合,即预训练模型中不存在与待调优的目标硬件对应的预测头,则将预训练模型的共享层作为目标成本函数模型的共享层,直接将预训练模型中共享层的参数或权重复制给目标成本函数模型,对目标成本函数模型的网络层进行随机初始化。优选地,该用于目标成本函数网络层的初始化方法还可以为Xavier初始化等。
其中,该预训练模型具有多个并列的调优结构,每个硬件对应一个调优结构。如图3所示,例如,目标硬件可以为样本硬件集合中的硬件1,则图3中训练完备的预训练模型中与硬件1预测头相对应的包含共享层与网络层1的分支为硬件1对应的调优结构;同理,还能得到硬件2预测头对应的包含共享层与网络层2的分支为硬件2对应的调优结构,硬件3预测头对应的包含共享层与网络层3的分支为硬件3对应的调优结构;基于该调优结构初始化成本函数模型。此外,根据所有可能的优化序列定义优化空间,设置用于调优过程的迭代次数阈值,并将调优数据集初始化为空集。
步骤S205,利用目标成本函数模型对目标源程序进行调优,得到目标源程序的最优优化序列。
具体地,当目标源程序到达编译器时,先基于预设的搜索算法在上述优化空间中搜索一个当前为最优的优化序列,将其作为候选优化序列;进一步地,对该目标源程序进行迭代调优,根据该候选优化序列,在目标硬件上对目标源程序进行编译和运行,得到目标运行时间数据,并将该目标运行时间数据加入调优数据集;判断当前迭代次数是否小于预设的迭代次数阈值;若当前迭代次数小于预设的迭代次数阈值,则基于扩充后的调优数据集对目标成本函数进行训练,更新目标成本函数模型,并进行下一次迭代,下一次迭代中则基于更新后的目标成本函数模型对目标源程序进行调优;若当前迭代次数达到预设的迭代次数阈值,即预设迭代次数已用尽,则将当前的调优数据集中时长最短的运行时间数据对应的候选优化序列确定为目标源程序的最优优化序列。
通过上述步骤S201至S205,选择样本硬件集合和样本程序集合,并为样本程序集合中的每个样本程序随机生成优化序列;对每种样本程序与优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;基于训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型;利用该目标成本函数模型对目标源程序进行调优,得到目标源程序的最优优化序列。在对目标源程序进行调优之前,先基于在多种样本硬件上离线构建的数据集对多任务学习模型进行训练,得到预训练模型;根据该预训练模型实现对目标成本函数模型的初始化后,再执行具体迭代优化操作。本方案提升了目标成本函数模型的准确性和泛化性,对于属于样本硬件集合的目标硬件,可以直接得到相应的准确数据,对于不属于样本硬件集合的新种类目标硬件,也可以从样本硬件集合中其他硬件的数据中获取信息,因此减少了调优过程中在线采样的样本数量,降低了优化时间,提高了优化效率,解决了相关技术中编译调优效率低下的问题。
在其中的一些实施例中,优化序列可以为样本硬件的编译器的优化选项的集合。
其中,样本硬件集合中的样本硬件可以为主流硬件,如Intel、AMD、ARM等公司出产的常用中央处理器芯片;样本程序集合中的样本程序可以为计算机技术领域中编译器优化实验常用的基准测试套件,如Cbench基准测试套件、polybench基准测试套件等。优化序列可以为编译器的优化选项的集合,一个编译器可以有多个优化选项,每一优化选项可以有开启或关闭两种状态,假设编译器一共有m个优化选项,每个优化选项可以取值为0或1,代表状态为关闭或开启,则可知所有可能的优化序列数目为2的m次方。经过上述步骤,得到样本程序和优化序列的二元组,记为,其中/>表示第i个程序,表示第i个程序的第j个优化序列。
进一步地,在其中的一些实施例中,基于上述步骤S202,在样本硬件集合中的样本硬件上对每种样本程序与优化序列的组合进行编译、特征抽取以及运行,得到训练数据集,具体可以包括:
将任意一种样本程序与任意一种优化序列构成组合;根据组合中的优化序列,在不同样本硬件上对同一组合中的样本程序进行编译,并对编译结果进行特征抽取,得到特征数据;在样本硬件集合中的不同样本硬件上运行组合中的样本程序,并测量运行时间,得到运行时间数据。
其中,上述组合即为样本程序和优化序列的二元组;经过编译、特征抽取和运行后,可以得到样本点/>,其中,表示第i个样本程序经第j个优化序列编译后抽取的特征数据,label表示在该样本程序某一特定样本硬件上实测的运行时间数据,且一共有n种样本硬件。所有二元组合的特征数据与运行数据构成训练数据集。
进一步地,在一些实施例中,基于上述步骤S203,基于训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型,具体可以包括:
以特征数据作为输入数据,以运行时间数据作为输出数据,对多任务学习模型进行训练,得到训练完备的预训练模型。
其中,该多任务学习模型的前几层为共享层,后几层为与特定任务相关的网络层。在进行上述训练时,可以将预测程序在某一种硬件上的运行时间作为一个子任务,多个上述子任务构成多任务学习模型。模型的损失函数定义为子任务损失函数之和,即。其中,loss表示成本函数模型的损失函数,表示第k个子任务的损失函数,/>表示第k个预测程序,/>表示预测程序在第k个样本硬件上实测的运行时间数据。
进一步地,在一些实施例中,基于上述步骤S204,基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型,具体可以包括:
若待调优的目标硬件属于样本硬件集合,则按照预训练模型中与目标硬件对应的调优结构进行成本函数模型的初始化,得到目标成本函数模型。其中,按照预训练模型中与目标硬件对应的调优结构对整个成本函数模型进行设置。
可选地,在一些实施例中,基于上述步骤S204,基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型,具体还可以包括:
若待调优的目标硬件不属于样本硬件集合,则将预训练模型的共享层作为目标成本函数模型的共享层,并对目标成本函数模型的网络层进行随机初始化。其中,对于目标成本函数模型,只将其共享层按照预训练模型设置,剩余网络层则随机设置。
另外,在一些实施例中,基于上述步骤S204,基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型,具体还可以包括:
定义一个优化空间,该优化空间中包含所有可能的优化序列;设置用于调优过程的迭代次数阈值;将调优数据集初始化为空集。
进一步地,在一些实施例中,利用目标成本函数模型对目标源程序进行调优,得到目标源程序的最优优化序列,具体可以包括:
在当前迭代过程中,基于当前的目标成本函数获取相应的候选优化序列;根据候选优化序列,在待调优的目标硬件上对目标源程序进行编译和运行,得到目标运行时间数据,并根据目标运行时间数据扩充调优数据集;判断当前迭代次数是否小于预设的迭代次数阈值;若是,则基于调优数据集更新目标成本函数模型,并在下一次迭代中基于更新后的目标成本函数模型对目标源程序进行调优;否则,将当前的调优数据集中时长最短的运行时间数据对应的候选优化序列确定为目标源程序的最优优化序列。其中,候选优化序列的获取具体可以为:当目标源程序到达编译器时,先基于预设的搜索算法在上述优化空间中搜索一个当前为最优的优化序列,将其作为候选优化序列。
下面通过优选实施例对本实施例进行描述和说明。
图4是本优选实施例的计算机程序的编译调优方法的流程图。如图4所示,该调优方法包括以下步骤:
S401,选择样本硬件集合和样本程序集合,并为样本程序集合中的每个样本程序随机生成优化序列;
S402,在样本硬件集合中的样本硬件上对每种样本程序与优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;
S403,基于训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;
S404,基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型;
S405,基于当前的目标成本函数获取相应的候选优化序列;
S406,根据候选优化序列,在目标硬件上对目标源程序进行编译和运行,得到目标运行时间数据,并根据目标运行时间数据扩充调优数据集;
S407,判断当前迭代次数是否小于预设的迭代次数阈值;若是,则返回执行步骤S405,否则,执行步骤S408;
S408,将当前的调优数据集中时长最短的运行时间数据对应的候选优化序列确定为目标源程序的最优优化序列。
在本实施例中还提供了一种计算机程序的编译调优装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是本实施例的计算机程序的编译调优装置的结构框图,如图5所示,该装置包括:生成模块51、获取模块52、训练模块53、初始化模块54以及调优模块55,其中:
生成模块51用于选择样本硬件集合和样本程序集合,并为样本程序集合中的每个样本程序随机生成优化序列;获取模块52用于在样本硬件集合中的样本硬件上对每种样本程序与优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;训练模块53用于基于训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;初始化模块54用于基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型;调优模块55用于利用目标成本函数模型对目标源程序进行调优,得到目标源程序的最优优化序列。
在本实施例中还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,选择样本硬件集合和样本程序集合,并为样本程序集合中的每个样本程序随机生成优化序列;
S2,在上述样本硬件集合中的样本硬件上对每种样本程序与优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;
S3,基于训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;
S4,基于预训练模型进行成本函数模型的初始化,得到目标成本函数模型;
S5,利用目标成本函数模型对目标源程序进行调优,得到目标源程序的最优优化序列。
需要说明的是,在本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。
此外,结合上述实施例中提供的计算机程序的编译调优方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种计算机程序的编译调优方法。
应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种计算机程序的编译调优方法,其特征在于,包括:
选择样本硬件集合和样本程序集合,并为所述样本程序集合中的每个样本程序随机生成优化序列;
在所述样本硬件集合中的样本硬件上对每种所述样本程序与所述优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;
基于所述训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;
基于所述预训练模型进行成本函数模型的初始化,得到目标成本函数模型;
利用所述目标成本函数模型对目标源程序进行调优,得到所述目标源程序的最优优化序列。
2.根据权利要求1所述的计算机程序的编译调优方法,其特征在于:
所述优化序列为所述样本硬件的编译器的优化选项的集合。
3.根据权利要求1所述的计算机程序的编译调优方法,其特征在于,所述在所述样本硬件集合中的样本硬件上对每种所述样本程序与所述优化序列的组合进行编译、特征抽取以及运行,得到训练数据集,包括:
将任意一种所述样本程序与任意一种所述优化序列构成组合;
根据所述组合中的所述优化序列,在不同所述样本硬件上对同一所述组合中的所述样本程序进行编译,并对编译结果进行特征抽取,得到特征数据;
在所述样本硬件集合中的不同所述样本硬件上运行所述组合中的所述样本程序,并测量运行时间,得到运行时间数据;
根据所述特征数据和所述运行时间数据,得到所述训练数据集。
4.根据权利要求3所述的计算机程序的编译调优方法,其特征在于,所述基于所述训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型,包括:
以所述特征数据作为输入数据,以所述运行时间数据作为输出数据,对所述多任务学习模型进行训练,得到所述训练完备的预训练模型。
5.根据权利要求1所述的计算机程序的编译调优方法,其特征在于,所述基于所述预训练模型进行成本函数模型的初始化,得到目标成本函数模型,包括:
若待调优的目标硬件属于所述样本硬件集合,则按照所述预训练模型中与所述目标硬件对应的调优结构进行所述成本函数模型的初始化,得到所述目标成本函数模型。
6.根据权利要求1所述的计算机程序的编译调优方法,其特征在于,所述基于所述预训练模型进行成本函数模型的初始化,得到目标成本函数模型,还包括:
若待调优的目标硬件不属于所述样本硬件集合,则将所述预训练模型的共享层作为所述目标成本函数模型的共享层,并对所述目标成本函数模型的网络层进行随机初始化。
7.根据权利要求1所述的计算机程序的编译调优方法,其特征在于,所述利用所述目标成本函数模型对目标源程序进行调优,得到所述目标源程序的最优优化序列,包括:
在当前迭代过程中,基于当前的目标成本函数获取相应的候选优化序列;
根据所述候选优化序列,在待调优的目标硬件上对所述目标源程序进行编译和运行,得到目标运行时间数据,并根据所述目标运行时间数据扩充调优数据集;
判断当前迭代次数是否小于预设的迭代次数阈值;若是,则基于所述调优数据集更新所述目标成本函数模型,并在下一次迭代中基于更新后的目标成本函数模型对所述目标源程序进行调优;否则,将当前的所述调优数据集中时长最短的运行时间数据对应的所述候选优化序列确定为所述目标源程序的所述最优优化序列。
8.一种计算机程序的编译调优装置,其特征在于,包括生成模块、获取模块、训练模块、初始化模块以及调优模块;其中:
所述生成模块,用于选择样本硬件集合和样本程序集合,并为所述样本程序集合中的每个样本程序随机生成优化序列;
所述获取模块,用于在所述样本硬件集合中的样本硬件上对每种所述样本程序与所述优化序列的组合进行编译、特征抽取以及运行,得到训练数据集;
所述训练模块,用于基于所述训练数据集对预设的多任务学习模型进行训练,得到训练完备的预训练模型;
所述初始化模块,用于基于所述预训练模型进行成本函数模型的初始化,得到目标成本函数模型;
所述调优模块,用于利用所述目标成本函数模型对目标源程序进行调优,得到所述目标源程序的最优优化序列。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至权利要求7中任一项所述的计算机程序的编译调优方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求7中任一项所述的计算机程序的编译调优方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311266395.5A CN116991429B (zh) | 2023-09-28 | 2023-09-28 | 计算机程序的编译调优方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311266395.5A CN116991429B (zh) | 2023-09-28 | 2023-09-28 | 计算机程序的编译调优方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116991429A true CN116991429A (zh) | 2023-11-03 |
CN116991429B CN116991429B (zh) | 2024-01-16 |
Family
ID=88526988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311266395.5A Active CN116991429B (zh) | 2023-09-28 | 2023-09-28 | 计算机程序的编译调优方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991429B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070079297A1 (en) * | 2005-10-03 | 2007-04-05 | Arm Limited | System and method for compiling a computer program |
US20120017070A1 (en) * | 2009-03-25 | 2012-01-19 | Satoshi Hieda | Compile system, compile method, and storage medium storing compile program |
CN115398419A (zh) * | 2020-03-30 | 2022-11-25 | 甲骨文国际公司 | 用于基于目标的超参数调优的方法和系统 |
CN115469851A (zh) * | 2022-10-20 | 2022-12-13 | 晞德软件(北京)有限公司 | 一种编译器自动调参方法 |
CN115758379A (zh) * | 2022-11-17 | 2023-03-07 | 中国科学院软件研究所 | 一种基于迁移学习的跨语言编译器漏洞挖掘方法和装置 |
CN116126342A (zh) * | 2023-02-08 | 2023-05-16 | 亿咖通(湖北)技术有限公司 | 多硬件平台的模型编译方法及装置 |
CN116204191A (zh) * | 2023-01-09 | 2023-06-02 | 北京航空航天大学 | 一种基于遗传算法的编译器参数自动调优方法 |
CN116341634A (zh) * | 2022-11-18 | 2023-06-27 | 上海玄戒技术有限公司 | 神经结构搜索模型的训练方法、装置及电子设备 |
CN116541011A (zh) * | 2022-01-25 | 2023-08-04 | 慧与发展有限责任合伙企业 | 基于机器学习(ml)模型的编译器 |
-
2023
- 2023-09-28 CN CN202311266395.5A patent/CN116991429B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070079297A1 (en) * | 2005-10-03 | 2007-04-05 | Arm Limited | System and method for compiling a computer program |
US20120017070A1 (en) * | 2009-03-25 | 2012-01-19 | Satoshi Hieda | Compile system, compile method, and storage medium storing compile program |
CN115398419A (zh) * | 2020-03-30 | 2022-11-25 | 甲骨文国际公司 | 用于基于目标的超参数调优的方法和系统 |
CN116541011A (zh) * | 2022-01-25 | 2023-08-04 | 慧与发展有限责任合伙企业 | 基于机器学习(ml)模型的编译器 |
CN115469851A (zh) * | 2022-10-20 | 2022-12-13 | 晞德软件(北京)有限公司 | 一种编译器自动调参方法 |
CN115758379A (zh) * | 2022-11-17 | 2023-03-07 | 中国科学院软件研究所 | 一种基于迁移学习的跨语言编译器漏洞挖掘方法和装置 |
CN116341634A (zh) * | 2022-11-18 | 2023-06-27 | 上海玄戒技术有限公司 | 神经结构搜索模型的训练方法、装置及电子设备 |
CN116204191A (zh) * | 2023-01-09 | 2023-06-02 | 北京航空航天大学 | 一种基于遗传算法的编译器参数自动调优方法 |
CN116126342A (zh) * | 2023-02-08 | 2023-05-16 | 亿咖通(湖北)技术有限公司 | 多硬件平台的模型编译方法及装置 |
Non-Patent Citations (3)
Title |
---|
RIYADH BAGHDADI, MASSINISSA MEROUANI, MOHAMED-HICHAM LEGHETTAS, KAMEL ABDOUS, TAHA ARBAOUI, KARIMA BENATCHBA, SAMAN AMARASINGHE: "A Deep Learning Based Cost Model for Automatic Code Optimization", ARXIV * |
刘慧;赵荣彩;王琦;: "监督学习模型指导的函数级编译优化参数选择方法研究", 计算机工程与科学, no. 06 * |
池昊宇;陈长波;: "基于神经网络的循环分块大小预测", 计算机科学, no. 08 * |
Also Published As
Publication number | Publication date |
---|---|
CN116991429B (zh) | 2024-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sohrabizadeh et al. | AutoDSE: Enabling software programmers to design efficient FPGA accelerators | |
US11941400B2 (en) | Methods and apparatus for intentional programming for heterogeneous systems | |
US9703565B2 (en) | Combined branch target and predicate prediction | |
US5966537A (en) | Method and apparatus for dynamically optimizing an executable computer program using input data | |
US9201659B2 (en) | Efficient directed acyclic graph pattern matching to enable code partitioning and execution on heterogeneous processor cores | |
CN108027838B (zh) | 数据库查询系统和方法 | |
CN113283613B (zh) | 深度学习模型的生成方法、优化方法、装置、设备及介质 | |
CN104991773A (zh) | 程序生成方法及装置 | |
US11507348B2 (en) | Method and apparatus for generating chip-based computing function, device, and storage medium | |
Ahn et al. | Reinforcement learning and adaptive sampling for optimized dnn compilation | |
CN116663618B (zh) | 一种算子优化方法、装置、存储介质及电子设备 | |
WO2017052758A1 (en) | Heterogeneous compression architecture for optimized compression ratio | |
CN116860259B (zh) | 一种模型训练和编译器自动调优的方法、装置及设备 | |
Luo et al. | Finding representative sets of optimizations for adaptive multiversioning applications | |
US8103674B2 (en) | E-matching for SMT solvers | |
CN110929850A (zh) | 基于申威处理器的深度学习算子自动优化系统及方法 | |
CN116991429B (zh) | 计算机程序的编译调优方法、装置和存储介质 | |
US11733981B2 (en) | Methods, systems, articles of manufacture and apparatus to automatically optimize software programs | |
CN112990461A (zh) | 构建神经网络模型的方法、装置、计算机设备和存储介质 | |
CN116360790A (zh) | 一种基于虚拟机的代码编译方法、装置及执行方法、装置 | |
CN106354633A (zh) | 基于算法插件的任务调度表生成方法 | |
CN114840256A (zh) | 一种程序数据级并行分析方法、装置及相关设备 | |
CN115951936B (zh) | 向量化编译程序的芯片适配方法、装置、设备及介质 | |
US20230153568A1 (en) | Graph neural network accelerator with negative sampling | |
CN116755782B (zh) | 一种指令调度的方法、装置、设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |