CN117591242A - 基于底层虚拟机的编译优化方法、系统、存储介质及终端 - Google Patents

基于底层虚拟机的编译优化方法、系统、存储介质及终端 Download PDF

Info

Publication number
CN117591242A
CN117591242A CN202311616066.9A CN202311616066A CN117591242A CN 117591242 A CN117591242 A CN 117591242A CN 202311616066 A CN202311616066 A CN 202311616066A CN 117591242 A CN117591242 A CN 117591242A
Authority
CN
China
Prior art keywords
sequence
compiling
instruction
metadata
determining
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
Application number
CN202311616066.9A
Other languages
English (en)
Other versions
CN117591242B (zh
Inventor
张坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenliu Micro Intelligent Technology Shenzhen Co ltd
Original Assignee
Shenliu Micro Intelligent Technology Shenzhen Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenliu Micro Intelligent Technology Shenzhen Co ltd filed Critical Shenliu Micro Intelligent Technology Shenzhen Co ltd
Priority to CN202311616066.9A priority Critical patent/CN117591242B/zh
Publication of CN117591242A publication Critical patent/CN117591242A/zh
Application granted granted Critical
Publication of CN117591242B publication Critical patent/CN117591242B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明实施例公开了一种基于底层虚拟机的编译优化方法、系统、存储介质及终端,所述方法包括:根据运行时选择条件对可选指令序列进行权重计算确定最优选择;将所述最优选择存储至元数据;所述元数据实时反馈至底层虚拟机进行编译,获取最优编译结果。通过提前编译好若干条可选指令序列,并设置好权重计算方法,根据运行时的选择条件对可选指令序列进行权重计算,进行最优效率排序,自动匹配效率最高的可选指令序列作为最优选择,并将每一项的计算结果和最优选择存储为元数据,可即时反馈给底层虚拟机进行编译,最终获取最优的编译结果,使得程序在编译过程中能够对可选指令序列进行动态选择,以提高程序的性能和效率。

Description

基于底层虚拟机的编译优化方法、系统、存储介质及终端
技术领域
本发明涉及底层虚拟机技术领域,尤其涉及一种基于底层虚拟机的编译优化方法、系统、存储介质及终端。
背景技术
LLVM(low level virtual machine,底层虚拟机)是一个开源的编译器架构,因其较传统编译器来说更加灵活、适应性更好,已经被成功应用到多个应用领域。
传统的编译器在编译过程中是对计算机程序进行静态分析,并生成针对特定硬件平台的优化代码。然而,这种静态优化往往无法适应不同运行时环境和动态变化的工作负载。此外,当发生函数调用时,处理器需要做一些额外的工作,尤其对函数代码量小且执行次数多的函数而言,函数调用引起的额外消耗就会更大,解决方式就是对这些函数内联,然而,函数内联又会带来负面影响,内联后导致代码膨胀,从而可能引起寄存器溢出和缓存不命中等问题,影响程序执行效率和性能。
发明内容
基于此,有必要针对上述问题,提出了一种基于底层虚拟机的编译优化方法、系统、存储介质及终端。
一种基于底层虚拟机的编译优化方法,所述方法包括:
根据运行时选择条件对可选指令序列进行权重计算确定最优选择。
将所述最优选择存储至元数据。
所述元数据实时反馈至底层虚拟机进行编译,获取最优编译结果。
其中,所述根据运行时选择条件对可选指令序列进行权重计算确定最优选择,具体包括:
根据上下文信息对所述可选指令序列进行权重计算确定上下文信息选择条件下的指令序列权重。
根据可选指令序列的可用资源获取情况确定可用资源选择条件下的指令序列权重。
根据可选指令序列的总延迟确定总延迟选择条件下的指令序列权重。
根据可选指令序列的资源占用确定资源占用选择条件下的指令序列权重。
根据网络瓶颈对所述可选指令序列进行权重计算确定网络瓶颈选择条件下的指令序列权重。
根据所述上下文信息选择条件下的指令序列权重、所述可用资源选择条件下的指令序列权重、所述总延迟选择条件下的指令序列权重、所述资源占用选择条件下的指令序列权重和所述网络瓶颈选择条件下的指令序列权重的总和确定最优选择。
其中,所述根据上下文信息对所述可选指令序列进行权重计算确定上下文信息选择条件下的指令序列权重,具体包括:
获取所述可选指令序列对应函数序列内的基本块序列,所述基本块序列包括上下文信息。
根据所述上下文信息复制所述基本块序列。
更新复制后的所述基本块序列中的依赖关系。
通过所述函数序列的不同返回值解决更新后的基本块序列内指令与基本块序列外指令的依赖性,并处理所述基本块外指令的分支,获取新基本块序列。
在所述函数序列内创建所述新基本块序列,所述新基本块序列包括序列函数的调用指令和切换指令。
根据所述新基本块序列调用特定上下文信息的序列函数。
对所述序列函数进行优化设置,获取所述上下文信息选择条件下的指令序列权重。
其中,所述根据可选指令序列的总延迟确定总延迟选择条件下的指令序列权重,具体包括:
确定所述可选指令序列的操作数和依赖关系。
根据所述操作数和依赖关系构建数据流图。
根据所述数据流图确定延迟信息。
根据所述延迟信息对所述可选指令序列进行排序调度。
根据排序调度后的所述可选指令序列内延迟信息的和值确定总延迟指令序列权重。
其中,所述根据可选指令序列的资源占用确定资源占用选择条件下的指令序列权重,具体包括:
根据内存代码和性能分析代码确定最小内存占用。
根据编译过程中生成的总文件大小确定最小存储空间占用。
根据处理器运行时间短和处理器空闲时间长确定处理器最小利用率。
根据所述处理器运行时间短和所述最小内存占用确定最短编译时间。
根据所述最小内存占用、所述最小存储空间占用、所述处理器最小利用率和所述最短编译时间确定资源占用指令序列权重。
其中,所述根据网络瓶颈对所述可选指令序列进行权重计算确定网络瓶颈选择条件下的指令序列权重,具体包括:
获取所述可选指令序列的数据处理路径。
确定所述可选指令序列在所述数据处理路径上的网络延迟。
根据当前所述数据处理路径的资源占用情况和所述网络延迟确定网络瓶颈。
根据所述网络瓶颈的解决情况确定所述网络瓶颈下的指令序列权重。
其中,所述将所述最优选择存储至元数据,具体包括:
所述元数据包括短期元数据或长期元数据。
判断所述元数据是否仅用于当前编译。
若所述元数据仅用于当前编译,则所述元数据存储至所述短期元数据。
若所述元数据不是仅用于当前编译,则所述元数据存储至所述长期元数据。
一种基于底层虚拟机的编译优化系统,所述系统包括:
最优选择确定模块,用于根据运行时选择条件对可选指令序列进行权重计算,以获得最优选择。
存储模块,用于将所述最优选择存储至元数据。
最优编译结果获取模块,用于根据所述元数据进行编译,获取最优编译结果。
一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上所述方法的步骤。
一种终端,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上所述方法的步骤。
采用本发明实施例,具有如下有益效果:
本发明提供的一种基于底层虚拟机的编译优化方法提前编译好若干条可选指令序列,并设置好权重计算方法,根据运行时的选择条件对可选指令序列进行权重计算,进行最优效率排序,自动匹配效率最高的可选指令序列作为最优选择,并将每一项的计算结果和最优选择存储为元数据,可即时反馈给底层虚拟机进行编译,最终获取最优的编译结果,使得程序在编译过程中能够对可选指令序列进行动态选择,以提高计算机程序的执行效率和性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1是本发明提供的一种基于底层虚拟机的编译优化方法一实施例的流程示意图;
图2是本发明提供的数据流图一实施例的示意图;
图3是本发明提供的一种基于底层虚拟机的编译优化方法另一实施例的流程示意图;
图4是本发明提供的网络瓶颈分析示意图;
图5是本发明提供的一种基于底层虚拟机的编译优化系统一实施例的流程示意图;
图6是本发明提供的终端的一实施例的结构示意图;
图7是本发明提供的存储介质的一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
对于LLVM这样的编译框架来说,IR(Intermediate Representation,中间表示)是非常重要的。LLVM IR在内存中的模型由4层结构组成:模块、函数、基本块以及指令。模块是LLVM IR的顶层数据结构。每个模块包含一系列函数,每个函数包含一系列基本块,每个基本块包含一系列指令。具体地,LLVM中的模块可以理解为一个最小的编译单元,代表一个比较完整独立的代码块,并非“程序模块”,程序模块是一个更大的集合,包含了很多个编译单元;函数也与程序代码中的函数不同,LLVM IR中的函数由函数类型、名称、参数列表和函数体组成,函数体由基本块组成;基本块是LLVM IR中的基本执行单元,它由一系列按顺序执行的指令组成,但可以包含控制流指令以便实现程序的控制流程。
基于此,如图1所示,图1是本发明提供的一种基于底层虚拟机的编译优化方法一实施例的流程示意图。本发明提供一种基于底层虚拟机的编译优化方法,方法包括:
S101:根据运行时选择条件对可选指令序列进行权重计算确定最优选择。
在一个实施场景中,选择条件为上下文信息、可用资源获取情况、总延迟、资源占用情况、网络瓶颈。具体地,根据上下文信息对可选指令序列进行权重计算确定上下文信息选择条件下的指令序列权重;根据可选指令序列的可用资源获取情况确定可用资源选择条件下的指令序列权重;根据可选指令序列的总延迟确定总延迟选择条件下的指令序列权重;根据可选指令序列的资源占用确定资源占用选择条件下的指令序列权重;根据网络瓶颈对可选指令序列进行权重计算确定网络瓶颈选择条件下的指令序列权重;根据上下文信息选择条件下的指令序列权重、可用资源选择条件下的指令序列权重、总延迟选择条件下的指令序列权重、资源占用选择条件下的指令序列权重和网络瓶颈选择条件下的指令序列权重的总和确定最优选择。其中,总和最高的对应权重最高,即为最优选择。
优选地,根据上下文信息对可选指令序列进行权重计算时,首先获取可选指令序列对应的函数序列内的基本块序列。其中,基本块序列包括上下文信息。通过分析工具(一段代码文件,例如prof_file.e),分析工具会找到运行时行为表现出较大差异且执行相对频繁的基本块序列,如果一个程序段在多次执行中表现相同,则表示不需要以不同的方式优化这个程序段。
进一步地,根据上下文信息复制基本块序列,更新复制后的基本块序列中的依赖关系,通过函数序列的不同返回值解决更新后的基本块序列内之领域基本块序列外指令的依赖性,并处理基本块外指令的分支,获取新基本块序列。具体地,在每个函数序列中执行多次的基本块序列仅被复制一次,例如对于一个函数序列(1,3,6,3,4,4,8),基本块序列3和4仅重复一次,因此新函数将仅包含基本块1,3,6,4和8。其中,基本块序列3中的指令序列依赖于基本块序列1中的指令序列,复制基本块序列3中的指令将依赖于复制基本块序列1中的指令,并且将基本块序列内的分支替换为重复的。进而通过函数参数(生成的序列函数的输入参数)解决序列基本块中的指令与序列基本块外的指令的依赖性,同时通过使用函数序列的不同返回值处理序列基本块外的分支,来获取新基本块序列。
进一步地,在函数序列内创建该新基本块序列,新基本块序列包括序列函数的调用指令和切换指令。根据新基本块序列调用特定上下文信息的序列函数。
对序列函数进行优化设置,根据序列函数优化程度的不同,确定上下文信息选择条件下的指令序列权重,优化程度越高,上下文信息选择条件下的指令序列的权重越高。
具体地,通过LLVM自带的opt工具的优化选项来为序列函数找到定制的优化设置,因此也不会再额外设计新的优化算法。初始状态是关闭所有opt优化,之后根据产生的序列函数内容选择并打开不同的优化选项,从而产生定制的优化设置。可供选择的优化选项可由“opt -help-list”命令查看,列举部分opt选项如表1所示。
表1. 优化选项示例
优选地,根据可选指令序列的资源占用确定资源占用选择条件下的指令序列权重。具体地,在编译过程中,底层虚拟机的opt或IIc工具可以提供响应已获取可用资源的状况,若当前可选指令序列以获取的资源最多,则对应的资源占用选择条件下的指令序列权重越大,说明可已最大限度避免数据被推到外部内存而增加的运行开销,以及运行时需要反复进出当前运行环境读取数据和指令。
优选地,根据可选指令序列的总延迟确定总延迟选择条件下的指令序列权重时,确定可选指令序列的操作数和依赖关系,根据操作数和依赖关系构建数据流图,如图2所示,图2是本发明提供的数据流图一实施例的示意图,基于数据流图进行延迟计算。其中,R1、R2、R3、R4、R5、R6、R7、R8、R9、R10、R11、R12表示操作数,基于相关指令构建各操作数之间的依赖关系,进而确定数据流图。调度算法将会实现从节点①到节点④到节点②到节点③到节点⑤的执行顺序,通过上述执行顺序最小化总延迟,并且在图2中整个数据流图的总延迟是为11。
具体地,计算指令从开始执行到完成所需的时间,包括指令本身的执行时间以及存在依赖关系的前置延迟。采用调度算法对延迟信息进行排序和调度,以最大程度减少总延迟。最终,将可选指令序列的延迟相加,得到总延迟,总延迟越高对应的总延迟选择条件下的指令序列权重越高。
优选地,根据可选指令序列的资源占用确定资源占用选择条件下的指令序列权重时,通过在编译框架中加入监视内存使用的逻辑代码,即时获取并输出程序编译过程中的内存使用情况,确定最小内存占用;检测编译过程中生成的总文件大小确定最小存储空间占用;根据处理器运行时间和处理器空闲时间确定处理器最小利用率,具体地,根据处理器最短的运行时间和最长的空闲时间确定处理器最小利用率;根据处理器运行时间和最小内存占用确定最短编译时间,具体地,根据处理器最短的运行时间和最小的内存占用确定最短编译时间;根据最小内存占用、最小存储空间占用、处理器最小利用率和最短编译时间确定资源占用指令序列权重。
优选地,根据网络瓶颈对可选指令序列进行权重计算确定网络瓶颈选择条件下的指令序列权重时,获取可选指令序列的数据处理路径;确定可选指令序列在数据处理路径上的网络延迟,具体的,根据处理时延、排队时延、发送时延和传播时延的加和确定数据处理路径上的网络延迟,并依次保存对应计算结果到元数据;根据当前数据处理路径的资源占用情况和网络延迟确定网络瓶颈;最终,根据网络瓶颈的解决情况确定网络瓶颈下的指令序列权重,具体地,找到网络瓶颈之后,提前调度需要读写的数据,将能够解决数据处理路径中的网络瓶颈的路径可以获得当前的使用权限,并将结果记录为元数据,再进行编译和分配后续代码序列,进而可以避免同时使用相同的路径段,解决情况越好,网络瓶颈下的指令序列权重越高。
需要说明的是,根据最小内存占用、最小存储空间占用、处理器最小利用率和最短编译时间确定当前数据处理路径的资源占用情况。
S102:将最优选择存储至元数据。
在一个实施场景中,在编译过程中不同的上下文信息、可利用资源获取情况、总延迟、资源占用情况和网络延迟进行权重计算后,将权重计算中所有的计算结果均保存在元数据中。具体地,元数据包括短期元数据或长期元数据,判断元数据是否仅用于当前编译;若元数据仅用于当前编译,则元数据存储至短期元数据;若元数据不是仅用于当前编译,则元数据存储至长期元数据,根据编译工程选项来决定需要保存的类型。
S103:元数据实时反馈至底层虚拟机进行编译,获取最优编译结果。
在一个具体的实施场景中,将元数据实时反馈给底层虚拟机,动态调整优化策略,底层编译器在编译中自产生自利用这些元数据,最终获取最优编译结果。
通过上述描述可知,本发明提供的一种基于底层虚拟机的编译优化方法提前编译好若干条可选指令序列,并设置好权重计算方法,根据运行时的选择条件对可选指令序列进行权重计算,进行最优效率排序,自动匹配效率最高的可选指令序列作为最优选择,并将每一项的计算结果和最优选择存储为元数据,可即时反馈给底层虚拟机进行编译,最终获取最优的编译结果,使得程序在编译过程中能够对可选指令序列进行动态选择,以提高程序的性能和效率。
如图3所示,图3是本发明提供的一种基于底层虚拟机的编译优化方法另一实施例的流程示意图。一种基于底层虚拟机的编译优化方法,方法具体包括:
S201:根据上下文信息对可选指令序列进行权重计算确定上下文信息选择条件下的指令序列权重。
S202:根据可选指令序列的可用资源获取情况确定可用资源选择条件下的指令序列权重。
S203:根据可选指令序列的总延迟确定总延迟选择条件下的指令序列权重。
S204:根据可选指令序列的资源占用确定资源占用选择条件下的指令序列权重。
需要说明的是,步骤S201-S204在图1所示的实施场景中已做详细论述,在此不再赘述。
S205:根据网络瓶颈对可选指令序列进行权重计算确定网络瓶颈选择条件下的指令序列权重。
在一个实施场景中,如图4所示,图4是本发明提供的网络瓶颈分析示意图。结合图3和图4,其中,BN01-BN07表示数据处理路径的网络瓶颈,图中是一个假设有3个待处理函数(可选指令序列)的网络瓶颈分析图,通过主调度器来控制共享内存的资源分配,数据处理路径和共享内存都是共享资源,3个可选指令序列就可能形成6处网络瓶颈,在经过网络瓶颈分析之后找到最终真正的网络瓶颈BN07,它与加速器相连。具体地,首先获取可选指令序列的数据处理路径,计算每个数据处理路径到达加速器的网络延迟,根据当前数据处理路径的资源占用情况和网络延迟确定真正的网络瓶颈BN07,找到网络瓶颈之后,提前调度需要读写的数据,根据网络瓶颈BN07的解决情况确定该网络瓶颈下的指令序列权重。
需要说明的是,在进行代码编译时需要把相应的时序信息也加入进去,避免前序的处理流同时进入数据处理路径去到网络瓶颈BN07竞争。
S206:根据上下文信息选择条件下的指令序列权重、可用资源选择条件下的指令序列权重、总延迟选择条件下的指令序列权重、资源占用选择条件下的指令序列权重和网络瓶颈选择条件下的指令序列权重的总和确定最优选择。
S207:将最优选择存储至元数据。
S208:元数据实时反馈至底层虚拟机进行编译,获取最优编译结果。
需要说明的是,步骤S206-S208在图1所示的实施场景中已做详细论述,在此不再赘述。
通过上述描述可知,本发明提供的一种基于底层虚拟机的编译优化方法通过在计算机程序运行时上下文信息、可用资源获取情况、总延迟、资源占用情况、网络瓶颈对可选指令序列进行权重计算,动态调整优化策略,确定最优选择,并存储至元数据,实时反馈给底层虚拟机进行编译和优化,能够及时响应程序执行的变化,并根据反馈信息进行动态优化,实现了自适应性和灵活性,从而提高程序的执行效率和性能,并且该方法在不同计算机环境和应用领域中具备广泛的实用性。
如图5所示,图5是本发明提供的一种基于底层虚拟机的编译优化系统一实施例的流程示意图。一种基于底层虚拟机的编译优化系统10,系统包括:
最优选择确定模块11,用于根据运行时选择条件对可选指令序列进行权重计算,以获得最优选择。
存储模块12,用于将最优选择存储至元数据。
最优编译结果获取模块13,用于根据元数据进行编译,获取最优编译结果。
在一个具体的实施场景中,在最优选择确定模块11中,根据运行时选择条件对可选指令序列进行权重计算获得最优选择。其中,选择条件包括上下文信息、可用资源获取情况、总延迟、资源占用、网络瓶颈,根据上下文信息选择条件下的指令序列权重、可用资源选择条件下的指令序列权重、总延迟选择条件下的指令序列权重、资源占用选择条件下的指令序列权重和网络瓶颈选择条件下的指令序列权重的总和确定最优选择,综合所得权重最高的视为最优选择。进一步地,在存储模块12中,判断元数据是否仅用于当前编译,若元数据仅用于当前编译,则元数据存储至短期元数据;若元数据不是仅用于当前编译,则元数据存储至长期元数据。最终在最优编译结果获取模块13中,根据元数据进行编译,动态选择最优的指令序列,获取最优编译结果。
请参阅图6,图6是本发明提供的终端的一实施例的结构示意图。终端20包括存储器21和处理器22。存储器21存储有计算机程序,处理器22在工作时执行该计算机程序以实现如图1和图3所示的方法。
关于上述终端20执行计算机程序时实现的一种基于底层虚拟机的编译优化方法的具体技术细节已在前述方法步骤中详细论述,故此不做赘述。
请参阅图7,图7是本发明提供的存储介质的一实施例的结构示意图。存储介质30中存储至少由一个计算机程序31,计算机程序31被处理器22执行以实现如图1和图3所示的方法,详细的方法可参见上述,在此不再赘述。在一个实施例中,存储介质30可以是存储芯片、硬盘或者移动硬盘或者优盘、光盘等其他可读写存储的工具,还可以是服务器等等。
上述对本说明书特定实施例进行了描述,其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,附图中描绘的过程不一定必须按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机可读存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (10)

1.一种基于底层虚拟机的编译优化方法,其特征在于,所述方法包括:
根据运行时选择条件对可选指令序列进行权重计算确定最优选择;
将所述最优选择存储至元数据;
所述元数据实时反馈至底层虚拟机进行编译,获取最优编译结果。
2.根据权利要求1所述的基于底层虚拟机的编译优化方法,其特征在于,所述根据运行时选择条件对可选指令序列进行权重计算确定最优选择,具体包括:
根据上下文信息对所述可选指令序列进行权重计算确定上下文信息选择条件下的指令序列权重;
根据可选指令序列的可用资源获取情况确定可用资源选择条件下的指令序列权重;
根据可选指令序列的总延迟确定总延迟选择条件下的指令序列权重;
根据可选指令序列的资源占用确定资源占用选择条件下的指令序列权重;
根据网络瓶颈对所述可选指令序列进行权重计算确定网络瓶颈选择条件下的指令序列权重;
根据所述上下文信息选择条件下的指令序列权重、所述可用资源选择条件下的指令序列权重、所述总延迟选择条件下的指令序列权重、所述资源占用选择条件下的指令序列权重和所述网络瓶颈选择条件下的指令序列权重的总和确定最优选择。
3.根据权利要求2所述的基于底层虚拟机的编译优化方法,其特征在于,所述根据上下文信息对所述可选指令序列进行权重计算确定上下文信息选择条件下的指令序列权重,具体包括:
获取所述可选指令序列对应函数序列内的基本块序列,所述基本块序列包括上下文信息;
根据所述上下文信息复制所述基本块序列;
更新复制后的所述基本块序列中的依赖关系;
通过所述函数序列的不同返回值解决更新后的基本块序列内指令与基本块序列外指令的依赖性,并处理所述基本块外指令的分支,获取新基本块序列;
在所述函数序列内创建所述新基本块序列,所述新基本块序列包括序列函数的调用指令和切换指令;
根据所述新基本块序列调用特定上下文信息的序列函数;
对所述序列函数进行优化设置,获取所述上下文信息选择条件下的指令序列权重。
4.根据权利要求2所述的基于底层虚拟机的编译优化方法,其特征在于,所述根据可选指令序列的总延迟确定总延迟选择条件下的指令序列权重,具体包括:
确定所述可选指令序列的操作数和依赖关系;
根据所述操作数和依赖关系构建数据流图;
根据所述数据流图确定延迟信息;
根据所述延迟信息对所述可选指令序列进行排序调度;
根据排序调度后的所述可选指令序列内延迟信息的和值确定总延迟指令序列权重。
5.根据权利要求2所述的基于底层虚拟机的编译优化方法,其特征在于,所述根据可选指令序列的资源占用确定资源占用选择条件下的指令序列权重,具体包括:
根据内存代码和性能分析代码确定最小内存占用;
根据编译过程中生成的总文件大小确定最小存储空间占用;
根据处理器运行时间和处理器空闲时间确定处理器最小利用率;
根据所述处理器运行时间和所述最小内存占用确定最短编译时间;
根据所述最小内存占用、所述最小存储空间占用、所述处理器最小利用率和所述最短编译时间确定资源占用指令序列权重。
6.根据权利要求2所述的基于底层虚拟机的编译优化方法,其特征在于,所述根据网络瓶颈对所述可选指令序列进行权重计算确定网络瓶颈选择条件下的指令序列权重,具体包括:
获取所述可选指令序列的数据处理路径;
确定所述可选指令序列在所述数据处理路径上的网络延迟;
根据当前所述数据处理路径的资源占用情况和所述网络延迟确定网络瓶颈;
根据所述网络瓶颈的解决情况确定所述网络瓶颈下的指令序列权重。
7.根据权利要求2所述的基于底层虚拟机的编译优化方法,其特征在于,所述将所述最优选择存储至元数据,具体包括:
所述元数据包括短期元数据或长期元数据;
判断所述元数据是否仅用于当前编译;
若所述元数据仅用于当前编译,则所述元数据存储至所述短期元数据;
若所述元数据不是仅用于当前编译,则所述元数据存储至所述长期元数据。
8.一种基于底层虚拟机的编译优化系统,其特征在于,所述系统包括:
最优选择确定模块,用于根据运行时选择条件对可选指令序列进行权重计算,以获得最优选择;
存储模块,用于将所述最优选择存储至元数据;
最优编译结果获取模块,用于根据所述元数据进行编译,获取最优编译结果。
9.一种存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种终端,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
CN202311616066.9A 2023-11-30 2023-11-30 基于底层虚拟机的编译优化方法、系统、存储介质及终端 Active CN117591242B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311616066.9A CN117591242B (zh) 2023-11-30 2023-11-30 基于底层虚拟机的编译优化方法、系统、存储介质及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311616066.9A CN117591242B (zh) 2023-11-30 2023-11-30 基于底层虚拟机的编译优化方法、系统、存储介质及终端

Publications (2)

Publication Number Publication Date
CN117591242A true CN117591242A (zh) 2024-02-23
CN117591242B CN117591242B (zh) 2024-04-05

Family

ID=89913006

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311616066.9A Active CN117591242B (zh) 2023-11-30 2023-11-30 基于底层虚拟机的编译优化方法、系统、存储介质及终端

Country Status (1)

Country Link
CN (1) CN117591242B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117779A1 (en) * 2002-12-17 2004-06-17 Bea Systems, Inc. System and method for iterative code optimization using adaptive size metrics
US20140344791A1 (en) * 2013-05-15 2014-11-20 National Tsing Hua University Method and apparatus for code size reduction
CN109324949A (zh) * 2018-09-14 2019-02-12 珠海金山网络游戏科技有限公司 一种lua代码执行性能的静态分析方法
CN116360790A (zh) * 2023-03-15 2023-06-30 之江实验室 一种基于虚拟机的代码编译方法、装置及执行方法、装置
CN116661804A (zh) * 2023-07-31 2023-08-29 珠海市芯动力科技有限公司 代码编译方法、代码编译装置、电子设备和存储介质
CN116841592A (zh) * 2023-08-31 2023-10-03 腾讯科技(深圳)有限公司 指令管理方法、装置、计算机、存储介质及程序产品

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117779A1 (en) * 2002-12-17 2004-06-17 Bea Systems, Inc. System and method for iterative code optimization using adaptive size metrics
US20140344791A1 (en) * 2013-05-15 2014-11-20 National Tsing Hua University Method and apparatus for code size reduction
CN109324949A (zh) * 2018-09-14 2019-02-12 珠海金山网络游戏科技有限公司 一种lua代码执行性能的静态分析方法
CN116360790A (zh) * 2023-03-15 2023-06-30 之江实验室 一种基于虚拟机的代码编译方法、装置及执行方法、装置
CN116661804A (zh) * 2023-07-31 2023-08-29 珠海市芯动力科技有限公司 代码编译方法、代码编译装置、电子设备和存储介质
CN116841592A (zh) * 2023-08-31 2023-10-03 腾讯科技(深圳)有限公司 指令管理方法、装置、计算机、存储介质及程序产品

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ALEXIS ENGELKE ET.AL: "Instrew: Leveraging LLVM for High Performance Dynamic Binary Instrumentation", 《ACM》, 17 March 2020 (2020-03-17), pages 172 - 184 *
朱燕 等: "基于LLVM 中间表示的数据依赖并行计算方法", 《计算机应用研究》, vol. 37, no. 2, 29 February 2020 (2020-02-29), pages 437 - 442 *
网络作者: "LLVM编译器", pages 1 - 11, Retrieved from the Internet <URL:https://www.jianshu.com/p/35f5205d9c28> *

Also Published As

Publication number Publication date
CN117591242B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
US8782645B2 (en) Automatic load balancing for heterogeneous cores
US6446258B1 (en) Interactive instruction scheduling and block ordering
CN110308982B (zh) 一种共享内存复用方法及装置
JP5611756B2 (ja) プログラム・フロー制御
US20130198495A1 (en) Method and Apparatus For Register Spill Minimization
CN114580653A (zh) 机器学习计算优化方法和编译器
JP2019049843A (ja) 実行ノード選定プログラム、実行ノード選定方法及び情報処理装置
CN112748993A (zh) 任务执行方法、装置、存储介质及电子设备
CN114924748A (zh) 编译方法、装置及设备
EP2943877A1 (en) Method and apparatus for exploiting data locality in dynamic task scheduling
US8510529B2 (en) Method for generating program and method for operating system
WO2022166480A1 (zh) 任务调度方法、装置及系统
WO2024109312A1 (zh) 任务调度执行方法、任务调度执行指令的生成方法及装置
CN117591242B (zh) 基于底层虚拟机的编译优化方法、系统、存储介质及终端
CN110990151A (zh) 一种基于异构计算平台的业务处理方法
Mei et al. Integrating java 8 streams with the real-time specification for java
CN113296788B (zh) 指令调度方法、装置、设备及存储介质
WO2022048191A1 (en) Method and apparatus for reusable and relative indexed register resource allocation in function calls
CN111258657B (zh) 流水线控制方法及相关设备
US11513841B2 (en) Method and system for scheduling tasks in a computing system
Jungklass et al. Memopt: Automated memory distribution for multicore microcontrollers with hard real-time requirements
CN114428653B (zh) 使用不同编译设置的代码的即时jit编译实例
Kästner et al. Integer linear programming vs. graph-based methods in code generation
Jatala et al. Scratchpad sharing in GPUs
Chard et al. Productive Parallel Programming with Parsl

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