CN101441569B - 基于异构可重构体系结构面向任务流的编译方法 - Google Patents

基于异构可重构体系结构面向任务流的编译方法 Download PDF

Info

Publication number
CN101441569B
CN101441569B CN2008102310100A CN200810231010A CN101441569B CN 101441569 B CN101441569 B CN 101441569B CN 2008102310100 A CN2008102310100 A CN 2008102310100A CN 200810231010 A CN200810231010 A CN 200810231010A CN 101441569 B CN101441569 B CN 101441569B
Authority
CN
China
Prior art keywords
task
program
heterogeneous
flow
optimization
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.)
Expired - Fee Related
Application number
CN2008102310100A
Other languages
English (en)
Other versions
CN101441569A (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.)
PLA Information Engineering University
Original Assignee
PLA Information Engineering University
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 PLA Information Engineering University filed Critical PLA Information Engineering University
Priority to CN2008102310100A priority Critical patent/CN101441569B/zh
Publication of CN101441569A publication Critical patent/CN101441569A/zh
Application granted granted Critical
Publication of CN101441569B publication Critical patent/CN101441569B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及一种基于异构可重构体系结构面向任务流的新型编译方法;该方法含有下列步骤:a.根据参数设置,应用具有不同针对性的任务流识别与优化技术,将被编译的串行程序或并行程序进行自动任务流化,产生任务流程序源代码;b.根据异构计算系统的执行特征,将任务流程序源代码中的任务根据其特点进行软硬件功能的动态划分,产生低级代码和配置流;c.产生目标程序和相应的FPGA配置流文件,完成面向异构可重构结构和任务流机制的特定优化;本发明针对不同计算任务的特点和需求,采用先进的软硬件功能动态划分和协同技术,产生出针对CPU的低级代码和针对RLU的配置流,有效提高了系统的整体性能和可重构计算资源的利用率。

Description

基于异构可重构体系结构面向任务流的编译方法
(一)、技术领域:本发明涉及一种结合通用计算和可重构计算异构体系结构的面向任务流的编译方法,特别涉及一种基于异构可重构体系结构面向任务流的编译方法。
(二)、背景技术:通用计算与专用计算模式使得当前的计算系统构建可以有更多的选择。为充分发挥不同计算模式在不同应用领域所具有的优势,出现了可同时利用多种计算模式的异构体系结构计算系统。由于异构计算系统中存在着包括通用处理器(CPU)、可重构逻辑单元(RLU)等大量的异构计算单元,这些计算单元往往以不同的计算模式实现计算任务,它们在执行特征上具有很大的差异。因此,如何根据应用程序的结构特点,将应用程序有效地划分为相应计算模式下运行的计算任务,分配到对应的计算部件或计算资源上运行,是异构计算系统设计中亟需解决的问题。
在异构计算系统中,主要存在着两种任务类型:运行在CPU上的软件任务和运行在RLU上的硬件任务。当前,异构计算系统的软硬件任务的划分方法可以被分为三类:(1)在程序设计时,由程序员显式地对软件任务和硬件任务进行分别描述。这要求设计者具有相当程度的硬件电路设计知识,以便准确地获知哪些计算任务能够以硬件执行的方式获得较高的加速比;(2)通过程序分析的方法,将程序中耗时最多的一个或几个计算任务采用硬件方式执行,这忽略了软件任务与硬件任务在执行特征上的差异,未必能够获得优化的任务划分方案;(3)对于每个能够以硬件方式执行的计算任务,根据它的硬件执行时间(包括各种额外的时间开销,例如配置时间)与它的软件执行时间之间的比较结果,判定该任务究竟以何种方式运行,但是这种方法没有考虑任务执行的前驱/后继任务对其执行造成的影响,可能会发生资源空等的情况。因此,合理地对软硬件任务进行划分,从而有效提高系统的整体性能和可重构计算资源的利用率,是本发明要解决的技术问题。
(三)、发明内容:
本发明要解决的技术问题是:克服现有技术的缺陷,提供一种基于异构可重构体系结构面向任务流的新型编译方法,该方法可针对不同计算任务的特点和需求,结合面向任务流可重构计算体系结构特点,采用先进的软硬件功能动态划分和协同技术,产生出针对CPU的低级代码和针对可重构逻辑单元的配置流,从而有效提高系统的整体性能和可重构计算资源的利用率。
本发明的技术方案:
一种基于异构可重构体系结构面向任务流的新型编译方法,含有下列步骤:
a.根据参数设置,应用具有不同针对性的任务流识别与优化技术,将被编译的串行程序或并行程序进行自动任务流化,产生任务流程序源代码,所述的参数设置含有标明应用程序结构特点的设置、标明应用程序的存储需求的设置、标明应用程序的运算精度的设置;
b.根据异构计算系统的执行特征,将任务流程序源代码中的任务根据其特点进行软硬件功能的动态划分,并产生低级代码和配置流;
c.根据步骤b的结果产生目标程序和相应的FPGA配置流文件,完成面向异构可重构结构和任务流机制的特定优化。
步骤c中,面向异构可重构结构和任务流机制的特定优化为:在目标程序运行过程中,根据运行反馈情况对FPGA配置流文件进行动态的调整和改进,提高系统的整体性能和资源利用率。
步骤a中的标明应用程序结构特点的设置含有计算密集型程序的设置、访存密集型程序的设置、I/O密集型程序的设置,具有不同针对性的任务流识别与优化技术是指:根据应用程序本身具有的不同的结构特征,对应用程序在运算粒度、存储调度、计算适应度方面进行任务流识别和优化。
步骤a中的被编译串行程序或并行程序是标准C语言串行程序或标准的并行程序,任务流程序源代码是含有任务流指导标识的任务流程序源代码。
步骤b的具体执行为过程为:首先对任务流程序源代码进行任务流语法分析,分析正确通过后再将任务流程序源代码转换成中间代码表示,然后根据异构计算系统的执行特征,将任务流程序源代码中的任务根据其特点进行软硬件功能的动态划分,具体划分为四种类型:只能在处理器上以软件方式实现的任务Ssw、只能在可重构逻辑单元上以硬件方式实现的任务Shw、既可以在处理器上实现又可以在可重构逻辑器件上实现的任务Ssw/hw、需要同时在处理器和可重构逻辑单元上实现的任务Ssw-hw,接着针对不同的优化目标要求进行中间代码的优化,最后分别产生针对CPU的低级代码和针对可重构逻辑单元的配置流。
中间代码的优化含有多级多粒度并行优化、低功耗编译优化、可靠性编译优化。
在步骤c中,通过针对异构计算体系结构的低级编译器,结合高效运行时库函数,产生可执行代码,在生成的可执行代码中加入适当的profiling语句,在异构可重构计算体系结构下动态捕捉程序的运行轨迹和反馈结果,通过程序的运行轨迹和反馈结果启动动态重编译机制,对被执行程序进行动态优化。
动态捕捉程序的运行轨迹和反馈结果的方法为:由任务效能监视器在系统运行时对Ssw/hw类型的软/硬件任务的执行效能进行评估,获得任务在不同执行模式下的资源消耗与性能收益之间的比值,并以此为依据判定在当前系统执行情况下是以软件方式还是硬件方式完成相关任务的执行。
对所述被执行程序的动态优化方法为:在任务调度时根据任务的时空域计算特征,采用配置预取和配置缓存技术,改进硬件任务的重构性能。
本发明的有益效果:
1、本发明在对应用程序进行静态编译时,针对任务流中计算任务的功能和性能要求,对软/硬件进行合理地划分,保证了将性能要求高的任务尽可能地部署到硬件逻辑上执行,同时将不适合硬件实现的任务部署到CPU上执行,有效提高了系统的整体性能和可重构计算资源的利用率。
2、本发明还在程序执行过程中,完成软/硬件任务的运行时调度,根据程序运行时计算逻辑资源的使用情况,及时更新编译时静态确定的任务划分方案,以获得更优化的资源利用率和系统执行性能,并采用合理的任务调度技术有效降低硬件任务重构导致的时间开销,改善了系统的执行性能。
(四)、附图说明:
图1为采用本发明的方法设计的基于异构体系结构计算系统面向任务流的编译系统的构架示意图;
图2为是任务流编译器原理框图。
(五)、具体实施方式:
参见图1~图2,采用本发明的方法设计的基于异构体系结构计算系统面向任务流的编译系统的结构如下:
该编译系统含有任务流编译器前端、任务流编译器、任务流编译器后端,任务流编译器前端是一个专用的任务流化工具,该任务流化工具即可以独立于任务流编译器使用,也可以作为任务流编译器前端,与任务流编译器构成一个整体,它的输入是标准C语言串行程序或标准的并行程序,输出是含有任务流指导标识的任务流源程序,该工具完成的是源到源的变换。
任务流编译器前端根据参数设置,应用具有不同针对性的任务流识别与优化技术,将被编译的串行程序或并行程序进行自动任务流化,产生任务流程序源代码,其中,参数设置含有标明应用程序结构特点的设置、标明应用程序的存储需求的设置、标明应用程序的运算精度的设置。
标明应用程序结构特点的设置含有计算密集型程序的设置、访存密集型程序的设置、I/O密集型程序的设置,具有不同针对性的任务流识别与优化技术是指:根据应用程序本身具有的不同的结构特征,对应用程序在运算粒度、存储调度、计算适应度方面进行任务流识别和优化。
任务流编译器含有任务流语法分析器,任务流中间代码生成遍,软硬件任务识别与划分遍,任务流代码优化遍,低级代码和配置流生成遍,该任务流编译器的输入是含有任务流指导标识的任务流源程序,输出是低级代码和可重构资源的配置流。任务流语法分析器对含有任务流指导标识的任务流源程序进行语法分析,分析正确通过后交给任务流中间代码生成遍,将源代码转换成中间代码表示,在软硬件任务识别与划分遍中,根据异构计算系统的执行特征,将任务流中的任务根据其特点进行软硬件功能的动态划分,任务可以分为四种类型:只能在处理器上以软件方式实现的任务Ssw、只能在可重构逻辑单元上以硬件方式实现的任务Shw、既可以在处理器上实现又可以在可重构逻辑器件上实现的任务Ssw/hw、需要同时在处理器和可重构逻辑单元上实现的任务Ssw-hw,其中,这四类任务的基本分类原则为:1)Ssw中包含的任务具有无法使用硬件实现的操作,例如系统调厨;2)Ssw/hw中包含的任务究竟是以软件还是硬件实现,需要根据系统运行时的资源利用情况动态地调整;3)Ssw-hw中包含的任务在静态编译时就已经完成了软硬件功能的划分,是在运行时会同时使用到通用计算单元和可重构逻辑单元的任务;接着,在任务流代码优化遍中,针对不同的优化目标要求进行任务流中间代码的优化,最后是低级代码和配置流生成遍,分别产生针对CPU的低级代码和针对可重构逻辑单元的配置流。
中间代码的优化含有多级多粒度并行优化、低功耗编译优化、可靠性编译优化。
在任务流编译器后端完成可执行代码的生成及软/硬件任务的调度,任务流编译器后端的主要功能是产生可执行代码,并在运行时实时进行任务的调度,提高系统的资源利用率和执行性能,通过针对异构计算体系结构的低级编译器,结合高效运行时库函数,产生可执行代码,在生成的可执行代码中加入适当的profiling语句,通过在异构可重构计算体系结构下动态捕捉的程序运行轨迹和反馈结果,启动动态重编译机制,对被执行程序进行动态优化。具体方法是:为了提高系统资源利用率,由任务效能监视器在系统运行时对Ssw/hw类型的软/硬件任务的执行效能进行评估,获得任务在不同执行模式下的资源消耗与性能收益之间的比值,并以此为依据判定在当前系统执行情况下是以软件方式还是硬件方式完成相关任务的执行。
另外,因为基于可重构逻辑单元的硬件任务除了具有传统的软件任务的时间域计算特征以外,还具有空间域计算特征,因此为了提高系统的执行性能,在任务调度时根据任务的时空域计算特征,采用配置预取和配置缓存技术,改进硬件任务的重构性能。

Claims (7)

1.一种基于异构可重构体系结构面向任务流的编译方法,其特征是:含有下列步骤:
a.根据参数设置,应用具有不同针对性的任务流识别与优化技术,将被编译的串行程序或并行程序进行自动任务流化,产生任务流程序源代码,所述的参数设置含有计算密集型程序的设置、访存密集型程序的设置、I/O密集型程序的设置、标明应用程序的存储需求的设置、标明应用程序的运算精度的设置;具有不同针对性的任务流识别与优化技术是指:根据应用程序本身具有的不同的结构特征,对应用程序在运算粒度、存储调度、计算适应度方面进行任务流识别和优化;
b.根据异构计算系统的执行特征,将任务流程序源代码中的任务根据其特点进行软硬件功能的动态划分,并产生低级代码和配置流,具体执行过程为:首先对任务流程序源代码进行任务流语法分析,分析正确通过后再将任务流程序源代码转换成中间代码表示,然后根据异构计算系统的执行特征,将任务流程序源代码中的任务根据其特点进行软硬件功能的动态划分,具体划分为四种类型:只能在处理器上以软件方式实现的任务Ssw、只能在可重构逻辑单元上以硬件方式实现的任务Shw、既可以在处理器上实现又可以在可重构逻辑器件上实现的任务Ssw/hw、需要同时在处理器和可重构逻辑单元上实现的任务Ssw-hw,接着针对不同的优化目标要求进行中间代码的优化,最后分别产生针对CPU的低级代码和针对可重构逻辑单元的配置流;
c.根据步骤b的结果产生目标程序和相应的FPGA配置流文件,完成面向异构可重构结构和任务流机制的特定优化。
2.根据权利要求1所述的基于异构可重构体系结构面向任务流的编译方法,其特征是:步骤c中,面向异构可重构结构和任务流机制的特定优化为:在目标程序运行过程中,根据运行反馈情况对FPGA配置流文件进行动态的调整和改进,提高系统的整体性能和资源利用率。
3.根据权利要求1所述的基于异构可重构体系结构面向任务流的编译方 法,其特征是:步骤a中的被编译串行程序或并行程序是标准C语言串行程序或标准的并行程序,任务流程序源代码是含有任务流指导标识的任务流程序源代码。
4.根据权利要求1所述的基于异构可重构体系结构面向任务流的编译方法,其特征是:所述中间代码的优化含有多级多粒度并行优化、低功耗编译优化、可靠性编译优化。
5.根据权利要求2所述的基于异构可重构体系结构面向任务流的编译方法,其特征是:在步骤c中,通过针对异构计算体系结构的低级编译器,结合高效运行时库函数,产生可执行代码,在生成的可执行代码中加入适当的profiling语句,在异构可重构计算体系结构下动态捕捉程序的运行轨迹和反馈结果,通过程序的运行轨迹和反馈结果启动动态重编译机制,对被执行程序进行动态优化。
6.根据权利要求5所述的基于异构可重构体系结构面向任务流的编译方法,其特征是:所述动态捕捉程序的运行轨迹和反馈结果的方法为:由任务效能监视器在系统运行时对Ssw/hw类型的软/硬件任务的执行效能进行评估,获得任务在不同执行模式下的资源消耗与性能收益之间的比值,并以此为依据判定在当前系统执行情况下是以软件方式还是硬件方式完成相关任务的执行。
7.根据权利要求5所述的基于异构可重构体系结构面向任务流的编译方法,其特征是:对所述被执行程序的动态优化方法为:在任务调度时根据任务的时空域计算特征,采用配置预取和配置缓存技术,改进硬件任务的重构性能。 
CN2008102310100A 2008-11-24 2008-11-24 基于异构可重构体系结构面向任务流的编译方法 Expired - Fee Related CN101441569B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008102310100A CN101441569B (zh) 2008-11-24 2008-11-24 基于异构可重构体系结构面向任务流的编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008102310100A CN101441569B (zh) 2008-11-24 2008-11-24 基于异构可重构体系结构面向任务流的编译方法

Publications (2)

Publication Number Publication Date
CN101441569A CN101441569A (zh) 2009-05-27
CN101441569B true CN101441569B (zh) 2012-05-30

Family

ID=40726017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008102310100A Expired - Fee Related CN101441569B (zh) 2008-11-24 2008-11-24 基于异构可重构体系结构面向任务流的编译方法

Country Status (1)

Country Link
CN (1) CN101441569B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291538A (zh) * 2017-06-14 2017-10-24 中国人民解放军信息工程大学 面向任务的拟态云构建方法及基于拟态云的任务调度方法、装置、系统

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763288B (zh) * 2010-01-19 2012-09-05 湖南大学 考虑硬件预配置因素的动态软硬件划分方法
US8756590B2 (en) * 2010-06-22 2014-06-17 Microsoft Corporation Binding data parallel device source code
CN102902588B (zh) * 2011-12-23 2015-04-15 同济大学 基于图相似性分析的异构可重构任务划分信息处理方法
CN102981836B (zh) * 2012-11-06 2015-08-12 无锡江南计算技术研究所 异构系统的编译方法和编译器
CN103226487B (zh) * 2013-04-25 2016-01-13 中国人民解放军信息工程大学 面向异构众核多级存储结构的数据分布与局部性优化方法
CN103605515B (zh) * 2013-11-11 2017-11-10 曙光信息产业(北京)有限公司 并行编程组件的配置方法和装置
WO2015113211A1 (zh) * 2014-01-28 2015-08-06 华为技术有限公司 一种可重入资源调度方法、设备及系统
US9529587B2 (en) * 2014-12-19 2016-12-27 Intel Corporation Refactoring data flow applications without source code changes or recompilation
CN104539632B (zh) * 2015-01-20 2017-12-12 中国人民解放军国防科学技术大学 一种基于虚拟地址空间的可编程网络设备管理控制方法
EP3274823A1 (en) * 2015-07-31 2018-01-31 Hewlett-Packard Enterprise Development LP Category based execution scheduling
CN108885546B (zh) * 2016-04-08 2021-07-20 华为技术有限公司 一种基于异构系统的程序处理方法和装置
CN107239315B (zh) 2017-04-11 2019-11-15 赛灵思公司 面向神经网络异构计算平台的编程模型
CN107315632A (zh) * 2017-06-27 2017-11-03 郑州云海信息技术有限公司 一种双调合并排序方法及系统
CN107818071B (zh) * 2017-09-27 2021-05-04 武汉科技大学 一种基于fpga的硬件线程实现方法
WO2021068102A1 (en) * 2019-10-08 2021-04-15 Intel Corporation Reducing compiler type check costs through thread speculation and hardware transactional memory
CN110865814B (zh) * 2019-10-30 2021-11-16 上海天数智芯半导体有限公司 一种支持异构计算核架构的编译器实现方法和系统
CN113031954A (zh) * 2019-12-24 2021-06-25 阿里巴巴集团控股有限公司 代码编译方法、装置、电子设备、存储介质及异构系统
CN111459832B (zh) * 2020-04-13 2022-09-09 郑州昂视信息科技有限公司 一种异构编译算法可行性评估方法及系统
CN111475152B (zh) * 2020-04-14 2023-03-14 中国人民解放军战略支援部队信息工程大学 一种代码处理方法及装置
CN113553061B (zh) * 2021-09-22 2021-12-17 西安芯瞳半导体技术有限公司 一种提升源程序执行性能的方法、装置及计算机存储介质
CN115309402B (zh) * 2022-07-13 2023-10-24 国网江苏省电力有限公司信息通信分公司 一种可量化差异的异构执行程序集合构成方法及装置
CN116257222B (zh) * 2023-02-28 2024-05-28 中国人民解放军战略支援部队信息工程大学 基于任务流的经典-量子协同计算编程方法及模型
CN116150455B (zh) * 2023-04-17 2023-07-18 华能信息技术有限公司 一种异构数据解析方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1783011A (zh) * 2004-12-02 2006-06-07 国际商业机器公司 用于异构型多处理系统的计算机程序功能划分系统和方法
CN101097515A (zh) * 2006-06-30 2008-01-02 佛山市顺德区顺达电脑厂有限公司 软件的系统架构及应用程序处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1783011A (zh) * 2004-12-02 2006-06-07 国际商业机器公司 用于异构型多处理系统的计算机程序功能划分系统和方法
CN101097515A (zh) * 2006-06-30 2008-01-02 佛山市顺德区顺达电脑厂有限公司 软件的系统架构及应用程序处理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291538A (zh) * 2017-06-14 2017-10-24 中国人民解放军信息工程大学 面向任务的拟态云构建方法及基于拟态云的任务调度方法、装置、系统
CN107291538B (zh) * 2017-06-14 2020-08-21 中国人民解放军信息工程大学 面向任务的拟态云构建方法及基于拟态云的任务调度方法、装置、系统

Also Published As

Publication number Publication date
CN101441569A (zh) 2009-05-27

Similar Documents

Publication Publication Date Title
CN101441569B (zh) 基于异构可重构体系结构面向任务流的编译方法
Liu et al. Speculative segmented sum for sparse matrix-vector multiplication on heterogeneous processors
Wang et al. FlexCL: An analytical performance model for OpenCL workloads on flexible FPGAs
EP2572275A1 (en) Distributing and parallelizing workloads in a computing platform
KR102402584B1 (ko) 사용자 어플리케이션의 특성에 따른 연산 디바이스 동적 제어 기법
CN104035781A (zh) 一种快速开发异构并行程序的方法
Streit et al. Sambamba: A runtime system for online adaptive parallelization
Cordes et al. Automatic extraction of pipeline parallelism for embedded heterogeneous multi-core platforms
Ivanenko et al. TuningGenie: auto-tuning framework based on rewriting rules
US10198544B2 (en) Method for improving OpenCL hardware execution efficiency
Chang et al. Tangram: a high-level language for performance portable code synthesis
Adve et al. Compiler-supported simulation of highly scalable parallel applications
Aguilar et al. Parallelism extraction in embedded software for Android devices
Jacob et al. Raising the Level of Abstraction of GPU-programming.
SR et al. Battle of compilers: An experimental evaluation using spec cpu2017
Wang et al. Code transformations for enhancing the performance of speculatively parallel threads
US20090187895A1 (en) Device, method, program, and recording medium for converting program
Posadas et al. Accelerating host-compiled simulation by modifying ir code: Industrial application in the spatial domain
Lai et al. Performance improvement on heterogeneous platforms: a machine learning based approach
CN112130861A (zh) 一种移动应用程序跨平台开发系统
Almghawish et al. An automatic parallelizing model for sequential code using Python
Posadas Cobo et al. Accelerating host-compiled simulation by modifying IR code: industrial application in the spatial domain
Van Werkhoven et al. An integrated approach to porting large scientific applications to GPUs
Cantiello et al. Compilers, techniques, and tools for supporting programming heterogeneous many/multicore systems
Stahl et al. Performance analysis for identification of (sub-) task-level parallelism in Java

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120530

Termination date: 20121124