CN105487911B - 一种基于编译指导的众核数据分片方法 - Google Patents
一种基于编译指导的众核数据分片方法 Download PDFInfo
- Publication number
- CN105487911B CN105487911B CN201510830718.8A CN201510830718A CN105487911B CN 105487911 B CN105487911 B CN 105487911B CN 201510830718 A CN201510830718 A CN 201510830718A CN 105487911 B CN105487911 B CN 105487911B
- Authority
- CN
- China
- Prior art keywords
- array
- fragment
- compiling
- original
- many
- 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
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种基于编译指导的众核数据分片方法,包括:在加速程序段开始处添加编译指导语句,描述原始数组的多个分片特征;编译器识别编译指导语句,记录原始数组的每个分片信息;对原始数组的各个分片信息,计算该分片的大小,并在局存中申请具有相同大小的相应局存数组;扫描整个加速程序段,检查原始数据的每个引用;如果该引用的数据在当前的分片内,则将原始数组的引用转换成对局存数组的引用;如果该引用是读引用,则在原始数组的分片信息上记录读标志;如果该引用是写引用,则在原始数组的分片信息上记录写标志;如果分片有读标志,在加速段开始处插入该分片的数据导入语句;如果分片有写标志,在加速段开始处插入该分片的数据导出语句。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种基于编译指导的众核数据分片方法。
背景技术
众核处理器上的加速计算核心是众核处理器的加速运算部件,可以将需要加速运算的代码和数据加载到运算核心上执行。加速计算核心对不同层次的存储器的访问速度是有很大差异的,其访问片外主存是较慢的,而对片上存储器的访问比片外主存有更快的访问速度和更高的访存带宽。因此加速线程的数据只有放在片上局部存储器中才能获得良好的加速性能。而实际的应用中,往往因为某些数据较大且在加速线程中的访问模式不规则而无法存储在局部存储器中,从而使得应用的性能下降。
软件管理的多层次存储系统(Software-Managed Memory Hierarchies System,SMMHS)指的是,众核处理器上有多层次存储系统,包括片外主存和每个或每几个计算核心拥有一块独立编址的片上存储器。片上存储器完全由用户或者软件来管理。片上存储器和片外主存构成了SMMHS的多级访存资源。
在拥有SMMHS的众核处理器上开发并行程序时,每个或每几个加速运算核心拥有一块独立编址的片上存储器,容量一般不大。因运算核心的片上局部存储器容量的限制,一些较大的数组变量如果在加速线程中具有不规则访问模式时,无法存储在局存中,只能存储在片外主存中。这样增加了加速线程的访存开销,降低了程序的性能。
某些编译器通过分析加速程序段循环中的数据访问模式,将较大的的数据分块导入到片上局存中,从而提高程序性能。但是他们的方法只限于访问模式规整(仿射下标函数)的循环,对于那些不规则的数据访问模式,他们的编译分析算法难以进行。
发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种基于编译指导的众核数据分片方法,其能够解决加速线程(Accelerator thread)(运行在加速运算核心上的程序实体)中不规则访问特征的数组利用片上局存进行优化的问题,以提高程序性能。
根据本发明,提供了一种基于编译指导的众核数据分片方法,包括:
在加速程序段开始处添加编译指导语句,描述原始数组的多个分片特征;
编译器识别编译指导语句,记录原始数组的每个分片信息;
对原始数组的各个分片信息,计算该分片的大小,并在局存中申请具有相同大小的相应局存数组;
扫描整个加速程序段,检查原始数据的每个引用;如果该引用的数据在当前的分片内,则将原始数组的引用转换成对局存数组的引用;
如果该引用是读引用,则在原始数组的分片信息上记录读标志;如果该引用是写引用,则在原始数组的分片信息上记录写标志;
如果分片有读标志,在加速段开始处插入该分片的数据导入语句;如果分片有写标志,在加速段开始处插入该分片的数据导出语句。
优选地,在将原始数组的引用转换成对局存数组的引用后,对局存数组的引用重新计算数组下标。
优选地,所述基于编译指导的众核数据分片方法用于具有软件管理的多层次存储系统的众核处理器的编译系统。
优选地,所述原始数组的访问模式具有分段局部的特征。
优选地,所述原始数组的数组下标是循环变量的仿射函数。
本发明采用添加用户指导描述和编译分析相结合的策略,解决了某些访问模式复杂的大数组有效利用片上局部存储的问题,提高了程序的执行性能。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1示意性地示出了根据本发明优选实施例的基于编译指导的众核数据分片方法的流程图。
需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
加速程序段所用到的数据需要尽可能地存储在片上局存中,优化编译器一般通过编译静态分析、剖析(profiling)等技术分析数据的引用模式、访问频率和生命周期等信息,然后选择恰当的算法和编译优化框架对大数组进行分片存储优化。这样可以获得两个方面的好处:其一使得那些整个变量不能在片上局存中存储下的变量也能够利用片上存储器进行优化;其二使得一些能够整个存储在片上局存中的变量只需要一部分存储在片上存储器即可,节约出剩余部分的片上存储空间做其它数据变量的访存优化。但是该方法具有一定的局限性。加速程序段对数据的访问模式是多样的,编译器很难分析清楚一段程序中重点数据的所有特征引用模式。因此该方法只适用于对数组访问模式规整的程序,例如数组下标是循环变量的仿射函数。
而在实际的应用程序中,很多数组的访问模式具有分段局部的特征,例如:在一次循环迭代中只访问数据的某一段或者某几段。这样的访问特征编译器很难分析清楚。
本发明提出的基于编译指导的众核数据分片技术即针对具有这类访问特征的数组,设计了用于描述数据的分片访问特征的编译指导语句,在加速段开始时由用户添加。编译器在编译过程中进行相应的程序变换,将数据分片导入或导出片上局部存储器,提高加速程序段的访存性能。
图1示意性地示出了根据本发明优选实施例的基于编译指导的众核数据分片方法的流程图。例如,所述基于编译指导的众核数据分片方法可用于具有软件管理的多层次存储系统(SMMHS)的众核处理器的编译系统。
如图1所示,根据本发明优选实施例的基于编译指导的众核数据分片方法包括:
第一步骤S1:在加速程序段开始处添加编译指导语句,描述原始数组A的多个分片特征;如上所述,例如原始数组的访问模式具有分段局部的特征。
第二步骤S2:编译器识别编译指导语句,记录原始数组A的每个分片信息;
第三步骤S3:对原始数组A的一个分片信息,计算该分片的大小SIZE_1,并在局存中申请具有相同大小SIZE_1的相应的局存数组LDM_A1;
第四步骤S4:扫描整个加速程序段,考察(即检查)原始数据A的每个引用;如果该引用的数据在当前的分片内,则将原始数组A的引用转换成对局存数组LDM_A1的引用;此时,例如数组下标是循环变量的仿射函数,由此在引用转换后针对局存数组LDM_A1的引用重新计算下标,即在将原始数组的引用转换成对局存数组的引用后,对局存数组的引用重新计算数组下标;
第五步骤S5:如果该引用是读引用,则在原始数组A的分片信息上记录读标志;如果该引用是写引用,则在原始数组A的分片信息上记录写标志;
第六步骤S6:如果分片有读标志,在加速段开始处插入该分片的数据导入语句;如果分片有写标志,在加速段开始处插入该分片的数据导出语句;
第七步骤S7:如果原始数组A的还有其他分片信息未处理,则转第三步骤S3以便针对原始数组A的下一个分片信息进行上述处理;如果已经处理完原始数组A的所有分片信息,则程序结束。
根据上面所述流程可以看到,根据本发明优选实施例的基于编译指导的众核数据分片方法中,执行对大数组分片优化过程有两个重要方面:一是由用户添加的描述数组分片特征的编译指导语句;二是编译器在编译指导语句的指导下,对每个分片进行引用变换和数据传输。
在根据本发明优选实施例的基于编译指导的众核数据分片方法中,结合采用“用户添加数据访问特征描述”和“编译分析变换”的方式,实现了利用片上局存对具有分片引用特征的大数组的优化访问,提高了程序的性能。
本发明的优点在于针对加速程序段中某些编译器不能有效自动分析的具有分片引用特征的数组,结合采用“用户添加数据访问特征描述”和“编译分析变换”的方式,也能利用片上局部存储器进行优化,能有效提高程序的性能。而且编译指示使用方便简洁,综合收益大。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (4)
1.一种基于编译指导的众核数据分片方法,其特征在于包括:
在加速程序段开始处添加编译指导语句,描述原始数组的多个分片特征,其中所述原始数组的访问模式具有分段局部的特征;
编译器识别编译指导语句,记录原始数组的每个分片信息;
对原始数组的各个分片信息,计算该分片的大小,并在局存中申请具有相同大小的相应局存数组;
扫描整个加速程序段,检查原始数组的每个引用;如果该引用的数据在当前的分片内,则将原始数组的引用转换成对局存数组的引用;
如果该引用是读引用,则在原始数组的分片信息上记录读标志;如果该引用是写引用,则在原始数组的分片信息上记录写标志;
如果分片有读标志,在加速程序段开始处插入该分片的数据导入语句;如果分片有写标志,在加速程序段开始处插入该分片的数据导出语句。
2.根据权利要求1所述的基于编译指导的众核数据分片方法,其特征在于,在将原始数组的引用转换成对局存数组的引用后,对局存数组的引用重新计算数组下标。
3.根据权利要求1或2所述的基于编译指导的众核数据分片方法,其特征在于,所述基于编译指导的众核数据分片方法用于具有软件管理的多层次存储系统的众核处理器的编译系统。
4.根据权利要求1或2所述的基于编译指导的众核数据分片方法,其特征在于,所述原始数组的数组下标是循环变量的仿射函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510830718.8A CN105487911B (zh) | 2015-11-24 | 2015-11-24 | 一种基于编译指导的众核数据分片方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510830718.8A CN105487911B (zh) | 2015-11-24 | 2015-11-24 | 一种基于编译指导的众核数据分片方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105487911A CN105487911A (zh) | 2016-04-13 |
CN105487911B true CN105487911B (zh) | 2018-07-06 |
Family
ID=55674907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510830718.8A Active CN105487911B (zh) | 2015-11-24 | 2015-11-24 | 一种基于编译指导的众核数据分片方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105487911B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416825B (zh) * | 2019-08-21 | 2022-10-04 | 无锡江南计算技术研究所 | 面向异构众核基于空间重排的数据传输方法 |
CN112445486A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于编译指导的有读写依赖循环的多线程并行方法 |
CN114217807B (zh) * | 2021-04-09 | 2024-04-30 | 无锡江南计算技术研究所 | 一种基于异构众核架构的直接内存访问编译优化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096390A (zh) * | 2011-01-30 | 2011-06-15 | 深圳市合信自动化技术有限公司 | 可编程逻辑控制器、程序编译器、编译系统及方法 |
CN102880497A (zh) * | 2012-09-28 | 2013-01-16 | 无锡江南计算技术研究所 | 一种编译器及软件管理存储器的重用优化方法 |
CN102968388A (zh) * | 2012-10-26 | 2013-03-13 | 无锡江南计算技术研究所 | 数据布局方法及其装置 |
CN103226487A (zh) * | 2013-04-25 | 2013-07-31 | 中国人民解放军信息工程大学 | 面向异构众核多级存储结构的数据分布与局部性优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8131970B2 (en) * | 2009-04-21 | 2012-03-06 | Empire Technology Development Llc | Compiler based cache allocation |
-
2015
- 2015-11-24 CN CN201510830718.8A patent/CN105487911B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096390A (zh) * | 2011-01-30 | 2011-06-15 | 深圳市合信自动化技术有限公司 | 可编程逻辑控制器、程序编译器、编译系统及方法 |
CN102880497A (zh) * | 2012-09-28 | 2013-01-16 | 无锡江南计算技术研究所 | 一种编译器及软件管理存储器的重用优化方法 |
CN102968388A (zh) * | 2012-10-26 | 2013-03-13 | 无锡江南计算技术研究所 | 数据布局方法及其装置 |
CN103226487A (zh) * | 2013-04-25 | 2013-07-31 | 中国人民解放军信息工程大学 | 面向异构众核多级存储结构的数据分布与局部性优化方法 |
Non-Patent Citations (1)
Title |
---|
面向异构处理器的代价模型及存储优化技术研究;黄品丰;《中国优秀硕士学位论文全文数据库信息科技辑》;20140515(第05期);第35-55页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105487911A (zh) | 2016-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6381739B1 (en) | Method and apparatus for hierarchical restructuring of computer code | |
US7765534B2 (en) | Compiler with cache utilization optimizations | |
US5889999A (en) | Method and apparatus for sequencing computer instruction execution in a data processing system | |
Hinze et al. | Finger trees: a simple general-purpose data structure | |
US6523173B1 (en) | Method and apparatus for allocating registers during code compilation using different spill strategies to evaluate spill cost | |
EP0838755A2 (en) | Binary program conversion apparatus and method | |
US7844422B2 (en) | Method and system for changing a description for a state transition function of a state machine engine | |
US20080052693A1 (en) | Method of simd-ization through data reshaping, padding, and alignment | |
KR20080041271A (ko) | 멀티프로세서들의 스트리밍 어플리케이션들을 위한 데이터변환들 | |
CN105487911B (zh) | 一种基于编译指导的众核数据分片方法 | |
CN108037926A (zh) | 字节码的优化方法、装置、存储介质、处理器及终端 | |
de Mesmay et al. | Offline library adaptation using automatically generated heuristics | |
US7530063B2 (en) | Method and system for code modification based on cache structure | |
CN102929580B (zh) | 数组多引用访问的分块方法和装置 | |
CN1894674A (zh) | 存储器访问指令向量化 | |
CN116360790A (zh) | 一种基于虚拟机的代码编译方法、装置及执行方法、装置 | |
CN115495226A (zh) | 内存管理方法、装置、设备及计算机可读存储介质 | |
KR101382362B1 (ko) | 복수의 실행 유닛을 이용한 구문 분석 방법 및 구문 분석 장치 | |
Buzer et al. | Playout Optimization for Monte-Carlo Search Algorithms. Application to Morpion Solitaire | |
CN118509159B (zh) | 一种基于即时编译的智能合约加速执行方法和装置 | |
US20240220219A1 (en) | Method and apparatus for computer operation improvement by flattening multi-level data structures to optimize pointer chase | |
CN108037925A (zh) | 程序分析信息并行提取方法及装置 | |
CN116954622B (zh) | 抽象语法树和源代码坐标的关联方法、电子设备和介质 | |
US20220342647A1 (en) | Profiling and optimization of compiler-generated code | |
CN107221067A (zh) | 一种流水号存取控制方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |