CN104820613A - 一种异构多核程序的编译方法 - Google Patents

一种异构多核程序的编译方法 Download PDF

Info

Publication number
CN104820613A
CN104820613A CN201510279138.4A CN201510279138A CN104820613A CN 104820613 A CN104820613 A CN 104820613A CN 201510279138 A CN201510279138 A CN 201510279138A CN 104820613 A CN104820613 A CN 104820613A
Authority
CN
China
Prior art keywords
program
layer
function
binary code
code
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
CN201510279138.4A
Other languages
English (en)
Other versions
CN104820613B (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.)
Shanghai Silang Technology Co ltd
Original Assignee
Institute of Automation of Chinese Academy of Science
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 Institute of Automation of Chinese Academy of Science filed Critical Institute of Automation of Chinese Academy of Science
Priority to CN201510279138.4A priority Critical patent/CN104820613B/zh
Publication of CN104820613A publication Critical patent/CN104820613A/zh
Application granted granted Critical
Publication of CN104820613B publication Critical patent/CN104820613B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种多层次异构多核程序的编译方法。该编译方法包括代码着色和代码分解步骤、预编译步骤、调度代码生成步骤、参数传递代码生成步骤、控制流关系数据库生成步骤、后编译步骤和程序发布步骤。本发明的方法极大减小了程序员在异构多核处理器下的开发难度,提升了开发效率。

Description

一种异构多核程序的编译方法
技术领域
本发明涉及处理器领域,更具体地涉及一种异构多核程序的编译方法。
背景技术
目前处理器领域中主要以多核技术为主,多核处理器根据核的微体系结构或功能的特征分为同构多核处理器和异构多核处理器,由于异构多核处理器在高性能、低功耗及低成本方面的显著特点,并能最大化的贴合应用需求,因此其在数字信号处理领域有着广泛的应用。
一般情况下,异构多核处理器通常是由一个负责控制功能的控制核及若干个负责计算功能的计算核所构成,由于各个处理器核的体系结构有着一些功能上的差异,导致其在指令集体系结构管上也有相应的差异,因此多编译器以及多核的特点,使得异构多核处理器下的编译系统相比传统的同构多核处理器编译系统更为复杂。
在这样的应用背景下,需要灵活应用现有成熟编译器系统,并提供一种成熟稳定的联合编译及调用机制,以提升程序员在异构多核处理器上的开发效率。
发明内容
基于上述技术问题,本发明的主要目的之一在于提出一种异构多核程序的编译方法,以便于简化异构多核处理器的编译过程,提升程序员的开发效率。
为了实现上述目的,本发明提供了一种异构多核程序的编译方法,包括以下步骤:
步骤1,将一个程序代码分解成若干个运行在不同指令集体系结构处理器核上的程序代码;
步骤2,将分解后的所述程序代码发送到对应指令集体系结构下的编译器上进行预编译,得到各自对应的二进制代码组;对所述二进制代码组进行完整性检测,如果发现含有未定义函数符号,则报错并结束本方法,如果未发现则跳至步骤3;
步骤3,通过逐层查找的方法,自顶向下的建立函数调用关系数据库;
步骤4,对所述二进制代码组中的每个二进制代码生成相应的调度代码,对除最底层之外的二进制代码组中的每一个二进制代码进行未定义函数符号检查并生成所述未定义函数符号的定义;
步骤5,检查所述二进制代码组中的函数是否带有参数,对于带有参数的函数插入参数拷贝代码,从而生成参数准备代码;
步骤6,将所述二进制代码组分别用其对应的指令集体系结构编译器进行再编译,用以检查并生成整个异构多核程序的可执行程序;
步骤7,将各个层次编译出的可执行程序集合和所述函数调用关系数据库封装成程序安装包。
其中,步骤1包括:
将输入的程序代码进行着色,按照颜色分解成多个程序代码,着色/分解的最小粒度为一个函数,其中每种颜色表示一种指令集体系结构;
分解后的程序代码包含多个程序代码组,将分解后的程序代码组按颜色和颜色对应的指令集体系结构层次排序成第1层到第n层程序代码组,其中n为自然数;
每个层次的程序代码组中包含一个或多个程序代码,每个程序代码对应生成一个可执行程序,每个程序代码中包含一个或多个相同颜色的函数;
将分解且分组后的层次化程序代码组放入步骤2的输入中,跳至步骤2。
其中,步骤2包括:
将输入的n个程序代码组分别用各个层次的指令集体系结构编译器编译,得到n个二进制代码组,每个二进制代码组与程序代码组一一对应,且组内的二进制代码与程序代码一一对应;
对所述二进制代码组进行完整性检测,如果第n层二进制代码组不含有未定义函数符号,则跳至步骤3;如果第n层二进制代码组含有未定义函数符号,则预编译失败,该方法结束。
其中,步骤3包括:
检查从第n-1层到第1层的每个二进制代码组i中的每个二进制代码,如果其包含未定义函数符号,则用此符号在i+1层二进制代码组中定义的函数符号中做匹配查找,若有且只有一个,则新建一个调用关系加入到函数调用关系数据库中;若有超过一个,则函数调用关系数据库生成失败,该方法结束;若没有,则函数调用关系数据库生成失败,该方法结束。
其中,步骤4包括:
检查从第n-1层到第1层的每个二进制代码组i中的每个二进制代码,如果存在未定义的函数符号,则生成该函数的定义;在第i层的程序代码组里的二进制代码中插入生成的函数定义;将修改后的n个程序代码组传递给步骤5,并跳至步骤5。
其中步骤4中所述函数的定义内容包括:装载、启动第i+1层包含该函数符号的二进制代码,以及在串行方式下第i+1层代码执行完成的阻塞等待信息。
其中,步骤5包括:
检查从第n-1层到第1层的每个源代码组i中的每个源代码,如果存在步骤4生成的函数定义,则检查函数原型是否有参数,如果无参数则跳过,如果带参数,则在生成的函数定义中,生成从第i层到第i+1层的参数拷贝代码,在启动第i+1层包含该函数符号的二进制代码之前,插入生成的参数拷贝代码;
生成第i+1层参数准备代码,在第i+1层包含该函数符号的二进制代码对应的程序代码之前插入生成的参数准备代码;
将修改后的程序代码组传递给步骤6,并跳至步骤6。
其中,步骤6包括:
将输入的n个源代码组分别用各个层次的指令集体系结构编译器编译,如任何一个层次的编译器返回错误,则返回错误,否则输出n个层次二进制代码组到步骤7,跳至步骤7。
其中,步骤7包括:
从所述函数调用关系数据库中导出所述异构多核程序的所有调用关系表,作为加载信息与第1层二进制代码组合并封装成可执行程序,将第2层到第n层二进制代码组分别加入各层次的函数库中,若对应层次的函数库不存在,则新建一个所述层次的函数库;将各个层次编译出的可执行程序集合和所述函数调用关系数据库封装成一个程序安装包。
其中,所述编译方法用于层次化异构多核处理器中。
基于上述技术方案可知,本发明的编译方法包括代码着色和代码分解步骤、预编译步骤、调度代码生成步骤、参数传递代码生成步骤、控制流关系数据库生成步骤、后编译步骤和程序发布步骤,可以极大地减小程序员在异构多核处理器下的开发难度,提升开发效率。
附图说明
图1为本发明的多层应用程序编译流程的结构框图;
图2为本发明的一个实施方式中异构多核处理器与多层应用程序的组织结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
本发明公开了一种编译两种或两种以上指令集体系结构的层次化异构多核处理器程序的方法。层次化异构多核处理器是指处理器程序中包含若干种指令集体系结构,每种指令集体系结构由若干个程序组成,每种指令集体系结构的程序的集合构成一个层次,每一个层次受其上一个层次的程序控制,并且控制其下一个层次的程序。该编译方法包括:
代码着色和代码分解步骤,用于将一个程序代码分解成若干个运行在不同指令集体系结构处理器核上的程序代码,即不同层次上的程序代码;
预编译步骤,用于分析处理器核之间存在的控制流关系和数据流关系;
调度代码生成步骤,用于自动生成和插入各层次程序之间调用、同步等功能的代码;
参数传递代码生成步骤,用于自动生成和插入不同层次之间程序调用时的数据交换代码;
控制流关系数据库生成步骤,用于根据各个层次最终编译出的程序在执行时的调用关系建立关系数据库;
后编译步骤,用于将插入了自动生成代码的各层次程序代码用该层次指令集编译器编译成程序集合;以及
程序发布步骤,用于将各个层次编译出的程序集合和关系数据库封装成程序安装包。
下面分别详述之。
步骤1,代码着色和代码分解步骤
将输入的源代码进行着色,按照颜色分解成多个源代码,着色/分解的最小粒度为一个函数,其中每种颜色标示一种指令集体系结构;分解后的源代码包含多个源代码组,将分解后的源代码组,按颜色和颜色对应的指令集体系结构层次排序成第1层到第n层源代码组;每个层次的源代码组中包含一个或多个源代码(第1层指令集体系结构的源代码有且只有一个源代码),每个源代码对应生成一个可执行程序,每个源代码中包含一个或多个相同颜色的函数。将分解且分组后的层次化源代码组放入步骤2的输入中,跳转到步骤2。
步骤2,预编译步骤
将输入的n个源代码组分别用各个层次的指令集体系结构编译器编译,得到n个二进制代码组,每个二进制代码组与源代码组一一对应,且组内的二进制代码与源代码一一对应,每个二进制代码包含一个或若干个定义的函数符号,以及一个或若干未定义符号。若第n层二进制代码组不含有未定义符号,跳转到步骤3。若第n层二进制代码组含有未定义符号,则预编译失败,该方法结束。
步骤3,控制流关系数据库生成步骤
从第n-1层到第1层的每个二进制代码组i中的每个二进制代码,若其包含未定义的函数符号,则用此符号在i+1层二进制代码组中定义的函数符号中做匹配查找,若有且只有一个,则新建一个调用关系加入到控制流关系数据库中,该关系的调用者是当前二进制代码组i中的二进制代码,被调用者是i+1层二进制代码组中包含函数符号的二级制代码。若有超过一个,则控制流关系数据库生成失败,有重定义异构多核函数,该方法结束;若没有,则控制流关系数据库生成失败,有未定义的异构多核函数,该方法结束。
步骤4,调度代码生成步骤
从第n-1层到第1层的每个二进制代码组i中的每个二进制代码x,如果存在未定义的函数符号,则生成该函数的定义,定义内容包括装载、启动第i+1层包含该函数符号的二进制代码y,以及(串行方式下)第i+1层代码执行完成的阻塞等待信息。在第i层的源代码组里的二进制代码x的中插入生成的函数定义。将修改后的n个源代码组传递给步骤5,并跳转到步骤5。
步骤5,参数传递代码生成步骤
从第n-1层到第1层的每个源代码组i中的每个源代码x,如果存在步骤4生成的函数定义,则检查函数原型是否有参数,如果无参数则跳过,如果带参数,则在生成的函数定义中,生成从第i层到第i+1层的参数拷贝代码,在启动第i+1层包含该函数符号的二进制代码y之前,插入生成的参数拷贝代码。生成第i+1层参数准备代码,在第i+1层包含该函数符号的二进制代码y对应的源代码之前插入生成的参数准备代码。将修改后的源代码组传递给步骤6,并跳转到步骤6。
步骤6,后编译步骤
将输入的n个源代码组分别用各个层次的指令集体系结构编译器编译,如任何一个层次的编译器返回错误,则返回错误,否则输出n个层次二进制代码组到步骤7,跳转至步骤7。
步骤7,程序发布步骤
从控制流关系数据库中导出该异构多核程序的所有调用关系表,作为加载信息与第1层二进制代码组合并封装成可执行程序,将第2层到第n层二进制代码组分别加入各层次的函数库中,若对应层次的函数库不存在,则新建一个该层次的函数库。程序发布时,包含一个可执行程序,以及函数库(若新建)或函数库升级包(若已存在)。
下面结合附图1中多层应用程序的编译流程以及图2中具体的异构多核处理器与多层应用程序对本发明做进一步的详细说明。
本发明中所述的编译方法可进行应用的一种异构多核处理器平台如图2左半部分所示,该异构多核处理器包含三种类型的处理器核,其中,R处理器称为控制处理单元,负责控制逻辑功能及一般的标量计算;S处理器称为标量处理单元,主要完成大部分的标量计算;M处理器称为微码处理单元,主要完成全部的向量计算。每一种类型的处理器均有独立的指令集体系结构,每一种类型的处理器也各有独立的编译器。在本实例中,异构多核处理器分别由1个R处理器、1个S处理器和1个M处理器所组成。同样,对于多个相同类型的处理核情况,本发明中所述的编译方法也同样适用。
该异构多核处理器支持多种不同指令集,但在该处理器平台下进行应用程序开发时,可以支持程序员在一个程序文件中完成对不同处理器核的编程工作,利用本发明所述的编译方法,程序员仅需要按照一定的程序书写要求编写满足应用需求的源程序,然后工具链可以自动完成着色、分解、预编译、关系数据库生成、调度代码与参数插入生成、后编译和程序发布等本发明所述的编译流程,从而减少程序员工作量,降低工作难度,提升异构多核处理器下的开发效率。为进一步具体说明编译流程中的细节,以图2右半部分所示的程序结构为例进行说明,该异构多核程序中包含6个函数,其中A函数属于最高层的R处理器,完成主要的控制及程序启动等功能;B函数和C函数属于第二层的S处理器,完成标量计算及部分开启下层处理器程序的功能;D函数、E函数和F函数属于最底层的M处理器,完成运算量最大的向量计算等功能。同时,如图中各个函数间的箭头关系所示,A函数在运行中需要调用B函数和C函数,B函数在运行过程中需要调用D函数和E函数,C函数在运行过程中需要调用E函数和F函数。下面就这个具体的程序组成进行具体的编译过程描述。
首先,对于一个包含A、B、C、D、E、F六个函数并如图2所示组织形式的源码,需要经过如图1中S1所示的着色分解步骤,编译器首先对源码中所有的代码进行分析,将该源码进行分解,且分解的最小粒度为函数级,通过对程序或函数中的关键字进行处理,对属于相同指令集体系结构的函数进行统一着色,并将这些统一着色的函数进行分组形成与处理器层次数量一致的源代码组,同时将这些源代码组按照颜色以及颜色所对应的指令集体系结构进行排序,排序规则按异构多核处理器中不同处理器核之间的隶属层次从高到低一一对应,例如本例中会形成三个源代码组分别对应R、S、M处理器,其中与R处理器对应的源代码组包括函数A,与S处理器对应的源代码组包括函数B和函数C,与M处理器对应的源代码组包括函数D、函数E和函数F。这里需要注意的是第1层即最高层的源代码组有且只包含一个源代码。在编译器做完着色与分解后会生成三个源代码组,并启动下一个步骤。
第二,在着色与分解步骤得到的源代码组上,需要进行如图1中S2所示的预编译步骤,该步骤主要完成将不同颜色的源码发送到其对应指令集体系结构下的编译器上进行各自的编译,并得到各自相对应的二进制代码组,同时该步骤还完成源码完整性检测功能,当发现最底层的源代码组中含有未定义函数符号时,则说明整个源代码无法完整执行,会进行报错,从而提醒程序员进行修改。如果发现最底层的源代码组中不含有未定义函数符号时,则说明整个源代码是完整的,可以送往下一步的关系数据库生成步骤。在本实施例中,异构多核处理器上的编译工具会将三个源代码组分别送往处理器R、S、M所对应的编译器,并生成函数A所对应的二进制代码,生成函数B和C所对应的二进制代码组,生成函数D、E和F所对应的二进制代码组。
第三,在经过预编译步骤后,需要建立各个源代码之间的调用关系,特别是在异构多核结构下,由于不同核之间的源代码编译环境不一致,因此需要额外建立一个源代码之间的调用关系,在这里通过逐层查找的方法,自顶向下的建立函数调用关系数据库,其具体流程为在第i层二进制代码组中的每一个二进制代码查找其是否包含未定义的函数符号,如果包含,则去第i+1层二进制代码组中进行匹配查找,如果有且只有一个匹配的函数符号,则建立一个调用关系,并将该信息存储在控制流关系数据库中,其调用关系为上一层的包含未定义函数符号的二进制代码为调用者,下一层包含函数符号二进制代码为被调用者。在这里调用关系为一一对应,如果查找过程中在下一层发现有超过一个的函数定义,则说明出现重定义异构多核函数,需要报错以提醒程序员进行修改,同时,如果查找过程中在下一层没有出现未定义函数,则说明调用函数出错,也需要报错,这种情况下不会生成控制流关系数据库。对照图2中的实例来看,当对第一层的A函数进行检查时,发现其中包含有未定义的函数B和函数C,此时需要对下一层进行匹配查找,查找结束发现函数B和函数C的定义,则生成控制流关系数据库相应的条目,形如<A,B>,<A,C>,与此类似,对第二层的B函数、C函数进行未定义函数查找,发现B函数中包含未定义的D函数与E函数,C函数中发现未定义的E函数与F函数,对下一层进行匹配查找,查找结束发现函数D、E、F的定义,并生成相应条目,形如<B,D>,<B,E>,<C,E>,<C,F>,在本层查找完成后,到达查找终止条件,该步骤结束。
第四,在控制流关系数据库生成步骤之后,需要对二进制代码组中的每个二进制代码生成相应的调度代码,同前一步骤一样,需要对除最底层之外的二进制代码组中的每一个二进制代码进行未定义函数符号检查,如果在第i层中存在未定义的函数符号x,则需要生成该函数的定义,这里的定义是指装载、启动在第i+1层中的该函数对应的二进制代码y,以及等待第i+1层中二进制代码y执行完成的阻塞等待信息,通常此信息只在串行执行方式下产生。将这些产生的信息加入到第i层的二进制源代码中即可完成调度代码的生成。例如,在第一层的A函数中生成调度B函数与C函数的装载启动信息,如果B函数与C函数在执行完成前还需要执行其他函数,此时还需要生成阻塞等待信息,并连同装载启动信息一同加入到函数A的二进制代码中。
第五,对于第四步中生成调度代码步骤中,需要检查每个源代码中的函数是否带有参数,对于无参数类型的函数,则在生成调度代码之后即可跳到下一步骤中,对于带有参数的函数,需要进行额外的处理,针对第i层的二进制代码x中包含的函数符号,在其启动第i+1层中对应的二进制代码y时插入参数拷贝代码,从而生成第i+1层的参数准备代码,与此同时,在第i+1层包含同样函数定义的二进制代码y中插入生成的参数准备代码。例如,在A函数中检测到的未定义的B函数为带参数函数,则需要在该步骤中生成参数拷贝代码并插入到A函数中相应的函数定义,同时,也需要在下一层的B函数中插入相应的参数准备代码。
第六,在经过控制流关系数据库生成、函数调度代码生成、参数传递代码生成之后,还需经过一次完整的后编译步骤,这一步骤中将各个源代码组分别用其对应的指令集体系结构编译器进行再编译,用以检查并生成整个异构多核程序的可执行程序,如果任何一个层次的编译器报错则返回错误给程序员,如果通过,则输出全部层次的二进制代码组,然后进入程序发布步骤。
最后,经过后编译步骤后需要完成程序发布,这里需要特别指出的是最后一步要从控制流关系数据库中导出该异构多核程序中所有调用关系表,这些关系表需要与最顶层的二进制代码组进行组合并封装成一个独立的可执行程序,而其他层次的二进制代码组则分别加入到其对应层次的函数库中,供可执行程序在运行时调用。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种异构多核程序的编译方法,包括以下步骤:
步骤1,将一个程序代码分解成若干个运行在不同指令集体系结构处理器核上的程序代码;
步骤2,将分解后的所述程序代码发送到对应指令集体系结构下的编译器上进行预编译,得到各自对应的二进制代码组;对所述二进制代码组进行完整性检测,如果发现含有未定义函数符号,则报错并结束本方法,如果未发现则跳至步骤3;
步骤3,通过逐层查找的方法,自顶向下的建立函数调用关系数据库;
步骤4,对所述二进制代码组中的每个二进制代码生成相应的调度代码,对除最底层之外的二进制代码组中的每一个二进制代码进行未定义函数符号检查并生成所述未定义函数符号的定义;
步骤5,检查所述二进制代码组中的函数是否带有参数,对于带有参数的函数插入参数拷贝代码,从而生成参数准备代码;
步骤6,将所述二进制代码组分别用其对应的指令集体系结构编译器进行再编译,用以检查并生成整个异构多核程序的可执行程序;
步骤7,将各个层次编译出的可执行程序集合和所述函数调用关系数据库封装成程序安装包。
2.根据权利要求1所述的异构多核程序的编译方法,其中步骤1包括:
将输入的程序代码进行着色,按照颜色分解成多个程序代码,着色/分解的最小粒度为一个函数,其中每种颜色表示一种指令集体系结构;
分解后的程序代码包含多个程序代码组,将分解后的程序代码组按颜色和颜色对应的指令集体系结构层次排序成第1层到第n层程序代码组,其中n为自然数;
每个层次的程序代码组中包含一个或多个程序代码,每个程序代码对应生成一个可执行程序,每个程序代码中包含一个或多个相同颜色的函数;
将分解且分组后的层次化程序代码组放入步骤2的输入中,跳至步骤2。
3.根据权利要求2所述的异构多核程序的编译方法,其中步骤2包括:
将输入的n个程序代码组分别用各个层次的指令集体系结构编译器编译,得到n个二进制代码组,每个二进制代码组与程序代码组一一对应,且组内的二进制代码与程序代码一一对应;
对所述二进制代码组进行完整性检测,如果第n层二进制代码组不含有未定义函数符号,则跳至步骤3;如果第n层二进制代码组含有未定义函数符号,则预编译失败,该方法结束。
4.根据权利要求2所述的异构多核程序的编译方法,其中步骤3包括:
检查从第n-1层到第1层的每个二进制代码组i中的每个二进制代码,如果其包含未定义函数符号,则用此符号在i+1层二进制代码组中定义的函数符号中做匹配查找,若有且只有一个,则新建一个调用关系加入到函数调用关系数据库中;若有超过一个,则函数调用关系数据库生成失败,该方法结束;若没有,则函数调用关系数据库生成失败,该方法结束。
5.根据权利要求2所述的异构多核程序的编译方法,其中步骤4包括:
检查从第n-1层到第1层的每个二进制代码组i中的每个二进制代码,如果存在未定义的函数符号,则生成该函数的定义;在第i层的程序代码组里的二进制代码中插入生成的函数定义;将修改后的n个程序代码组传递给步骤5,并跳至步骤5。
6.根据权利要求5所述的异构多核程序的编译方法,其中步骤4中所述函数的定义内容包括:装载、启动第i+1层包含该函数符号的二进制代码,以及在串行方式下第i+1层代码执行完成的阻塞等待信息。
7.根据权利要求2所述的异构多核程序的编译方法,其中步骤5包括:
检查从第n-1层到第1层的每个源代码组i中的每个源代码,如果存在步骤4生成的函数定义,则检查函数原型是否有参数,如果无参数则跳过,如果带参数,则在生成的函数定义中,生成从第i层到第i+1层的参数拷贝代码,在启动第i+1层包含该函数符号的二进制代码之前,插入生成的参数拷贝代码;
生成第i+1层参数准备代码,在第i+1层包含该函数符号的二进制代码对应的程序代码之前插入生成的参数准备代码;
将修改后的程序代码组传递给步骤6,并跳至步骤6。
8.根据权利要求2所述的异构多核程序的编译方法,其中步骤6包括:
将输入的n个源代码组分别用各个层次的指令集体系结构编译器编译,如任何一个层次的编译器返回错误,则返回错误,否则输出n个层次二进制代码组到步骤7,跳至步骤7。
9.根据权利要求2所述的异构多核程序的编译方法,其中步骤7包括:
从所述函数调用关系数据库中导出所述异构多核程序的所有调用关系表,作为加载信息与第1层二进制代码组合并封装成可执行程序,将第2层到第n层二进制代码组分别加入各层次的函数库中,若对应层次的函数库不存在,则新建一个所述层次的函数库;将各个层次编译出的可执行程序集合和所述函数调用关系数据库封装成一个程序安装包。
10.根据权利要求1所述的异构多核程序的编译方法,其中所述编译方法用于层次化异构多核处理器中。
CN201510279138.4A 2015-05-27 2015-05-27 一种异构多核程序的编译方法 Active CN104820613B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510279138.4A CN104820613B (zh) 2015-05-27 2015-05-27 一种异构多核程序的编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510279138.4A CN104820613B (zh) 2015-05-27 2015-05-27 一种异构多核程序的编译方法

Publications (2)

Publication Number Publication Date
CN104820613A true CN104820613A (zh) 2015-08-05
CN104820613B CN104820613B (zh) 2018-03-27

Family

ID=53730915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510279138.4A Active CN104820613B (zh) 2015-05-27 2015-05-27 一种异构多核程序的编译方法

Country Status (1)

Country Link
CN (1) CN104820613B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511867A (zh) * 2015-11-30 2016-04-20 华为技术有限公司 一种优化模式自动生成方法及优化装置
CN107273176A (zh) * 2016-04-08 2017-10-20 上海思立微电子科技有限公司 一种适配硬件架构的编译方法及装置
CN108874727A (zh) * 2018-05-29 2018-11-23 中国人民解放军国防科技大学 一种面向gpdsp的多核并行计算实现方法
CN109521955A (zh) * 2018-10-15 2019-03-26 长安大学 基于分层交叉设计的异构部分重复码构造及转换方法
CN109871512A (zh) * 2019-01-27 2019-06-11 中国人民解放军国防科技大学 面向异构融合体系结构的矩阵乘加速方法
CN109933327A (zh) * 2019-02-02 2019-06-25 中国科学院计算技术研究所 基于代码融合编译框架的OpenCL编译器设计方法和系统
WO2019242586A1 (zh) * 2018-06-20 2019-12-26 中兴通讯股份有限公司 训练模型的实现方法、设备以及存储介质
CN111475152A (zh) * 2020-04-14 2020-07-31 中国人民解放军战略支援部队信息工程大学 一种代码处理方法及装置
CN111831331A (zh) * 2020-07-16 2020-10-27 中国科学院计算技术研究所 用于分形智能处理器的分形可重配指令集
CN111857824A (zh) * 2020-07-16 2020-10-30 中国科学院计算技术研究所 用于分形智能处理器的控制系统、方法及电子设备
CN113296777A (zh) * 2020-04-10 2021-08-24 阿里巴巴集团控股有限公司 依赖分析和程序编译方法、设备及存储介质
CN113626017A (zh) * 2021-07-06 2021-11-09 曙光信息产业(北京)有限公司 异构程序的分析方法、装置、计算机设备和存储介质
CN117032841A (zh) * 2023-08-04 2023-11-10 太初(无锡)电子科技有限公司 异构计算中核函数参数的高性能传递方法及异构计算系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463579B1 (en) * 1999-02-17 2002-10-08 Intel Corporation System and method for generating recovery code
US7941791B2 (en) * 2007-04-13 2011-05-10 Perry Wang Programming environment for heterogeneous processor resource integration
CN102831005A (zh) * 2012-07-13 2012-12-19 天津国芯科技有限公司 针对C*core处理器寄存器分配的编译方法及编译器
CN103744682A (zh) * 2014-01-24 2014-04-23 中国科学院自动化研究所 一种分开编译异构混编程序的方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463579B1 (en) * 1999-02-17 2002-10-08 Intel Corporation System and method for generating recovery code
US7941791B2 (en) * 2007-04-13 2011-05-10 Perry Wang Programming environment for heterogeneous processor resource integration
CN102831005A (zh) * 2012-07-13 2012-12-19 天津国芯科技有限公司 针对C*core处理器寄存器分配的编译方法及编译器
CN103744682A (zh) * 2014-01-24 2014-04-23 中国科学院自动化研究所 一种分开编译异构混编程序的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
盛艳秀: "多核异构环境下通用并行计算框架关键技术研究", 《中国博士学位论文全文数据库 信息科技辑》 *

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511867B (zh) * 2015-11-30 2019-04-23 华为技术有限公司 一种优化模式自动生成方法及优化装置
CN105511867A (zh) * 2015-11-30 2016-04-20 华为技术有限公司 一种优化模式自动生成方法及优化装置
CN107273176B (zh) * 2016-04-08 2020-05-12 上海思立微电子科技有限公司 一种适配硬件架构的编译方法及装置
CN107273176A (zh) * 2016-04-08 2017-10-20 上海思立微电子科技有限公司 一种适配硬件架构的编译方法及装置
CN108874727A (zh) * 2018-05-29 2018-11-23 中国人民解放军国防科技大学 一种面向gpdsp的多核并行计算实现方法
CN108874727B (zh) * 2018-05-29 2019-09-10 中国人民解放军国防科技大学 一种面向gpdsp的多核并行计算实现方法
WO2019242586A1 (zh) * 2018-06-20 2019-12-26 中兴通讯股份有限公司 训练模型的实现方法、设备以及存储介质
CN109521955A (zh) * 2018-10-15 2019-03-26 长安大学 基于分层交叉设计的异构部分重复码构造及转换方法
CN109521955B (zh) * 2018-10-15 2022-03-15 长安大学 基于分层交叉设计的异构部分重复码构造及转换方法
CN109871512A (zh) * 2019-01-27 2019-06-11 中国人民解放军国防科技大学 面向异构融合体系结构的矩阵乘加速方法
CN109933327A (zh) * 2019-02-02 2019-06-25 中国科学院计算技术研究所 基于代码融合编译框架的OpenCL编译器设计方法和系统
CN113296777A (zh) * 2020-04-10 2021-08-24 阿里巴巴集团控股有限公司 依赖分析和程序编译方法、设备及存储介质
CN113296777B (zh) * 2020-04-10 2022-05-27 阿里巴巴集团控股有限公司 依赖分析和程序编译方法、设备及存储介质
CN111475152A (zh) * 2020-04-14 2020-07-31 中国人民解放军战略支援部队信息工程大学 一种代码处理方法及装置
CN111475152B (zh) * 2020-04-14 2023-03-14 中国人民解放军战略支援部队信息工程大学 一种代码处理方法及装置
CN111831331A (zh) * 2020-07-16 2020-10-27 中国科学院计算技术研究所 用于分形智能处理器的分形可重配指令集
CN111857824A (zh) * 2020-07-16 2020-10-30 中国科学院计算技术研究所 用于分形智能处理器的控制系统、方法及电子设备
CN111831331B (zh) * 2020-07-16 2024-04-05 中国科学院计算技术研究所 用于分形智能处理器的分形可重配指令集
CN113626017A (zh) * 2021-07-06 2021-11-09 曙光信息产业(北京)有限公司 异构程序的分析方法、装置、计算机设备和存储介质
CN113626017B (zh) * 2021-07-06 2023-10-31 曙光信息产业(北京)有限公司 异构程序的分析方法、装置、计算机设备和存储介质
CN117032841A (zh) * 2023-08-04 2023-11-10 太初(无锡)电子科技有限公司 异构计算中核函数参数的高性能传递方法及异构计算系统
CN117032841B (zh) * 2023-08-04 2024-04-26 太初(无锡)电子科技有限公司 异构计算中核函数参数的高性能传递方法及异构计算系统

Also Published As

Publication number Publication date
CN104820613B (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
CN104820613A (zh) 一种异构多核程序的编译方法
Lee et al. Integration and analysis of use cases using modular Petri nets in requirements engineering
US20100083221A1 (en) System and method for automated re-architectureing of legacy systems using object oriented language
Wegner Programming languages—the first 25 years
CN106371887A (zh) 一种msvl语言的编译系统及方法
KR20140059319A (ko) Uml sd로부터 mccfg를 기반으로 하는 다단계 테스트 케이스 생성장치 및 방법
CN115809063B (zh) 一种存储过程编译方法、系统、电子设备和存储介质
CN103942081A (zh) Plc梯形图il指令表生成方法
CN110020834A (zh) 一种建模和调试融合的在线智能大数据开发方法
CN110795091A (zh) 一种模块化路由解耦方法、存储介质、电子设备及系统
CN108897678B (zh) 静态代码检测方法和静态代码检测系统、存储设备
Knuth Invited papers: History of writing compilers
Audenaert Clock trees: Logical clocks for programs with nested parallelism
HOUSEL III A study of decompiling machine languages into high-Level machine independent languages
Dörre et al. Static type checking of Hadoop MapReduce programs
Chen et al. A model for assembly program maintenance
CN105487912A (zh) 公共问题修改多分支维护系统及方法
Stabler System description languages
CN109857390B (zh) 一种Git仓库文件注解系统的注解传递方法
Kunisetty Workflow modeling and simulation using an extensible object- oriented knowledge base management system
Ceri et al. Software prototyping by relational techniques: experiences with program construction systems
van Hee et al. History-based joins: Semantics, soundness and implementation
Kaplan et al. Priority controlled incremental attribute evaluation in attributed graph grammars
Bruno et al. Rapid prototyping of control systems using high level Petri nets
Stevens UML and Concurrency

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20171206

Address after: 102412 Beijing City, Fangshan District Yan Village Yan Fu Road No. 1 No. 11 building 4 layer 402

Applicant after: Beijing Si Lang science and Technology Co.,Ltd.

Address before: 100190 Zhongguancun East Road, Beijing, No. 95, No.

Applicant before: Institute of Automation, Chinese Academy of Sciences

GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Patentee after: Shanghai Silang Technology Co.,Ltd.

Address before: 102412 room 402, 4th floor, building 11, No. 1, Yanfu Road, Yancun Town, Fangshan District, Beijing

Patentee before: Beijing Si Lang science and Technology Co.,Ltd.