CN114968201A - 一种编译方法、编译装置、计算机设备及存储介质 - Google Patents

一种编译方法、编译装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN114968201A
CN114968201A CN202110200630.3A CN202110200630A CN114968201A CN 114968201 A CN114968201 A CN 114968201A CN 202110200630 A CN202110200630 A CN 202110200630A CN 114968201 A CN114968201 A CN 114968201A
Authority
CN
China
Prior art keywords
compiling
task
compilers
target
scheduling
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.)
Pending
Application number
CN202110200630.3A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110200630.3A priority Critical patent/CN114968201A/zh
Publication of CN114968201A publication Critical patent/CN114968201A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种编译方法、编译装置、计算机设备及存储介质,所述方法包括:在获取到携带目标编译任务的编译指令时,从调度设备负责编译任务调度的M台编译机中确定用于执行该目标编译任务的N台编译机,将目标编译任务分配给该N台编译机,以使得该N台编译机分别执行分配的所述目标编译任务包括的编译子任务,得到编译结果;其中,N台编译机中的任意一台编译机被分配以执行编译子任务时,此编译机作为编译资源被该编译子程序独占使用。采用本申请可以利用多台编译机合作完成目标编译任务,有效提高编译效率;并且通过专门负责编译的多台编译机完成编译任务,相对给每一个开发人员配置一台编译机,可以有效降低成本。

Description

一种编译方法、编译装置、计算机设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种编译方法、编译装置、计算机设备及存储介质。
背景技术
目前,通常是利用开发端对需要编译的代码文件进行本地编译,但开发端普遍为普通开发机,编译速度缓慢且容易OOM(Out of Memory,内存溢出)。而为了解决这个问题,可以通过配置较好的编译机进行代码文件的编译,但如果开发人员多,并给每个开发人员都提供一台较好的编译机,则成本巨大。因此,如何在提高编译速度的基础上有效节省编译成本是有待解决的问题。
发明内容
本申请实施例提供了一种编译方法、编译装置、计算机设备及存储介质,能够提高编译速度,并有效降低编译成本。
一方面,本申请实施例提供了一种编译方法,该方法包括:
获取编译指令,所述编译指令携带待编译代码文件对应的目标编译任务;
响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数;
根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,所述M为大于1的正整数,所述N为正整数;
将所述目标编译任务分配给所述N台编译机,以使得所述N台编译机分别执行分配的所述目标编译任务包括的编译子任务,得到编译结果;
其中,所述N台编译机中的任意一台编译机被分配以执行所述编译子任务时,此编译机作为编译资源被所述编译子程序独占使用。
一方面,本申请实施例提供了一种编译装置,该装置包括:
获取单元,用于获取编译指令,所述编译指令携带待编译代码文件对应的目标编译任务;
所述获取单元,还用于响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数;
处理单元,用于根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,所述M为大于1的正整数,所述N为正整数;
所述处理单元,用于将所述目标编译任务分配给所述N台编译机,以使得所述N台编译机分别执行分配的所述目标编译任务包括的编译子任务,得到编译结果;其中,所述N台编译机中的任意一台编译机被分配以执行所述编译子任务时,此编译机作为编译资源被所述编译子程序独占使用。
在一种可选的实施方式中,该装置还包括接收单元,所述接收单元,用于接收管理设备发送的编译指令,所述编译指令是所述管理设备在接收到开发端发送的携带待编译代码文件的编译请求之后发送给所述调度设备的;其中,所述编译指令携带的目标编译任务为所述待编译代码文件对应的至少部分编译任务。
在一种可选的实施方式中,获取单元获取由调度设备负责编译任务调度的M台编译机的状态参数之前,处理单元还用于:确定是否存储有所述目标编译任务对应的可执行文件,若未存储有所述目标编译任务对应的可执行文件,则执行所述获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
在一种可选的实施方式中,处理单元根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,具体包括:根据所述M台编译机的状态参数从所述M台编译机中确定满足任务分配条件的一台或者多台编译机;确定所述目标编译任务所能够拆分成的可编译代码子文件的数目;根据所述可编译代码子文件的数目从所述满足任务分配条件的一台或者多台编译机中,确定用于执行所述目标编译任务的N台编译机。
在一种可选的实施方式中,获取单元响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数之前,处理单元还用于:根据所述编译指令携带的所述开发端的标识,确定所述开发端是否具备发起编译请求的资格;若所述开发端具备发起编译请求的资格,则根据所述编译指令携带的所述待编译代码文件对应的目标编译任务的编译环境参数,确定由调度设备负责编译任务调度的M台编译机是否能够编译所述目标编译任务;若是,则执行所述响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
在一种可选的实施方式中,接收单元还用于接收所述N台编译机在执行所述目标编译任务完成后发送的编译结果;
处理单元还用于根据所述N台编译机发送的编译结果,生成所述目标编译任务对应的可执行文件,存储所述可执行文件。
在一种可选的实施方式中,目标编译机在执行分配的所述目标编译任务包括的编译子任务之前,若检测到缓存有所述分配的所述目标编译任务对应的可执行文件,则从缓存中获取相应的可执行文件;若检测到未缓存所述分配的所述目标编译任务对应的可执行文件,则执行分配的所述目标编译任务包括的编译子任务,得到编译结果;所述目标编译机为所述N台编译机中的任意一台。
一方面,本申请实施例提供了一种计算机设备,其特征在于,包括:处理器、通信接口和存储器,所述处理器、所述通信接口和所述存储器相互连接,其中,所述存储器存储有可执行程序代码,所述处理器用于调用所述可执行程序代码,执行如上述的编译方法
一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述的编译方法。
一方面,本申请实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机设备执行上述的编译方法。
本申请实施例通过,在获取到携带目标编译任务的编译指令时,从调度设备负责编译任务调度的M台编译机中确定用于执行该目标编译任务的N台编译机,将目标编译任务分配给该N台编译机,以使得该N台编译机分别执行分配的所述目标编译任务包括的编译子任务,得到编译结果,从而可以利用多台编译机合作完成目标编译任务,有效提高编译效率;并且通过专门负责编译的多台编译机完成编译任务,相对给每一个开发人员配置一台编译机,可以有效降低成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的一种编译系统的架构示意图;
图2是本申请一个示例性实施例提供的一种编译方法的流程示意图;
图3是本申请一个示例性实施例提供的另一种编译方法的流程示意图;
图4是本申请一个示例性实施例提供的又一种编译方法的流程示意图;
图5示出了响应bk-make命令所执行的步骤;
图6是本申请一个示例性实施例提供的一种编译装置的结构示意图;
图7是本申请一个示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,一般是利用开发端对需要编译的代码文件进行本地编译,但开发端普遍为普通开发机,编译速度缓慢且容易OOM(Out of Memory,内存溢出)。而为了解决这个问题,可以通过配置较好的编译机进行代码文件的编译,但如果开发人员多,并给每个开发人员都提供一台较好的编译机,则成本巨大。基于此,本申请实施例提供一种编译方法,通过利用多台编译机合作完成目标编译任务,有效提高编译效率,并且通过专门负责编译的多台编译机完成编译任务,相对给每一个开发人员配置一台编译机,可以有效降低成本。
请参见图1,图1是本申请一个示例性实施例提供的一种编译系统的架构示意图。如图1所示,该编译系统包括开发端101、管理设备102、至少一个调度设备103、至少一个编译机104。
开发端101是用于编写程序的电子设备,该电子设备可以是台式计算机或膝上型便携计算机等。开发端101与管理设备102之间通过有线或无线网络连接。管理设备102可以是一台设备,或者由若干台设备组成的设备集群。该管理设备102用于接收开发端101发送的携带待编译代码文件的编译请求。管理设备102与至少一个调度设备103之间通过有线或无线网络相连。调度设备103可以是一台设备,或者由若干台设备组成的设备集群。调度设备103用于接收管理设备102发送的携带待编译代码文件对应的目标编译任务的编译指令。调度设备103与至少一台编译机104之间通过有线或无线网络连接。编译机104是具有程序编译功能的电子设备。编译机104用于根据调度服务器103分配的编译子任务进行编译,得到编译结果。
图1所示的编译系统的工作原理如下:
当开发人员通过开发端101撰写一段代码后提交编译时,开发端101会进行代码文件的大小的计算以及代码文件的打包,并基于打包的待编译代码文件、开发端101的标识信息、待编译代码文件所对应的编译环境参数等生成编译请求发送给管理设备102。其中,开发端101的标识信息指可表明开发端身份信息的标识信息,其可以是开发端101的设备标识,如MAC地址(Media Access Control Address,物理地址)、IP(Internet Protocol,网络之间互连的协议)地址等,也可以是调度设备103或者编译系统分配的一个用户指示开发端101具备编译代码文件资格的ID(Identity document,身份标识)。编译环境参数是指与编译相关的参数,包括编译结果的文件类型或程序类型、编译环境的软件工具、编译环境的软件工具对应的版本信息以及编译环境的系统库中的任一项或多项。
管理设备102接收到编译请求后,将该编译请求中打包的待编译代码文件进行解压,根据解压后的待编译代码文件确定可拆分成待编译代码子文件的数目(保证运行每个待编译代码子文件所对应的代码能够实现一个或者多个功能),基于该数目对解压后的待编译代码文件进行拆分,得到多个待编译代码子文件,然后根据多个待编译代码子文件和待编译代码子文件中代码所对应的编译环境参数生成多个目标编译任务(可根据一个待编译代码子文件和对应的编译环境参数生成一个目标编译任务,也可根据多个待编译代码子文件和对应的编译环境参数生成一个目标编译任务),最后根据目标编译任务生成编译指令发送给一个或多个调度设备103。
调度设备103响应该编译指令,先在存储装置中确定是否存储有目标编译任务对应的可执行文件,若存储有目标编译任务对应的可执行文件,则从存储装置中获取相应的可执行文件,不再进行后续分配编译子任务等过程,若未存储有目标编译任务对应的可执行文件,则获取由调度设备103负责编译任务调度的M台编译机104的状态参数,该状态参数包括编译机中负载量、剩余待编译代码文件的编译时间、编译软件工具、编译速度等任一项或多项参数信息,根据M台编译机的状态参数从M台编译机中确定满足当前负载量小于或者等于预设负载量、剩余编译时间小于或者等于预设时间阈值、编译速度大于或者等于预设速度阈值、编译机中包括编译任务所需的编译软件工具中的任一项或多项的一台或多台编译机,然后根据编译指令中携带的目标编译任务所能够拆分成的可编译代码子文件的数目,从一台或多台编译机中根据编译机104的优先级确定出执行目标编译任务的N台编译机104,然后将目标编译任务包括的编译子任务分配给N台编译机104。
N台编译机104中任意一台编译机在接收到调度设备103分配的编译子任务时,先在缓存中检测是否有编译子任务对应的可执行文件,若有则从缓存中获取相应的可执行文件,若没有则执行分配的编译子任务,并得到编译结果。其中,N台编译机104中任意一台编译机在执行分配的编译子任务的过程中,只执行分配的编译子任务,并不同时执行其他调度设备103分配的编译任务。最后,编译机104将得到的编译结果发送给相应的调度设备103,调度设备103根据N台编译机发送的编译结果生成目标编译任务对应的可执行文件,存储该可执行文件或发送给预设的开发端;或者编译机104直接将编译结果发送给预定的开发端。可以理解的是,预定的开发端可以是编译请求所对应的开发端,也可以是编译系统设置或用户自定义的一个或多个开发端。
本申请实施例将开发端的待编译代码文件发送给多个编译机进行编译,减轻了本机的编译负担,并且可以利用多台编译机合作完成目标编译任务,有效提高编译效率;还可以通过专门负责编译的多台编译机完成编译任务,相对给每一个开发人员配置一台编译机,可以有效降低成本。
可以理解的是,图1所示的编译系统是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
请参见图2,图2是本申请一个示例性实施例提供的一种编译方法的流程示意图,该方法是由调度设备来执行的,该方法包括以下步骤S201-S204:
S201、获取编译指令,编译指令携带待编译代码文件对应的目标编译任务。
本申请实施例中,编译指令是管理设备在接收到开发端发送的携带待编译代码文件的编译请求之后发送给调度设备的,所述编译指令携带的目标编译任务为所述待编译代码文件对应的至少部分编译任务。可以理解的是,目标编译任务包括待编译代码文件中的至少部分代码、该部分或者全部代码所对应的编译环境参数,运行目标编译任务所对应的代码能够实现一个或者多个功能。其中,编译环境参数包括编译结果的文件类型或程序类型、编译环境的软件工具、编译环境的软件工具对应的版本信息等。
S202、响应编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数。
本申请实施例中,编译机的状态参数是指编译机当前状态下的参数信息,该状态参数包括编译机中负载量、剩余待编译代码文件的编译时间、编译软件工具、编译速度等任一项或多项参数信息。调度设备接收到编译指令之后,响应该编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数,即获取M台编译机的当前负载、剩余编译时间、当前状态下的编译软件工具等情况,便于进行目标编译机的选择,有利于编译速度的提高。
在一种可选的实施方式中,所述响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数之前,所述方法还可包括:根据所述编译指令携带的所述开发端的标识,确定所述开发端是否具备发起编译请求的资格;若所述开发端具备发起编译请求的资格,则根据所述编译指令携带的所述待编译代码文件对应的目标编译任务的编译环境参数,确定由调度设备负责编译任务调度的M台编译机是否能够编译所述目标编译任务;若是,则执行所述响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
本申请实施例中,开发端的标识是指可表明开发端身份信息的标识,其可以是开发端的设备标识,如MAC地址(Media Access Control Address,物理地址)、IP(InternetProtocol,网络之间互连的协议)地址等,也可以是调度设备或者编译系统分配的一个用户指示开发端具备编译代码文件资格的ID(Identity document,身份标识)。编译环境参数是指与编译相关的参数,包括编译结果的文件类型或程序类型、编译环境的软件工具、编译环境的软件工具对应的版本信息以及编译环境的系统库中的任一项或多项。本申请实施例中,调度设备在获取其负责调度的M台编译机的状态参数之前,对开发端的相关信息进行验证,以提高编译系统的安全性,具体的,根据编译指令携带的开发端的标识,确定开发端是否具备发起编译请求的资格,例如是否通过开发端的标识在调度设备或编译系统进行过注册,或者注册后是否有调度设备或编译系统分配的唯一标识,若判断该开发端具备发起编译请求的资格,则根据目标编译任务的编译环境参数,判断调度设备负责编译任务调度的M台编译机满足目标编译任务的编译环境参数的需求,若是,则执行响应该编译指令,获取该M台编译机的状态参数。
S203、根据M台编译机的状态参数从M台编译机中确定用于执行目标编译任务的N台编译机。
本申请实施例中,由于可能同时存在多个开发端发起编译请求,管理设备可能同时生成多个编译指令,调度设备可能同时生成多个编译子任务,所以编译系统中的部分编译机可能处于编译状态,另一部分可能处于空闲状态。当调度设备将新生成的编译子任务分配给处于编译状态的编译机,会造成部分编译机的处理压力过大,而部分编译机处于空闲状态。因此,本申请实施例中,为了避免这种情况,调度设备在执行编译子任务的分配前,根据M台编译机的状态参数选择出状态最优的N台编译机。可选的,N台编译机的选择规则可以是根据当前状态下负载的大小进行排序,选择负载最小的N台编译机,或者根据负载由小到大进行排序,选择排序前N的N台编译机;还可以是根据M台编译机的剩余编译时间进行排序,选择剩余编译时间最少的N台编译机,或者按照剩余编译时间由小到大进行排序,选择排序前N的N台编译机。例如M的大小为4,N大小为2,编译机a的剩余编译时间是10分钟,即还需要10分钟将分配的编译子任务编译完成,编译机b的剩余编译时间是3分钟,编译机c的剩余时间是5分钟,编译机d的剩余编译时间是2分钟,则根据剩余编译时间的排序,选择出编译机b和编译机d进行编译任务的处理。当然,在选择N台编译机时要根据编译机的状态参数进行综合考虑,选择出能够快速执行编译任务的N台编译机。需要说明的是,本申请实施例中的M为大于1的正整数,N为正整数。
S204、将目标编译任务分配给N台编译机,以使得N台编译机分别执行分配的目标编译任务包括的编译子任务,得到编译结果。
本申请实施例中,调度设备对目标编译任务进行检测,判断目标编译任务可分成编译子任务的数目,然后将目标编译任务进行拆分得到多个编译子任务,将多个编译子任务分配给N台编译机,以使N台编译机分别执行编译子任务,得到编译结果。可以理解的是,运行目标编译任务拆分成的每个编译子任务所对应的代码能够实现一个或者多个功能,或者运行分配到同一目标编译机中的多个编译子任务所对应的代码能够实现一个或者多个功能。可以理解的是,分配给N台编译机中每一目标编译机的编译子任务的数目以及总处理量,可根据N台编译机的优先级进行确定,例如可根据编译负载、剩余编译时间等确定出编译负载最少,和/或剩余编译时间最少,和/或距离开发端最近的为优先级最高的编译机,则该优先级最高的编译机可分配较多数目的编译子任务。另外,可以进行优先级分数的计算,例如计算编译负载占比40%、编译剩余时间占比40%、距离占比20%,计算得到分数最低的则优先级最高,则该编译机分配的编译子任务则最多。
在一种可选的实施方式中,所述N台编译机中的任意一台编译机被分配以执行所述编译子任务时,此编译机作为编译资源被所述编译子程序独占使用。本申请实施例中,N台编译机中的任意一台编译机在执行分配的编译子任务的过程中,只执行分配的编译子任务,并不同时执行其他调度设备分配的编译任务,从而实现的资源的独占,进一步提高了编译的速度。
在一种可选的实施方式中,所述方法还可包括:接收所述N台编译机在执行所述目标编译任务完成后发送的编译结果;根据所述N台编译机发送的编译结果,生成所述目标编译任务对应的可执行文件;存储所述可执行文件。本申请实施例中,在目标编译机(N台编译机中的任意一台)执行编译子任务得到编译结果之后,将编译结果发送给调度设备,调度设备接收各个目标编译机发送的编译结果,并根据各个编译结果生成一个总的目标编译任务对应的可执行文件,进而存储该可执行文件。
在本申请实施例中,获取携带待编译代码文件对应的目标编译任务的编译指令,响应该编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数,从而能够根据该状态参数进行N台目标编译机的选择,然后将目标编译任务分配给N台编译机,以使N台编译机中的每台编译机执行分配的编译子任务,并得到编译结果,从而使得多台编译机并发进行编译,极大程度上提高了整个待编译文件的编译速度,且减少了本地存储空间的使用。同时,N台编译机中的任意一台编译机在执行分配的编译子任务的过程中,只执行分配的编译子任务,即实现了资源独占,不会并行进行其他编译任务的编译,提高了编译效率。
请参见图3,图3是本申请一个示例性实施例提供的另一种编译方法的流程示意图,该方法是由调度设备来执行的,该方法包括以下步骤S301-S304:
S301、接收管理设备发送的编译指令。
本申请实施例中,编译指令是所述管理设备在接收到开发端发送的携带待编译代码文件的编译请求之后发送给所述调度设备的;其中,所述编译指令携带的目标编译任务为所述待编译代码文件对应的至少部分编译任务。
S302、响应编译指令,在确定未存储有目标编译任务对应的可执行文件时,获取由调度设备负责编译任务调度的M台编译机的状态参数。
本申请实施例中,调度设备响应管理设备发送的编译指令,若调度设备检测到未存储有所述目标编译任务对应的可执行文件,则执行获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤;若存储有目标编译任务对应的可执行文件,则执行从存储中获取相应的可执行文件的步骤。可以理解的是,本申请实施例中的存储包括缓存、长久性存储。
S303、根据M台编译机的状态参数从M台编译机中确定满足任务分配条件的一台或者多台编译机。
本申请实施例中,满足任务分配条件指的是满足可将编译任务分配给编译机进行编译的条件,任务分配条件包括当前负载量小于或者等于预设负载量、剩余编译时间小于或者等于预设时间阈值、编译速度大于或者等于预设速度阈值、编译机中包括编译任务所需的编译软件工具中的任一项或多项。根据M台编译机的状态参数从M台编译机中确定出满足任务分配条件的一台或者多台编译机,便于最终进行目标编译机的选择,有利于提高编译的效率。
S304、确定目标编译任务所能够拆分成的可编译代码子文件的数目。
本申请实施例中,可编译代码子文件包括目标编译任务中的至少部分代码、以及该至少部分代码多对应的编译环境参数,运行该可编译代码子文件所对应的代码能够实现一个或者多个功能。将目标编译任务进行拆分,并且拆分成可编译代码文件,确定拆分的可编译代码文件的具体数目,进而可根据该数目确定目标编译机。
S305、根据可编译代码子文件的数目从满足任务分配条件的一台或者多台编译机中,确定用于执行目标编译任务的N台编译机。
本申请实施例中,确定出目标编译任务能够拆分成的可编译代码子文件的数目之后,直接根据可编译代码文件的数目从满足任务分配条件的一台或者多台编译机中,确定出用于执行目标编译任务的N台编译机。可以理解的是,可根据编译机的优先级进行目标编译机的确定以及每台目标编译机可分配的可编译代码子文件的数目,编译机优先级的确定可根据编译机的剩余编译时间、编译负载量和/或编译速度等进行确定。
S306、将目标编译任务分配给N台编译机,以使得N台编译机分别执行分配的目标编译任务包括的编译子任务,得到编译结果。
本申请实施例中,N台编译机中的任意一台编译机被分配以执行所述编译子任务时,此编译机作为编译资源被所述编译子程序独占使用,并不同时执行其他调度设备分配的编译任务,从而实现的资源的独占,进一步提高了编译的速度。
在一种可选的实施方式中,目标编译机在执行分配的所述目标编译任务包括的编译子任务之前,若检测到缓存有所述分配的所述目标编译任务对应的可执行文件,则从缓存中获取相应的可执行文件;若检测到未缓存所述分配的所述目标编译任务对应的可执行文件,则执行分配的所述目标编译任务包括的编译子任务,得到编译结果;所述目标编译机为所述N台编译机中的任意一台。
本申请实施例中,N台编译机中的任意一台编译机即目标编译机,在执行分配的目标编译任务包括的编译子任务之前,若检测到缓存有分配的目标编译任务对应的可执行文件,则从缓存中获取相应的可执行文件,若检测到未缓存分配的可执行文件,则执行分配的目标编译任务包括的编译子任务,得到编译结果。
在本申请实施例中,调度设备接收管理设备发送的编译指令,响应该编译指令,进行是否存储有目标编译任务对应的可执行文件的判断,使得在存储有目标编译任务对应的可执行文件时,可直接在存储中获取,节省了编译时间,从整体上减少了编译的速度;若未存储有目标编译任务对应的可执行文件时,获取调度设备负责的M台编译机的状态参数,根据该状态参数确定满足任务分配条件的至少一台编译机,根据目标编译任务所能拆分成的可编译代码文件的数目从满足任务分配的至少一台编译机中,确定出用于执行N台编译机,进而进行目标编译任务的分配,显然,本申请实施例通过这样的复杂、精细化的目标编译机的选择,有利于编译速度的提高;同时,N台编译机中的任意一台编译机在执行分配的编译子任务的过程中,只执行分配的编译子任务,即实现了资源独占,不会并行进行其他编译任务的编译,进一步提高了编译效率。
下面以采用本申请实施例所描述的编译方法来较低成本的提高bazel的编译速度为例进行说明。
首先,对本申请实施例所涉及的一些专有名词或者专有属于进行介绍。
bazel:bazel是谷歌推出的开源的一款工程编译工具,类似于Make、Maven及Gradle,bazel使用一种人易于理解的高级构建语言。
patchbuild:打包变更的代码到云端编译。
ccache:ccache是一个编译工具,可以加速GCC(GNU Compiler Collection,GNU编译器套件)对同一个程序的多次编译。尽管第一次编译会花费长一点的时间,有了ccache,后续的编译将变得非常快,也就是说,第一次编译时ccache缓存了编译输出,把头文件展开信息保存在缓存中,当第二次编译时优先使用缓存,有改动时再更新缓存。
target:bazel构建所需要生成的目标名。
distcc:将本地编译分发到多个主机编译的方法。
bazel在新的版本提供了remote cache的方式来提高编译速度,但是由于应用程序(如企业微信)使用的版本是旧版本,暂不支持remote ccache功能,如果升级bazel有挺多语法的升级,应用程序项目升级成本较大。如果不进行版本的升级,继续利用开发端对需要编译的代码文件进行本地编译,但是开发端普遍为为普通开发机,编译速度缓慢且容易OOM(Out of Memory,内存溢出),如果通过配置较好的编译机进行代码文件的编译,当开发人员多,并给每个开发人员都提供一台较好的编译机时,又会造成成本巨大的问题。
基于此,本申请实施例中通过在应用程序中采用patchbuild+distcc+ccache结合的方式来较低成本的提高bazel的编译速度。具体的,由于bazel的编译相对消耗内存,若开发端的性能低则编译过程非常容易内存溢出,又由于应用程序的开发人员很多,因此,本申请实施例通过使用patchbuild的方法来提高编译速度和稳定性,也就是说,开发人员通过开发端进行代码的撰写形成待编译代码文件,然后将该待编译代码文件打包到管理设备,管理设备再将待编译代码文件发送到云端编译机进行编译,这样云端的编译机就可以使得更多的开发端可以共享,资源可以得到最大化的利用。在具体的编译过程中,调度设备接收管理设备发送的携带待编译代码文件对应目标编译任务的编译指令,使用distcc将编译指令分发到更多的云端编译机中同时并发编译,并且利用上ccche,最大化的提升编译速度。如图4所示,开发人员通过开发端撰写代码文件后提交编译时,开发端会进行代码文件的大小的计算以及代码文件的打包,并基于打包的待编译代码文件、开发端的标识信息、待编译代码文件所对应的编译环境参数等生成编译请求发送给管理设备,管理设备接收到编译请求后,将该编译请求中打包的待编译代码文件进行解压,根据解压后的待编译代码文件拆分得到多个待编译代码子文件,然后根据多个待编译代码子文件和对应的编译环境参数生成多个目标编译任务,根据目标编译任务生成编译指令发送给调度设备,调度设备利用ccache确定缓存中是否存储有目标编译任务对应的可执行文件,没有则利用distcc进行目标编译任务的分配,在编译集群进行接收目标编译任务、解压目标编译任务、开始编译、编译完成后,将编译结果发送到开发端。
其中,使用patchbuild工具的主要过程如下:①开发阶段。开发人员通过开发端进行代码的撰写形成代码文件。②提交编译。形成代码文件后,使用patchbuild工具,进行编译请求的提交,使得编译机根据编译请求进行相应的编译。③结果反馈。在编译的过程中,可以将编译过程中产生的中间文件和/或最后的编译结果反馈到开发端,可以理解的是,patchbuild工具默认开启实时显示编译日志功能。
其中,引入distcc是利用其使用容器作为编译环境,能够实现对分配的代码文件实时分配资源,实现资源的独占,有利于编译速度的提高。具体实现过程中,用户在编译脚本时,使用bk-make来代替执行原有的构建命令make,如图5所示,通过bk-make执行图5所示的流程,也就是说,调度设备在接收到管理设备发送的编译指令时,会对编译指令中携带的开发端的标识进行验证,确定开发端是否具有发起编译请求的资格,若有则根据编译机的标识、编译指令中携带的目标编译任务对应的编译环境参数,分配目标编译任务至M台编译机进行编译,进而释放资源,得到编译结果。对于用户而言,用户无需关心distcc的配置,distcc本身对用户来说是透明的,对makefile的改造也仅仅是将bk-make的保留字BK_CC/BK_CXX赋值给实际的编译机变量,改造成本小,不用关心后续的配置变化。需要说明的是,在引入distcc环境后,编译的大概流程则是:开发端将携带待编译文件的编译请求发送到管理设备,管理设备根据待编译文件拆分成的待编译子文件生成目标编译任务发送给调度设备,调度设备将目标编译任务进行分发到distcc集群中进行编译。
另外,还通过distcc和ccache的结合促进编译速度的加快。ccache的传统的工作方式是:ccache gcc-c hello.c,如果缓存中有编译任务对应的可执行文件,则直接获取缓存中的可执行文件,如果缓存中没有编译任务对应的可执行文件,则调用gcc-c hello.c进行编译任务的编译。但本申请实施例中,通过distcc和ccache的结合,其工作方式则是:ccache distcc gcc-c hello.c,如果缓存中有编译任务对应的可执行文件,则直接获取缓存中的可执行文件,而在缓存中没有编译任务对应的可执行文件时,本申请实施例调用的是distcc gcc-c hello.c,然后distcc再执行分发编译任务。需要说明的是,本申请实施例这样通过distcc/ccache的方案中,编译入口bk-make会根据配置的不同,用不同的BK_CC/BK_CXX来注入makefile。例如,若用户指定使用ccache,那么在BK_CC中就会体现为ccachegcc。对于用户来说,只要配置了makefile接受BK_CC/BK_CXX的参数内容,就可以在不同的编译配置下随意切换。
本申请实施例在应用程序中采用patchbuild+distcc+ccache结合的方式,不仅通过patchbuild减少开发端本地的磁盘使用量,还能利用多台编译机合作完成目标编译任务,有效提高编译效率;并且通过专门负责编译的多台编译机完成编译任务,相对给每一个开发人员配置一台编译机,可以有效降低成本。
图6是本申请一个示例性实施例提供的一种编译装置的结构示意图,该装置可搭载在上述方法实施例中的调度设备上,该调度设备具体可以是服务器。当然,在一些实施例中,也可搭载在终端设备上。图6所示的编译装置可以用于执行上述图2和图3所描述的方法实施例中的部分或全部功能。其中,各个部分的详细描述如下:
获取单元601,用于获取编译指令,所述编译指令携带待编译代码文件对应的目标编译任务;
所述获取单元601,还用于响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数;
处理单元602,用于根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,所述M为大于1的正整数,所述N为正整数;
所述处理单元602,用于将所述目标编译任务分配给所述N台编译机,以使得所述N台编译机分别执行分配的所述目标编译任务包括的编译子任务,得到编译结果;其中,所述N台编译机中的任意一台编译机被分配以执行所述编译子任务时,此编译机作为编译资源被所述编译子程序独占使用。
在一种可选的实施方式中,该装置还包括接收单元603,所述接收单元603,用于接收管理设备发送的编译指令,所述编译指令是所述管理设备在接收到开发端发送的携带待编译代码文件的编译请求之后发送给所述调度设备的;其中,所述编译指令携带的目标编译任务为所述待编译代码文件对应的至少部分编译任务。
在一种可选的实施方式中,获取单元601获取由调度设备负责编译任务调度的M台编译机的状态参数之前,处理单元602还用于:确定是否存储有所述目标编译任务对应的可执行文件,若未存储有所述目标编译任务对应的可执行文件,则执行所述获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
在一种可选的实施方式中,处理单元602根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,具体包括:根据所述M台编译机的状态参数从所述M台编译机中确定满足任务分配条件的一台或者多台编译机;确定所述目标编译任务所能够拆分成的可编译代码子文件的数目;根据所述可编译代码子文件的数目从所述满足任务分配条件的一台或者多台编译机中,确定用于执行所述目标编译任务的N台编译机。
在一种可选的实施方式中,获取单元601响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数之前,处理单元602还用于:根据所述编译指令携带的所述开发端的标识,确定所述开发端是否具备发起编译请求的资格;若所述开发端具备发起编译请求的资格,则根据所述编译指令携带的所述待编译代码文件对应的目标编译任务的编译环境参数,确定由调度设备负责编译任务调度的M台编译机是否能够编译所述目标编译任务;若是,则执行所述响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
在一种可选的实施方式中,接收单元603还用于接收所述N台编译机在执行所述目标编译任务完成后发送的编译结果;
处理单元602还用于根据所述N台编译机发送的编译结果,生成所述目标编译任务对应的可执行文件,存储所述可执行文件。
在一种可选的实施方式中,目标编译机在执行分配的所述目标编译任务包括的编译子任务之前,若检测到缓存有所述分配的所述目标编译任务对应的可执行文件,则从缓存中获取相应的可执行文件;若检测到未缓存所述分配的所述目标编译任务对应的可执行文件,则执行分配的所述目标编译任务包括的编译子任务,得到编译结果;所述目标编译机为所述N台编译机中的任意一台。
图6所示的编译装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,编译装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
基于同一发明构思,本申请实施例中提供的编译装置解决问题的原理与有益效果与本申请方法实施例中编译方法解决问题的原理和有益效果相似,可以参见方法的实施的原理和有益效果,为简洁描述,在这里不再赘述。
参见图7,图7是本申请一个示例性实施例提供的一种计算机设备的结构示意图。该设备包括处理器701、通信接口702和存储器703,处理器701、通信接口702和存储器703通过一条或多条通信总线连接。通信接口702是可以进行接收信息的接口,例如可接收管理设备发送的编译指令的接口。处理器701被配置为支持计算机设备执行图2和图3方法中相应的功能。该处理器701可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP),硬件芯片或者其任意组合。
存储器703用于存储程序代码等。存储器703可以包括易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM);存储器703也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器703还可以包括上述种类的存储器的组合。
在本申请实施例中,该处理器701可以调用存储器703中存储的程序代码以执行以下操作:
获取编译指令,所述编译指令携带待编译代码文件对应的目标编译任务;
响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数;
根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,所述M为大于1的正整数,所述N为正整数;
将所述目标编译任务分配给所述N台编译机,以使得所述N台编译机分别执行分配的所述目标编译任务包括的编译子任务,得到编译结果;
其中,所述N台编译机中的任意一台编译机被分配以执行所述编译子任务时,此编译机作为编译资源被所述编译子程序独占使用。
在一种可选的实施方式中,处理器701接收管理设备发送的编译指令,所述编译指令是所述管理设备在接收到开发端发送的携带待编译代码文件的编译请求之后发送给所述调度设备的;其中,所述编译指令携带的目标编译任务为所述待编译代码文件对应的至少部分编译任务。
在一种可选的实施方式中,处理器701获取由调度设备负责编译任务调度的M台编译机的状态参数之前,还确定是否存储有所述目标编译任务对应的可执行文件;若未存储有所述目标编译任务对应的可执行文件,则执行所述获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
在一种可选的实施方式中,处理器701根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,具体包括:根据所述M台编译机的状态参数从所述M台编译机中确定满足任务分配条件的一台或者多台编译机;确定所述目标编译任务所能够拆分成的可编译代码子文件的数目;根据所述可编译代码子文件的数目从所述满足任务分配条件的一台或者多台编译机中,确定用于执行所述目标编译任务的N台编译机。
在一种可选的实施方式中,处理器701响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数之前,还根据所述编译指令携带的所述开发端的标识,确定所述开发端是否具备发起编译请求的资格;若所述开发端具备发起编译请求的资格,则根据所述编译指令携带的所述待编译代码文件对应的目标编译任务的编译环境参数,确定由调度设备负责编译任务调度的M台编译机是否能够编译所述目标编译任务;若是,则执行所述响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
在一种可选的实施方式中,处理器701接收所述N台编译机在执行所述目标编译任务完成后发送的编译结果;根据所述N台编译机发送的编译结果,生成所述目标编译任务对应的可执行文件;存储所述可执行文件。
在一种可选的实施方式中,目标编译机在执行分配的所述目标编译任务包括的编译子任务之前,若处理器701检测到缓存有所述分配的所述目标编译任务对应的可执行文件,则从缓存中获取相应的可执行文件;若处理器701检测到未缓存所述分配的所述目标编译任务对应的可执行文件,则执行分配的所述目标编译任务包括的编译子任务,得到编译结果;所述目标编译机为所述N台编译机中的任意一台。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如图2和图3所示实施例中的编译方法。
本申请实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机设备执行如图2和图3所示的实施例中的编译方法。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种编译方法,其特征在于,所述方法包括:
获取编译指令,所述编译指令携带待编译代码文件对应的目标编译任务;
响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数;
根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,所述M为大于1的正整数,所述N为正整数;
将所述目标编译任务分配给所述N台编译机,以使得所述N台编译机分别执行分配的所述目标编译任务包括的编译子任务,得到编译结果;
其中,所述N台编译机中的任意一台编译机被分配以执行所述编译子任务时,此编译机作为编译资源被所述编译子程序独占使用。
2.根据权利要求1所述的方法,其特征在于,所述获取编译指令,包括:
接收管理设备发送的编译指令,所述编译指令是所述管理设备在接收到开发端发送的携带待编译代码文件的编译请求之后发送给所述调度设备的;
其中,所述编译指令携带的目标编译任务为所述待编译代码文件对应的至少部分编译任务。
3.根据权利要求1所述的方法,其特征在于,所述获取由调度设备负责编译任务调度的M台编译机的状态参数之前,所述方法还包括:
确定是否存储有所述目标编译任务对应的可执行文件;
若未存储有所述目标编译任务对应的可执行文件,则执行所述获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,包括:
根据所述M台编译机的状态参数从所述M台编译机中确定满足任务分配条件的一台或者多台编译机;
确定所述目标编译任务所能够拆分成的可编译代码子文件的数目;
根据所述可编译代码子文件的数目从所述满足任务分配条件的一台或者多台编译机中,确定用于执行所述目标编译任务的N台编译机。
5.根据权利要求2所述的方法,其特征在于,所述响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数之前,所述方法还包括:
根据所述编译指令携带的所述开发端的标识,确定所述开发端是否具备发起编译请求的资格;
若所述开发端具备发起编译请求的资格,则根据所述编译指令携带的所述待编译代码文件对应的目标编译任务的编译环境参数,确定由调度设备负责编译任务调度的M台编译机是否能够编译所述目标编译任务;
若是,则执行所述响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数的步骤。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述N台编译机在执行所述目标编译任务完成后发送的编译结果;
根据所述N台编译机发送的编译结果,生成所述目标编译任务对应的可执行文件;
存储所述可执行文件。
7.根据权利要求1所述的方法,其特征在于,目标编译机在执行分配的所述目标编译任务包括的编译子任务之前,若检测到缓存有所述分配的所述目标编译任务对应的可执行文件,则从缓存中获取相应的可执行文件;若检测到未缓存所述分配的所述目标编译任务对应的可执行文件,则执行分配的所述目标编译任务包括的编译子任务,得到编译结果;所述目标编译机为所述N台编译机中的任意一台。
8.一种编译装置,其特征在于,所述装置包括:
获取单元,用于获取编译指令,所述编译指令携带待编译代码文件对应的目标编译任务;
所述获取单元,还用于响应所述编译指令,获取由调度设备负责编译任务调度的M台编译机的状态参数;
处理单元,用于根据所述M台编译机的状态参数从所述M台编译机中确定用于执行所述目标编译任务的N台编译机,所述M为大于1的正整数,所述N为正整数;
所述处理单元,还用于将所述目标编译任务分配给所述N台编译机,以使得所述N台编译机分别执行分配的所述目标编译任务包括的编译子任务,得到编译结果;其中,所述N台编译机中的任意一台编译机被分配以执行所述编译子任务时,此编译机作为编译资源被所述编译子程序独占使用。
9.一种计算机设备,其特征在于,包括:处理器、通信接口和存储器,所述处理器、所述通信接口和所述存储器相互连接,其中,所述存储器存储有可执行程序代码,所述处理器用于调用所述可执行程序代码,执行如权利要求1-7中任一项所述的编译方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如权利要求1-7中任一项所述的编译方法。
CN202110200630.3A 2021-02-23 2021-02-23 一种编译方法、编译装置、计算机设备及存储介质 Pending CN114968201A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110200630.3A CN114968201A (zh) 2021-02-23 2021-02-23 一种编译方法、编译装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110200630.3A CN114968201A (zh) 2021-02-23 2021-02-23 一种编译方法、编译装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN114968201A true CN114968201A (zh) 2022-08-30

Family

ID=82954682

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110200630.3A Pending CN114968201A (zh) 2021-02-23 2021-02-23 一种编译方法、编译装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN114968201A (zh)

Similar Documents

Publication Publication Date Title
US10496446B2 (en) Altruistic dependable memory overcommit for virtual machines
Warneke et al. Exploiting dynamic resource allocation for efficient parallel data processing in the cloud
US8495598B2 (en) Control flow graph operating system configuration
WO2020171234A1 (ja) オフロードサーバのソフトウェア最適配置方法およびプログラム
CN109992407B (zh) 一种yarn集群gpu资源调度方法、装置和介质
EP1492001A2 (en) Software image creation in a distributed build environment
US9542226B2 (en) Operating programs on a computer cluster
KR100871778B1 (ko) 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
US20140189708A1 (en) Terminal and method for executing application in same
CN108279976B (zh) 一种编译资源调度方法、计算机及计算机可读存储介质
US11409574B2 (en) Instance creation in a computing system
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
JP2012514791A (ja) 並列タスクアプリケーションフレームワーク
CN110109748A (zh) 一种混合语言任务执行方法、装置及集群
CN113448650A (zh) 直播功能插件加载方法、装置、设备及存储介质
CN113467931A (zh) 算力任务的处理方法、装置及系统
CN109462663B (zh) 一种限制系统资源占用的方法、语音交互系统及存储介质
WO2020246965A1 (en) Task distribution across multiple processing devices
CN114968201A (zh) 一种编译方法、编译装置、计算机设备及存储介质
CN105933136A (zh) 一种资源调度方法及系统
CN113885875A (zh) 一种分布式编译方法、系统、主服务器及存储介质
KR102376527B1 (ko) Dnn 프레임워크를 이용하는 단일 가속기용 프로그램을 복수의 가속기에서 처리하는 방법 및 컴퓨터 프로그램
CN109271179B (zh) 虚拟机应用程序管理方法、装置、设备及可读存储介质
US20210081184A1 (en) Method and apparatus for enabling autonomous acceleration of dataflow ai applications
WO2020211358A1 (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