CN114185550A - 分布式编译方法、设备及存储介质 - Google Patents
分布式编译方法、设备及存储介质 Download PDFInfo
- Publication number
- CN114185550A CN114185550A CN202111525607.8A CN202111525607A CN114185550A CN 114185550 A CN114185550 A CN 114185550A CN 202111525607 A CN202111525607 A CN 202111525607A CN 114185550 A CN114185550 A CN 114185550A
- Authority
- CN
- China
- Prior art keywords
- compiling
- distributed
- compiled
- file
- task
- 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
Links
Images
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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种分布式编译方法、设备及存储介质,该方法应用于客户端,其包括:接收待编译文件的编译任务;根据待编译文件向服务端发起分布式编译器资源的申请,并接收服务端反馈的资源分配结果;根据资源分配结果将编译任务划分为多个编译子任务;将编译子任务发送至资源分配结果指定的分布式编译器进行编译处理,并接收分布式编译器回传的编译结果。通过上述方式,本发明能够在查询各个分布式编译器的当前资源情况,根据当前资源情况对编译任务进行合理划分和分配,以保证编译任务能够及时完成。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种分布式编译方法、设备及存储介质。
背景技术
代码编译是将程序员编写的程序源码通过编译程序编译为机器可执行文件的过程。
软件编译是将源代码编译成机器代码的一种转换计算过程,为了加快编译速度,可以采用分布式的编译方法,由多台编译机同时进行一个任务不同部分的编译。
传统的分布式编译方法中,由一台确定的主编译机下载代码并分配编译任务,多台从编译机独立完成各自的编译任务后,由主编译机完成编译链接的任务。但是,从编译机的选择都是固定的,即无论编译任务的大小,均是将任务均分给各个从编译机进行编译,而不是考虑从编译机当前是否空闲,当从编译机当前处于工作状态时,则会导致该从编译机无法及时完成编译任务,进而导致最终的编译结果需要等待该从编译机完成编译后才会得出,影响了编译效率。
发明内容
本申请提供一种分布式编译方法、设备及存储介质,以解决现有分布式编译方法效率不高的问题。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种分布式编译方法,其应用于客户端;所述方法包括:接收待编译文件的编译任务;根据所述待编译文件向服务端发起分布式编译器资源的申请,并接收所述服务端反馈的资源分配结果;根据所述资源分配结果将所述编译任务划分为多个编译子任务;将所述编译子任务发送至所述资源分配结果指定的分布式编译器进行编译处理,并接收所述分布式编译器回传的编译结果。
作为本申请的进一步改进,所述接收所述服务端反馈的资源分配结果之后,还包括:判断所述待编译文件是否为预设白名单文件或是否被标记;当所述待编译文件不是所述预设白名单文件或未被标记时,对所述待编译文件进行hook处理,并对处理后的待编译文件进行标记。
作为本申请的进一步改进,所述根据所述资源分配结果将所述编译任务划分为多个编译子任务之后,还包括:将所述待编译文件划分为多个编译子任务后得到的多个待编译子文件进行标记。
作为本申请的进一步改进,所述接收待编译文件的编译任务之后,还包括:对所述编译任务的头文件进行预编译,并将预编译好的头文件存储至指定位置;所述根据所述资源分配结果将所述编译任务划分为多个编译子任务之后,还包括:从所述指定位置获取所述预编译好的头文件并添加至每个编译子任务对应的待编译文件的头部。
作为本申请的进一步改进,所述接收所述分布式编译器回传的编译结果之后,还包括:接收所述服务端发送的所述编译子任务被执行时的流程数据。
作为本申请的进一步改进,所述接收待编译文件的编译任务之后,还包括:判断所述待编译文件的大小是否超过预设阈值;若否,则基于本地编译器执行所述编译任务。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种分布式编译方法,其应用于服务端;所述方法包括:接收到客户端发起的申请请求时,查询每个分布式编译器的当前任务状态,所述申请请求包括待编译文件的参数信息;根据每个分布式编译器的等待执行任务数量和所述参数信息分配目标分布式编译器,并将资源分配结果发送至所述客户端。
作为本申请的进一步改进,所述将资源分配结果发送至所述客户端之后,还包括:当所述客户端将编译子任务发送至目标分布式编译器时,获取每个所述编译子任务被所述目标分布式编译器编译时的流程数据;将所述流程数据发送至所述客户端。
为解决上述技术问题,本申请采用的再一个技术方案是:提供一种计算机设备,所述计算机设备包括处理器、与所述处理器耦接的存储器,所述存储器中存储有程序指令,所述程序指令被所述处理器执行时,使得所述处理器执行如上述中任一项所述的分布式编译方法的步骤。
为解决上述技术问题,本申请采用的再一个技术方案是:提供一种存储介质,其特征在于,存储有能够实现如上述中任一项所述的分布式编译方法的程序指令。
本申请的有益效果是:本申请的分布式编译方法通过将待编译文件的编译任务划分为多个编译子任务,再分配给分布式网络中的分布式编译器分布进行编译,最终统计各个分布式编译器的编译结果得到最终的编译结果,其实现了多机器同时编译,从而大大提高了编译的效率,并且通过查询分布式编译器的资源情况,根据分布式编译器的资源情况将编译任务进行合理的分割,使得每个编译器所要处理的数据更少,降低了对资源的占用,使得可利用存储空间较小的编译器也能执行编译任务,节省编译时间,提高编译效率。
附图说明
图1是本发明实施例的分布式编译系统的结构示意图;
图2是本发明第一实施例的分布式编译方法的流程示意图;
图3是本发明第二实施例的分布式编译方法的流程示意图;
图4是本发明第三实施例的分布式编译方法的流程示意图;
图5是本发明第四实施例的分布式编译方法的流程示意图;
图6是本发明第一实施例的分布式编译装置的功能模块示意图;
图7是本发明第二实施例的分布式编译装置的功能模块示意图;
图8是本发明实施例的计算机设备的结构示意图;
图9是本发明实施例的存储介质的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本申请实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
图1展示了本发明实施例的分布式编译系统的结构示意图。如图1所示,该分布式编译系统包括:客户端1、服务端2和多个分布式编译器3,所述客户端1、服务端2、多个分布式编译器3之间通信连接,所述客户端1用于接收编译任务,并根据所述编译任务向所述服务器2请求分布式编译器资源,以对编译任务进行分布式编译处理,服务端2用于对分布式编译器资源进行管理,并根据客户端1发起的编译资源申请进行相应的分布式编译器资源分配,以完成对分布式编译任务的预处理,从而加快编译的速度,分布式编译器3用于对分配的编译子任务进行编译并反馈编译结果。
本实施例通过将待编译文件的编译任务划分为多个编译子任务,再分配给分布式网络中的分布式编译器分布进行编译,最终统计各个分布式编译器的编译结果得到最终的编译结果,其实现了多机器同时编译,从而大大提高了编译的效率。
图2是本发明第一实施例的分布式编译方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。如图2所示,该方法应用于客户端,该方法包括步骤:
步骤S101:接收待编译文件的编译任务。
具体地,在实际应用中,用户通过客户端提供的编译web页面输入针对待编译文件的编译信息,生成编译任务。其中,待编译文件可以是任意需要采用编译技术的项目,例如,聊天软件开发项目、游戏软件开发项目等。编译任务是指需要利用编译技术进行编译的任务,例如,在聊天软件开发过程中,在原有聊天软件的基础上,新增一个定位功能,对于新增定位功能后的软件聊天项目,需要重新进行编译,对于增加了定位功能的软件聊天项目进行重新编译的过程就视为一次编译任务。上述编译信息包括但不限于:针对待编译文件的代码路径,例如,git/svn地址等;编译需要的模块名称;编译使用的服务名称;根据编译任务的编译环境确定的编译镜像;编译路径;编译语言,例如,C++、Java、Golang等。根据具体的编译任务确定对应的编译信息,在此不作任何限定。
进一步的,在一些实施例中,步骤S101之后,还包括:
判断待编译文件的大小是否超过预设阈值;若否,则基于本地编译器执行编译任务。若是,则执行步骤S102~步骤S104。
需要说明的是,该预设阈值预先设定。
具体地,一个待编译文件的大小在一定程度上能够反映该待编译文件的复杂程度,通过判断该待编译文件的大小来确认待编译文件是否复杂,当待编译文件的大小超过预设阈值时,可认为该待编译文件较复杂,此时采用分布式编译的方式来进行编译则可使得编译效率更高,因此,当待编译文件的大小超过预设阈值时,将该待编译文件的编译任务划分为多个编译子任务后进行分布式编译以提升编译速度。而在待编译文件的大小未超过预设阈值时,此时采用分布式编译的方式和非分布式编译的方式来进行编译时的速度差别很小,为了避免占用分布式编译器资源,此时则可利用客户端自身的本地编译器进行编译处理即可。
进一步的,在一些实施例中,针对于待编译文件,还可从历史编译任务中查询与该待编译文件大小差距在一定范围内的历史编译文件,根据该历史编译文件来确认待编译文件的复杂程度。
步骤S102:根据待编译文件向服务端发起分布式编译器资源的申请,并接收服务端反馈的资源分配结果。
具体地,在接收到待编译文件的编译任务后,服务端Agent获取该待编译文件的大小,基于该待编译文件的大小向服务端发起分布式服务器资源的申请,再接收服务端反馈的资源分配结果,进行预编译。
步骤S103:根据资源分配结果将编译任务划分为多个编译子任务。
具体地,在接收到资源反馈结果后,根据该资源反馈结果将编译任务划分为多个编译子任务,例如,当为该编译任务划分3个分布式编译器时,则可将该编译任务划分为3个编译子任务,再将该3个编译子任务分布发送至3个分布式编译器进行编译处理。
步骤S104:将编译子任务发送至资源分配结果指定的分布式编译器进行编译处理,并接收分布式编译器回传的编译结果。
具体地,将多个编译子任务发送至相应的分布式编译器进行编译处理,再接收各个分布式编译器回传的编译结果,再对多个编译结果进行结果汇总,得到最终的编译结果。
进一步的,在一些实施例中,步骤S104之后,还包括:接收服务端发送的编译子任务被执行时的流程数据。
具体地,为了方便用户对编译过程进行监控,服务端还用于对分布式编译器的执行编译子任务的编译流程,并且记录编译流程的流程数据,在编译子任务被处理完成后,将该流程数据发送至客户端,以报表形式界面展示,以供客户参考。
本发明第一实施例的分布式编译方法通过将待编译文件的编译任务划分为多个编译子任务,再分配给分布式网络中的分布式编译器分布进行编译,最终统计各个分布式编译器的编译结果得到最终的编译结果,其实现了多机器同时编译,从而大大提高了编译的效率,并且通过查询分布式编译器的资源情况,根据分布式编译器的资源情况将编译任务进行合理的分割,使得每个编译器所要处理的数据更少,降低了对资源的占用,使得可利用存储空间较小的编译器也能执行编译任务,节省编译时间,提高编译效率。
图3是本发明第二实施例的分布式编译方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图3所示的流程顺序为限。如图3所示,该方法应用于客户端,该方法包括步骤:
步骤S201:接收待编译文件的编译任务。
在本实施例中,图3中的步骤S201和图1中的步骤S101类似,为简约起见,在此不再赘述。
步骤S202:根据待编译文件向服务端发起分布式编译器资源的申请,并接收服务端反馈的资源分配结果。
在本实施例中,图3中的步骤S202和图1中的步骤S102类似,为简约起见,在此不再赘述。
步骤S203:判断待编译文件是否为预设白名单文件或是否被标记。
步骤S204:当待编译文件不是预设白名单文件或未被标记时,对待编译文件进行hook处理,并对处理后的待编译文件进行标记。
在步骤S203~步骤S204中,本实施例还引入了so动态库,用于在hook模式下劫持编译器,而为了减少不必要的hook处理,可通过设置白名单来区分目标文件和非目标文件,预设白名单文件以外或未被标记文件即为非目标文件,对其进行hook处理后进行标记,预设白名单文件以内或被标记的文件即为目标文件,不需要进行hook处理。
步骤S205:根据资源分配结果将编译任务划分为多个编译子任务。
在本实施例中,图3中的步骤S205和图1中的步骤S103类似,为简约起见,在此不再赘述。
步骤S206:将待编译文件划分为多个编译子任务后得到的多个待编译子文件进行标记。
具体地,为了进一步减少非不要hook处理,在待编译文件进行hook处理后或者是针对于为白名单文件的待编译文件,对该待编译文件的子文件同样进行标记,从而使得该待编译文件的子文件同样不需要再进行hook处理,从而减少不必要的hook处理。
步骤S207:将编译子任务发送至资源分配结果指定的分布式编译器进行编译处理,并接收分布式编译器回传的编译结果。
在本实施例中,图3中的步骤S207和图1中的步骤S104类似,为简约起见,在此不再赘述。
本发明第二实施例的分布式编译方法在第一实施例的基础上,通过以待编译文件为目标文件,其他文件为非目标文件,将非目标文件设置为白名单文件,则不需要对非目标文件进行hook处理,从而降低对资源的占用。此外,还可通过对已经进行hook处理的待编译文件进行标记,从而避免重复对待编译文件进行hook处理。
图4是本发明第三实施例的分布式编译方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图4所示的流程顺序为限。如图4所示,该方法应用于客户端,该方法包括步骤:
步骤S301:接收待编译文件的编译任务。
在本实施例中,图4中的步骤S301和图1中的步骤S101类似,为简约起见,在此不再赘述。
步骤S302:对编译任务的头文件进行预编译,并将预编译好的头文件存储至指定位置。
具体地,为了避免预编译头文件的方式导致编译任务不适用于分布式编译的方式,本实施例中,在接收到编译任务后,对该编译任务的头文件进行预编译,再将预编译后的头文件存储至指定位置。
步骤S303:根据待编译文件向服务端发起分布式编译器资源的申请,并接收服务端反馈的资源分配结果。
在本实施例中,图4中的步骤S303和图1中的步骤S102类似,为简约起见,在此不再赘述。
步骤S304:根据资源分配结果将编译任务划分为多个编译子任务。
在本实施例中,图4中的步骤S304和图1中的步骤S103类似,为简约起见,在此不再赘述。
步骤S305:从指定位置获取预编译好的头文件并添加至每个编译子任务对应的待编译文件的头部。
具体地,在将编译任务划分为多个编译子任务后,从该指定位置获取预编译好的头文件,并添加至每个编译子任务对应的待编译子文件的头部,从而使得使用预编译头的项目也能够适用于本申请的分布式编译方法。
步骤S306:将编译子任务发送至资源分配结果指定的分布式编译器进行编译处理,并接收分布式编译器回传的编译结果。
在本实施例中,图4中的步骤S306和图1中的步骤S104类似,为简约起见,在此不再赘述。
本发明第三实施例的分布式编译方法在第一实施例的基础上,通过对编译任务的头文件进行预编译并保存,在将编译任务划分为多个子任务后,将预编译的头文件添加至每个子任务的头部,从而使得进行了预编译头文件的项目也能够按本实施例的分布式编译方法仅分布式编译操作。
图5是本发明第四实施例的分布式编译方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图5所示的流程顺序为限。如图5所示,该方法应用于服务端,该方法包括步骤:
步骤S401:接收到客户端发起的申请请求时,查询每个分布式编译器的当前任务状态,申请请求包括待编译文件的参数信息。
具体地,在接收到客户端发起的申请请求后,查询分布式网络中当前处于空闲状态的分布式编译器,再根据分布式编译的空闲情况进行合理的资源分配。需要理解的是,分布式编译器的空闲状态可由分布式编译器当前处理的任务队列中的任务数量及预期编译时间来确认,例如,当任务队列中的任务数量低于3个时或预期时间较短,由于编译任务的执行速率较快,可以认为如果没有新的编译任务,则该分布式编译器很快就会进入空闲状态,此时可以认为该分布式编译器处于空闲状态。
步骤S402:根据每个分布式编译器的等待执行任务数量和参数信息分配目标分布式编译器,并将资源分配结果发送至客户端。
进一步的,在一些实施例,在步骤S402之后,还包括:
当客户端将编译子任务发送至目标分布式编译器时,获取每个编译子任务被目标分布式编译器编译时的流程数据;
将流程数据发送至客户端。
具体地,为了方便用户对编译过程进行监控,服务端还用于对分布式编译器的执行编译子任务的编译流程,并且记录编译流程的流程数据,在编译子任务被处理完成后,将该流程数据发送至客户端,以供客户参考。
本发明第四实施例的分布式编译方法通过根据客户端发起的资源申请请求,为客户端的编译任务分配适当的分布式编译器资源,以框客户端的编译任务划分为多个编译子任务进行分布式处理,从而提升编译任务的编译效率。
图6是本发明第一实施例的分布式编译装置的功能模块示意图。如图6所示,该分布式编译装置10包括接收模块11、申请模块12、划分模块13和编译模块14。
接收模块11,用于接收待编译文件的编译任务;
申请模块12,用于根据待编译文件向服务端发起分布式编译器资源的申请,并接收服务端反馈的资源分配结果;
划分模块13,用于根据资源分配结果将编译任务划分为多个编译子任务;
编译模块14,用于将编译子任务发送至资源分配结果指定的分布式编译器进行编译处理,并接收分布式编译器回传的编译结果。
可选地,接收模块11执行接收服务端反馈的资源分配结果之后,还用于:判断待编译文件是否为预设白名单文件或是否被标记;当待编译文件不是预设白名单文件或未被标记时,对待编译文件进行hook处理,并对处理后的待编译文件进行标记。
可选地,划分模块13执行根据资源分配结果将编译任务划分为多个编译子任务之后,还用于:将待编译文件划分为多个编译子任务后得到的多个待编译子文件进行标记。
可选地,接收模块11执行接收待编译文件的编译任务之后,还用于:对编译任务的头文件进行预编译,并将预编译好的头文件存储至指定位置;根据资源分配结果将编译任务划分为多个编译子任务之后,还包括:从指定位置获取预编译好的头文件并添加至每个编译子任务对应的待编译文件的头部。
可选地,编译模块14执行接收分布式编译器回传的编译结果之后,还用于:接收服务端发送的编译子任务被执行时的流程数据。
可选地,接收模块11执行接收待编译文件的编译任务之后,还用于:判断待编译文件的大小是否超过预设阈值;若否,则基于本地编译器执行编译任务。
图7是本发明第二实施例的分布式编译装置的功能模块示意图。如图7所示,该分布式编译装置20包括查询模块21和分配模块22。
查询模块21,用于接收到客户端发起的申请请求时,查询每个分布式编译器的当前任务状态,申请请求包括待编译文件的参数信息;
分配模块22,用于根据每个分布式编译器的等待执行任务数量和参数信息分配目标分布式编译器,并将资源分配结果发送至客户端。
可选地,分配模块22执行将资源分配结果发送至客户端之后,还用于:当客户端将编译子任务发送至目标分布式编译器时,获取每个编译子任务被目标分布式编译器编译时的流程数据;将流程数据发送至客户端。
关于上述实施例分布式编译装置中各模块实现技术方案的其他细节,可参见上述实施例中的分布式编译方法中的描述,此处不再赘述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
请参阅图8,图8为本发明实施例的计算机设备的结构示意图。如图8所示,该计算机设备80包括处理器81及和处理器81耦接的存储器82,存储器82中存储有程序指令,程序指令被处理器81执行时,使得处理器81执行上述任一实施例所述的分布式编译方法的步骤。
其中,处理器81还可以称为CPU(Central Processing Unit,中央处理单元)。处理器81可能是一种集成电路芯片,具有信号的处理能力。处理器81还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
参阅图9,图9为本发明实施例的存储介质的结构示意图。本发明实施例的存储介质存储有能够实现上述任一分布式编译方法的程序指令91,其中,该程序指令91可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等计算机设备设备。
在本申请所提供的几个实施例中,应该理解到,所揭露的计算机设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种分布式编译方法,其特征在于,其应用于客户端;所述方法包括:
接收待编译文件的编译任务;
根据所述待编译文件向服务端发起分布式编译器资源的申请,并接收所述服务端反馈的资源分配结果;
根据所述资源分配结果将所述编译任务划分为多个编译子任务;
将所述编译子任务发送至所述资源分配结果指定的分布式编译器进行编译处理,并接收所述分布式编译器回传的编译结果。
2.根据权利要求1所述的分布式编译方法,其特征在于,所述接收所述服务端反馈的资源分配结果之后,还包括:
判断所述待编译文件是否为预设白名单文件或是否被标记;
当所述待编译文件不是所述预设白名单文件或未被标记时,对所述待编译文件进行hook处理,并对处理后的待编译文件进行标记。
3.根据权利要求2所述的分布式编译方法,其特征在于,所述根据所述资源分配结果将所述编译任务划分为多个编译子任务之后,还包括:
将所述待编译文件划分为多个编译子任务后得到的多个待编译子文件进行标记。
4.根据权利要求1所述的分布式编译方法,其特征在于,所述接收待编译文件的编译任务之后,还包括:
对所述编译任务的头文件进行预编译,并将预编译好的头文件存储至指定位置;
所述根据所述资源分配结果将所述编译任务划分为多个编译子任务之后,还包括:
从所述指定位置获取所述预编译好的头文件并添加至每个编译子任务对应的待编译文件的头部。
5.根据权利要求1所述的分布式编译方法,其特征在于,所述接收所述分布式编译器回传的编译结果之后,还包括:
接收所述服务端发送的所述编译子任务被执行时的流程数据。
6.根据权利要求1所述的分布式编译方法,其特征在于,所述接收待编译文件的编译任务之后,还包括:
判断所述待编译文件的大小是否超过预设阈值;
若否,则基于本地编译器执行所述编译任务。
7.一种分布式编译方法,其特征在于,其应用于服务端;所述方法包括:
接收到客户端发起的申请请求时,查询每个分布式编译器的当前任务状态,所述申请请求包括待编译文件的参数信息;
根据每个分布式编译器的等待执行任务数量和所述参数信息分配目标分布式编译器,并将资源分配结果发送至所述客户端。
8.根据权利要求7所述的分布式编译方法,其特征在于,所述将资源分配结果发送至所述客户端之后,还包括:
当所述客户端将编译子任务发送至目标分布式编译器时,获取每个所述编译子任务被所述目标分布式编译器编译时的流程数据;
将所述流程数据发送至所述客户端。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器、与所述处理器耦接的存储器,所述存储器中存储有程序指令,所述程序指令被所述处理器执行时,使得所述处理器执行如权利要求1-7中任一项权利要求所述的分布式编译方法的步骤。
10.一种存储介质,其特征在于,存储有能够实现如权利要求1-7中任一项所述的分布式编译方法的程序指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111525607.8A CN114185550A (zh) | 2021-12-14 | 2021-12-14 | 分布式编译方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111525607.8A CN114185550A (zh) | 2021-12-14 | 2021-12-14 | 分布式编译方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114185550A true CN114185550A (zh) | 2022-03-15 |
Family
ID=80543736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111525607.8A Pending CN114185550A (zh) | 2021-12-14 | 2021-12-14 | 分布式编译方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114185550A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562676A (zh) * | 2022-10-11 | 2023-01-03 | 中国兵器工业计算机应用技术研究所 | 一种图计算引擎的触发方法 |
CN115658078A (zh) * | 2022-12-27 | 2023-01-31 | 金篆信科有限责任公司 | 数据库的预编译处理方法、装置、设备及介质 |
-
2021
- 2021-12-14 CN CN202111525607.8A patent/CN114185550A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562676A (zh) * | 2022-10-11 | 2023-01-03 | 中国兵器工业计算机应用技术研究所 | 一种图计算引擎的触发方法 |
CN115562676B (zh) * | 2022-10-11 | 2023-06-06 | 中国兵器工业计算机应用技术研究所 | 一种图计算引擎的触发方法 |
CN115658078A (zh) * | 2022-12-27 | 2023-01-31 | 金篆信科有限责任公司 | 数据库的预编译处理方法、装置、设备及介质 |
CN115658078B (zh) * | 2022-12-27 | 2023-03-17 | 金篆信科有限责任公司 | 数据库的预编译处理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9424019B2 (en) | Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor | |
CN106371894B (zh) | 一种配置方法、装置和数据处理服务器 | |
US11221888B2 (en) | Method and system for GPU virtualization based on container | |
EP3355187A1 (en) | Loading method and device for terminal application (app) | |
CN114185550A (zh) | 分布式编译方法、设备及存储介质 | |
CN111124704B (zh) | 一种数据处理方法、处理器及终端设备 | |
CN108319496B (zh) | 资源访问方法、业务服务器、分布式系统及存储介质 | |
CN102667714B (zh) | 支持访问由操作系统环境外的资源提供的功能的方法和系统 | |
CN102402419A (zh) | 用所选执行运行时执行的用户代码的运行时不可知表示 | |
KR20210095690A (ko) | 리소스 관리 방법과 장치, 전자 디바이스 및 기록 매체 | |
CN104679598A (zh) | 用于选择同步或异步进程间通信机制的系统和方法 | |
CN108279976B (zh) | 一种编译资源调度方法、计算机及计算机可读存储介质 | |
CN111736913B (zh) | 类加载方法和装置 | |
CN112905342A (zh) | 资源调度方法、装置、设备及计算机可读存储介质 | |
CN110162397B (zh) | 资源分配方法、装置及系统 | |
CN105491003A (zh) | 用于确定按访问扫描和按需扫描任务的优先顺序的系统和方法 | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
CN109819674B (zh) | 计算机存储介质、嵌入式调度方法及系统 | |
CN110489356B (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN109634721B (zh) | 一种虚拟机与主机的启动通信方法及相关装置 | |
CN109669778B (zh) | 一种用于为运行单元确定并行进程数量的方法及系统 | |
KR101508273B1 (ko) | 클라우드 api 키를 이용한 자원 할당 방법 및 이를 위한 장치 | |
CN112114971A (zh) | 一种任务分配方法、装置及设备 | |
US20090019159A1 (en) | Transparently externalizing plug-in computation to cluster | |
CN103064668A (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 |