CN107203406B - 一种面向分布式存储结构的处理方法 - Google Patents

一种面向分布式存储结构的处理方法 Download PDF

Info

Publication number
CN107203406B
CN107203406B CN201710496514.4A CN201710496514A CN107203406B CN 107203406 B CN107203406 B CN 107203406B CN 201710496514 A CN201710496514 A CN 201710496514A CN 107203406 B CN107203406 B CN 107203406B
Authority
CN
China
Prior art keywords
parallel
layer
compiling
successful
atom
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.)
Active
Application number
CN201710496514.4A
Other languages
English (en)
Other versions
CN107203406A (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.)
Xian Microelectronics Technology Institute
Original Assignee
Xian Microelectronics Technology Institute
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 Xian Microelectronics Technology Institute filed Critical Xian Microelectronics Technology Institute
Priority to CN201710496514.4A priority Critical patent/CN107203406B/zh
Publication of CN107203406A publication Critical patent/CN107203406A/zh
Application granted granted Critical
Publication of CN107203406B publication Critical patent/CN107203406B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

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

Abstract

本发明公开了一种面向分布式存储结构的处理方法,采用面向密集计算的5层并行编译框架,包括:用于生成剔除冗余的多原子应用并行区域的密集计算应用编译层、以数据并行模型为基础的原子应用层、用于将所述原子应用层的应用指令集翻译成基于多核运行时系统的SPMD并行代码的数据并行编译层、用于完成任务调度和数据流调度的并行运行时层以及用于支撑所述并行运行时层的操作系统层和本地编译层。基于本发明处理方法的模型,可以研发嵌入式多核版MATLAB,实现可见即可得的编程效果,为新一代巡航导弹、防空导弹、智能无人机等智能武器快速研发和部署矩阵运算、模式识别、机器学习等复杂算法,提供简单而高效的多核编程平台。

Description

一种面向分布式存储结构的处理方法
技术领域
本发明属于多核嵌入式存储结构设计技术领域,具体涉及一种面向分布式存储结构的处理方法。
背景技术
随着数字信号处理技术已经广泛应用于通信、图像识别、雷达、电子、医学成像等领域,各领域对数字信号处理器(DSP,Digital Signal Processor)的性能需求也激增。而传统的单核DSP计算性能在现有工艺条件下已接近瓶颈,故多核DSP将成为未来的一个重要发展方向。但多核DSP编程环境复杂,软件人员需要考虑各核任务、资源、数据的分配以及核间的协同工作等,导致编程周期长,负担重。同时,不恰当的多核协同工作方案会导致无法充分利用多核的硬件加速优势,甚至出现多核的性能还不如单核的情况。所以急需一套适用于多核DSP的应用编译框架,解放软件编程人员,自动将串行的单核代码翻译成并行的多核代码。
多核处理器C语言自动化是一个非常经典的研究课题,传统的自动化并行编译器,希望通过从传统单指令流的串行程序中提取粗粒度的并行来实现在多核处理器的并行执行,经过几十年的研究,目前也无法获得大的突破。
工作在系统应用层的OpenMP和MPI编程模型近年来在任务多核化方面已取得重要进展,是当前比较流行的两种并行编程模型。OpenMP通过对现有的串行C语言增加一组编译制导语句和库函数,由程序员指明线程间数据的私有和共享属性,采用fork-join的模式并行执行;国内清华大学对在开源编译器ORC上,对OpenMP指导语句进行了全局静态分析;中国科技大学实现了针对集群系统的扩展OpenMP。MPI则是通过一组消息库函数来支持不同处理器之间的消息通信,以单程序多数据(Single Program MultiPle Data,SPMD)方式在多个处理器核间并行执行程序,由编程人员对程序进行任务划分和通信交互。
除了OpenMP和MPI之外,还有其他诸多编程模型,总的来看这些并行编程模型都主要基于共享存储模型,共享存储模型因存在多核访存冲突和数据局部性难以利用的不足,导致多核处理器可扩展性差、多核加速比难以提升;此外,现有的编程模型都是面向并行系统的编程模型,要求程序员必须熟悉并行系统结构,所设计的并行算法需要对程序进行精心的任务划分、数据通信和同步设计。因此,程序的性能受制于程序员并行算法的设计和对并行系统的理解,这不仅极大地增加了编程人员、尤其是各个应用领域编程人员的编程负担,而且降低了程序的运行效率,很大程度上影响了并行系统性能的发挥。
此外,涉及诸多矩阵、数组和图像处理的混合运算,在分布式存储模型下,计算核必须将参与计算的数据显性地传递到本地存储区后才能开展运算。计算表达式越复杂,需要传递的数据流种类就越多,这导致数据流传输的控制逻辑非常复杂,自动化调度困难。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种面向分布式存储结构的处理方法,通过充分利用分布式存储结构的数据局部性原理,本发明提高了多核加速比,同时也解决了分布式存储模型下复杂计算表达式引发的数据流传输控制逻辑异常繁琐、自动化调度困难等问题。
本发明采用以下技术方案:
一种面向分布式存储结构的处理方法,采用面向密集计算的5层并行编译框架,包括:用于生成剔除冗余的多原子应用并行区域的密集计算应用编译层、以数据并行模型为基础的原子应用层、用于将所述原子应用层的应用指令集翻译成基于多核运行时系统的SPMD并行代码的数据并行编译层、用于完成任务调度和数据流调度的并行运行时层以及用于支撑所述并行运行时层的操作系统层和本地编译层。
优选的,所述密集计算应用编译层的步骤如下:
S101、对复杂表达式进行词法分析,成功则转到步骤S102,否则退出;
S102、对复杂表达式进行语法分析,成功则转到步骤S103,否则退出;
S103、生成有向无环图中间表达式,成功则转到步骤S104,否则退出;
S104、生成多原子并行区域代码,成功则转到步骤S105,否则退出;
S105、生成由多原子并行区域组成的中间文件。
优选的,步骤S101中,所述词法分析处理的输入信息是带有并行制导语句的C语言源代码,将源代码文件中的一个个字符串,逐个识别为有意义的词素或单词符号,并转变为便于内部处理的格式来保存。
优选的,步骤S102中,所述语法分析将词法分析输出的内部编码格式表示的单词序列构建出一个符合语法规则的完整语法树。
优选的,所述语法树对于语言的部分采用递归下降分析法进行生成,对于并行区域内的矩阵表达子式则采用算符优先分析法,生成并行区域对应的语法树。
优选的,步骤S103中,中间表达式根据有向无环图生成,采用三地址码表示,一条三地址码对应一个或一类原子应用层。
优选的,步骤S104中,综合复杂表达式词法分析所得特征信息和语法分析三地址码序列生成所述多原子并行区域代码,并识别三地址码代表的确切含义及相关的特征参数,生成一系列按序执行的原子应用并行区域。
优选的,所述数据并行编译层的工作步骤如下:
S201、对由多原子并行区域组成的中间文件进行词法分析,成功则转到步骤S202,否则退出;
S202、进行语法及语义分析,成功则转到步骤S203,否则退出;
S203、生成AST抽象语法树,成功则转到步骤S204,否则退出;
S204、AST变换,成功则转到步骤S203,否则退出;
S205、生成可由C编译器编译的C代码。
优选的,步骤S204具体为:
首先将原源代码生成AST抽象语法树,然后再扫描这个语法树,发现编译制导指令进行变换,将该节点对应的子树摘下来,保留原代码,做整形,生成单独函数,调用计算核本地编译器编译成可重定位文件,放入到内存文件系统,插入新增的运行库函数的调用,然后将该变换后的子树再插入到原来的地方,最后,本层的编译器遍历这整个AST,并还原输出成C语言源代码文件,完成代码转换。
与现有技术相比,本发明至少具有以下有益效果:
本发明提供的面向分布式存储结构的应用编译框架处理方法,采用面向密集计算的密集计算应用编译层、原子应用层、数据并行编译层、并行运行时层以及操作系统层和本地编译层5层并行编译框架,突破了复杂存储模型管理和高效并行编程模型等难题,缩小了用户与处理器的距离,大幅度提升了用户编写密集计算应用程序的编程效率,为分布式多核存储模型下,开展高加速并行计算提供了新的理论和方法。
进一步的,密集计算应用编译层直接分析应用矩阵、数组和图像类计算表达式,完成计算表达式的解耦、识别公共子式并优化,最终自动生成剔除冗余的多原子应用并行区域,为数据并行编译层完成多核代码的自动生成奠定基础。
进一步的,分析并行编译制导区域中的代码,能预先发现表达式中的公共子式,进而消除这些冗余的公共子式,导致生成自动剔除冗余的多原子应用并行区域,带来整个计算表达式中计算量的线性下降,最终缩短了相应的计算时间。
进一步的,递归下降法根据语言中各语法范畴有文法递归定义的特点,用一组相互递归的子程序来完成语法分析。生成语法树(AST)的过程对于语言的部分采用递归下降分析法,简单易于实现;算符优先法则利用各个算符间的优先关系和结合规则来指导语法分析,不仅简单易于实现还特别适合于分析各种表达式,因此对于并行区域内的矩阵表达子式采用算符优先分析法,生成并行区域对应的语法树。
进一步的,数据并行编译层首先进行AST分析以识别原子应用层的原子指令类别,再根据原子指令类别搜集该类应用所需的参数,进而完成该类应用的数据的自动划分并生成调用SPMD运行库函数的C语言代码节点,最终进行AST变换将原子指令翻译成基于多核运行时系统的SPMD并行代码。
进一步的,对AST进行分析,识别带有编译制导指令的C语言节点,并将该类节点变换成不带编译制导指令、插入了调用运行时库函数的C语言代码节点,从而完成源代码到源代码的变换,实现了多核代码的自动生成,大幅度提升了用户编写密集计算应用程序的编写效率。
综上所述,基于本发明处理方法的模型,可以研发嵌入式多核版MATLAB,实现可见即可得的编程效果,为新一代巡航导弹、防空导弹、智能无人机等智能武器快速研发和部署矩阵运算、模式识别、机器学习等复杂算法,提供简单而高效的多核编程平台。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明的并行编译框架示意图;
图2为本发明的密集计算应用编译层工作流程图;
图3为本发明的含有并行制导语句的C语言代码;
图4为本发明的并行区域对应的DAG示意图;
图5为本发明的多原子并行区域自动生成过程示意图;
图6为本发明的数据并行编译器工作流程图。
具体实施方式
请参阅图1,本发明提供了一种面向分布式存储结构的处理方法,采用面向密集计算的5层并行编译框架,包括:密集计算应用编译层、原子应用层、数据并行编译层、并行运行时层、操作系统层和本地编译层。
密集计算应用编译层用于分析应用层矩阵、数组和图像计算表达式,完成了计算表达式的解耦和公共子式优化,最终自动生成剔除冗余的多原子应用并行区域,解决了分布式存储模型下运算逻辑的合理解耦问题。
原子应用层以数据并行模型为基础定义了一系列“应用指令集”,主要包括海量矩阵、海量数组的基本运算和图像类的基本算子。该层拉近了用户与处理器的距离,降低了面向密集计算编译器的设计难度。
数据并行编译层根据实际应用需求(主要是数据大小、起始地址和数据流调度模型)将原子应用层的“应用指令集”翻译成基于多核运行时系统的SPMD并行代码。
并行运行时层按照原子应用运算的计算逻辑完成任务调度和数据流调度,解决了分布式存储模型下的数据流调度问题。同时该层能够检测多核系统运行故障,及时完成任务重构和任务迁移,提升了系统的可靠性。
操作系统层和本地编译层主要为实现高效的运行时层提供良好的支撑平台,为实现公共子式优化、图像数据存储、任务重构和任务迁移提供强大支撑。
请参阅图2,所述密集计算应用编译层的步骤如下:
S101、对复杂表达式进行词法分析,成功则转到步骤S102,否则退出;
S102、对复杂表达式进行语法分析,成功则转到步骤S103,否则退出;
S103、生成有向无环图中间表达式,成功则转到步骤S104,否则退出;
S104、生成多原子并行区域代码,成功则转到步骤S105,否则退出;
S105、生成由多原子并行区域组成的中间文件。
请参阅图,3,词法分析处理的输入信息是带有并行制导语句的C语言源代码,它将源代码文件中的一个个字符串,逐个识别为有意义的词素或单词符号,并转变为便于内部处理的格式来保存。它和普通C语言的词法分析大体相同,不同之处关键在于分析并行编译制导区域中的代码。
请参阅图4,语法分析将词法分析输出的内部编码格式表示的单词序列尝试构建出一个符合语法规则的完整语法树。生成语法树的过程对于语言的部分采用递归下降分析法,而对于并行区域内的矩阵表达子式则采用算符优先分析法,生成并行区域对应的语法树。
中间表达式根据有向无环图生成,采用三地址码表示。不过此编译器中的一条三地址码对应的是一个或者一类原子应用层而不是本地编译器中一条或者一类机器指令。
请参阅图5,生成多原子并行区域代码需要综合复杂表达式词法分析所得特征信息和语法分析三地址码序列,并准确识别三地址码代表的确切含义及相关的特征参数,进而生成一系列按序执行的原子应用并行区域。
请参阅图6,本发明数据并行编译层工作步骤如下:
S201、对由多原子并行区域组成的中间文件进行词法分析。成功则转到步骤S202,否则退出;
S202、进行语法及语义分析。成功则转到步骤S203,否则退出;
S203、生成AST抽象语法树。成功则转到步骤S204,否则退出;
S204、AST变换。成功则转到步骤S203,否则退出;
S205、生成可由C编译器编译的C代码。
所述数据并行编译层的编译工作最关键的就是对所生成的AST进行分析变换,将带有编译制导指令的C语言源代码转换成不带编译制导指令、插入了调用运行库函数的C语言代码。
首先需要将原来的源代码生成AST抽象语法树,然后再扫描这个语法树,发现编译制导指令就进行变换:
将该节点对应的子树摘下来,基本保留原来的代码不做太大变化,做一定的整形,生成单独函数,调用计算核本地编译器编译成可重定位文件,放入到内存文件系统;
在合适的地方插入新增的运行库函数的调用,然后将该变换后的子树再插入到原来的地方。
最后,本层的编译器遍历这整个AST,并还原输出成C语言源代码文件。
至此,代码转换工作就完成了。
综上所述,本发明提出的面向分布式存储结构的应用编译框架,针对分布式存储模型,突破了复杂存储模型管理、多级编译器设计和大规模数据调度难题,实现了简单、高效的多核并行编程方式。

Claims (6)

1.一种面向分布式存储结构的处理方法,其特征在于,采用面向密集计算的5层并行编译框架,包括:用于生成剔除冗余的多原子应用并行区域的密集计算应用编译层、以数据并行模型为基础的原子应用层、用于将所述原子应用层的应用指令集翻译成基于多核运行时系统的单程序多数据SPMD并行代码的数据并行编译层、用于完成任务调度和数据流调度的并行运行时层以及用于支撑所述并行运行时层的操作系统层和本地编译层;
所述密集计算应用编译层的工作步骤如下:
S101、对复杂表达式进行词法分析,成功则转到步骤S102,否则退出;
S102、对复杂表达式进行语法分析,成功则转到步骤S103,否则退出,语法分析将词法分析输出的内部编码格式表示的单词序列构建出一个符合语法规则的完整语法树;
S103、生成有向无环图中间表达式,成功则转到步骤S104,否则退出;
S104、生成多原子并行区域代码,成功则转到步骤S105,否则退出;
S105、生成由多原子并行区域组成的中间文件;
所述数据并行编译层的工作步骤如下:
S201、对由多原子并行区域组成的中间文件进行词法分析,成功则转到步骤S202,否则退出;
S202、进行语法及语义分析,成功则转到步骤S203,否则退出;
S203、生成抽象语法树AST,成功则转到步骤S204,否则退出;
S204、AST变换,成功则转到步骤S203,否则退出;
S205、生成可由C编译器编译的C代码。
2.根据权利要求1所述的一种面向分布式存储结构的处理方法,其特征在于,步骤S101中,所述词法分析处理的输入信息是带有并行制导语句的C语言源代码,将源代码文件中的一个个字符串,逐个识别为有意义的词素或单词符号,并转变为便于内部处理的格式来保存。
3.根据权利要求1所述的一种面向分布式存储结构的处理方法,其特征在于,步骤S102中,所述语法树对于语言的部分采用递归下降分析法进行生成,对于并行区域内的矩阵表达子式则采用算符优先分析法,生成并行区域对应的语法树。
4.根据权利要求1所述的一种面向分布式存储结构的处理方法,其特征在于,步骤S103中,中间表达式根据有向无环图生成,采用三地址码表示,一条三地址码对应一个或一类原子应用层。
5.根据权利要求1所述的一种面向分布式存储结构的处理方法,其特征在于,步骤S104中,综合复杂表达式词法分析所得特征信息和语法分析三地址码序列生成所述多原子并行区域代码,并识别三地址码代表的确切含义及相关的特征参数,生成一系列按序执行的原子应用并行区域。
6.根据权利要求1所述的一种面向分布式存储结构的处理方法,其特征在于,步骤S204具体为:
首先将原源代码生成抽象语法树AST,然后再扫描这个语法树,发现编译制导指令进行变换,将节点对应的子树摘下来,保留源代码,做整形,生成单独函数,调用计算核本地编译器编译成可重定位文件,放入到内存文件系统,插入新增的运行库函数的调用,然后将该变换后的子树再插入到原来的地方,最后,本层的编译器遍历这整个AST,并还原输出成C语言源代码文件,完成代码转换。
CN201710496514.4A 2017-06-26 2017-06-26 一种面向分布式存储结构的处理方法 Active CN107203406B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710496514.4A CN107203406B (zh) 2017-06-26 2017-06-26 一种面向分布式存储结构的处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710496514.4A CN107203406B (zh) 2017-06-26 2017-06-26 一种面向分布式存储结构的处理方法

Publications (2)

Publication Number Publication Date
CN107203406A CN107203406A (zh) 2017-09-26
CN107203406B true CN107203406B (zh) 2020-11-06

Family

ID=59907859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710496514.4A Active CN107203406B (zh) 2017-06-26 2017-06-26 一种面向分布式存储结构的处理方法

Country Status (1)

Country Link
CN (1) CN107203406B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258574B (zh) * 2020-01-14 2021-01-15 中科驭数(北京)科技有限公司 加速器体系结构的编程方法和系统
CN111880796B (zh) * 2020-07-30 2023-03-14 西安微电子技术研究所 一种多核模型架构实现方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009143068A2 (en) * 2008-05-19 2009-11-26 The Mathworks, Inc. Method of using parallel processing constructs
CN101799760A (zh) * 2009-02-10 2010-08-11 国际商业机器公司 生成任意目标架构的并行单指令多数据代码的系统和方法
CN104461467A (zh) * 2013-09-25 2015-03-25 广州中国科学院软件应用技术研究所 针对SMP集群系统采用MPI和OpenMP混合并行提高计算速度的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009143068A2 (en) * 2008-05-19 2009-11-26 The Mathworks, Inc. Method of using parallel processing constructs
CN101799760A (zh) * 2009-02-10 2010-08-11 国际商业机器公司 生成任意目标架构的并行单指令多数据代码的系统和方法
CN104461467A (zh) * 2013-09-25 2015-03-25 广州中国科学院软件应用技术研究所 针对SMP集群系统采用MPI和OpenMP混合并行提高计算速度的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于动态规划的自动向量化方法;吕鹏伟 等;《北京理工大学学报》;20170515;第37卷(第5期);第544-550页 *
异构多核代码自动生成框架;王淼 等;《计算机科学与探索》;20130630;第518-526页 *

Also Published As

Publication number Publication date
CN107203406A (zh) 2017-09-26

Similar Documents

Publication Publication Date Title
Linderman et al. Merge: a programming model for heterogeneous multi-core systems
JP2738692B2 (ja) 並列化コンパイル方法
AU2013290313B2 (en) Method and system for automated improvement of parallelism in program compilation
CN110825384A (zh) 一种基于llvm的st语言编译方法及编译系统和编译器
CN103077064B (zh) 一种解析并执行程序语言方法及解释装置
Noaje et al. Source-to-source code translator: OpenMP C to CUDA
CN103235724A (zh) 基于原子操作语义描述的多源二进制代码一体化翻译方法
CN107203406B (zh) 一种面向分布式存储结构的处理方法
CN108664238A (zh) 一种解释型脚本语言c-sub的执行方法及装置
CN1932766A (zh) 面向串行程序代码量大的领域的半自动并行化方法
Pereira et al. Extending OpenACC for efficient stencil code generation and execution by skeleton frameworks
CN112527304B (zh) 基于异构平台的自适应节点融合编译优化方法
Panyala et al. On the use of term rewriting for performance optimization of legacy HPC applications
Jing et al. An Automatic Task Partition Method for Multi-core System
TWI776338B (zh) 應用於圖形處理器的編譯器及非暫態電腦可讀式儲存媒體
CN112445485B (zh) 基于编译实现的可扩展向量掩码功能的方法和装置
Feng et al. Refactoring Java Code to MapReduce Framework (S).
CN114428643A (zh) 一种基于cpu-gpu协同的数值计算软件加速方法
Kataev et al. Data distribution and parallel code generation for heterogeneous computational clusters
Wu et al. Heterogeneous Computing and Applications in Deep Learning: A Survey
CN117032647A (zh) 一种异构架构并行编程模型优化系统
WO2007051634A2 (en) Method for generating a simulation program which can be executed on a host computer
CN116893818A (zh) 高兼容性的异构编译方法及异构编译器
Zhu et al. Matrix-DSP back-end support based on TVM compilation structure
Castro Structured arrows: a type-based framework for structured parallelism

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