CN106502631B - 一种基于全局数据重组的循环倾斜优化方法 - Google Patents
一种基于全局数据重组的循环倾斜优化方法 Download PDFInfo
- Publication number
- CN106502631B CN106502631B CN201610908509.5A CN201610908509A CN106502631B CN 106502631 B CN106502631 B CN 106502631B CN 201610908509 A CN201610908509 A CN 201610908509A CN 106502631 B CN106502631 B CN 106502631B
- Authority
- CN
- China
- Prior art keywords
- data
- array
- optimization
- vector
- cyclic
- 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
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims description 21
- 125000004122 cyclic group Chemical group 0.000 title abstract description 12
- 230000008521 reorganization Effects 0.000 title 1
- 238000005215 recombination Methods 0.000 claims abstract description 27
- 230000006798 recombination Effects 0.000 claims abstract description 27
- 238000004458 analytical method Methods 0.000 claims abstract description 14
- 230000017105 transposition Effects 0.000 claims description 16
- 238000013139 quantization Methods 0.000 claims 1
- 230000009466 transformation Effects 0.000 abstract description 8
- 230000001133 acceleration Effects 0.000 abstract description 2
- 230000000694 effects Effects 0.000 abstract description 2
- 238000006243 chemical reaction Methods 0.000 abstract 3
- 238000003672 processing method Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明属于高性能计算技术领域,特别涉及一种针对循环倾斜变换优化的处理方法,首先进行依赖分析,分析改程序适合循环倾斜优化;其次,针对循环倾斜对数组重新布局,改善数据局部性,使其易于向量化操作;最后,实现非满载向量操作,本发明解决了循环倾斜变换中,并行执行部分的数据离散,数据局部性差,且不易于向量化的问题。针对循环倾斜变化,依次进行数据依赖分析、循环倾斜变换、数据重组、非满载向量操作实现,有效提升循环倾斜变换程序运行效率和执行性能,实现了对循环倾斜变换的优化。最后选择wavefront程序进行测试,优化后,程序计算可以获得平均10.73倍的加速效果。
Description
技术领域
本发明属于高性能计算技术领域,特别涉及一种针对循环倾斜变换优化的处理方法。
背景技术
20世纪90年代中期各大厂商在处理器中集成了一套专用的多媒体扩展指令集。该指令集采用单指令多数据(SIMD:single instruction multiple data)扩展技术,可同时对多个数据进行相同的操作,称为SIMD扩展部件。随着人们对SIMD认识的加深,以及向量寄存器长度的增加,越来越多的研究利用SIMD扩展部件对程序进行加速。
计算机科学中的二八法则表明,程序中20%的代码占据了程序中80%的执行时间,而20%的代码则表示程序中的循环部分,所以对程序的循环部分进行优化会使得程序的执行效率有着很大的提升。而目前,大多数的基于SIMD优化,都是针对循环进行向量化操作的,如循环交换,循环分布,循环剥离,循环倾斜,循环展开,包括SLP算法,均为更好的对循环进行向量操作。
在循环倾斜变换中,并行执行部分的数据在内存中是离散的,影响程序执行效率,所以对其数据的局部性进行优化,循环倾斜变换有一定的优化空间。
发明内容
本发明针对现有技术在循环倾斜变换中,并行执行部分的数据在内存中是离散的,影响程序执行效率等问题提出一种一种基于全局数据重组的循环倾斜优化方法。
本发明的技术方案是:一种基于全局数据重组的循环倾斜优化方法,具体包括以下步骤:
步骤一:循环倾斜,针对循环进行数据依赖分析,分析各个迭代之间的数据依赖关系,确定循环适合进行循环倾斜优化;
步骤二:数据重组,针对循环倾斜对数组重组,首先将二维数组的每一行进行循环右移,右移位数和数组的列号索引值相同,接着将二维数组转置;
步骤三:非满载向量化,针对循环倾斜中尾循环存在非满载向量操作,实现非满载向量读写,向量读时空闲部位填充冗余数据;向量写时首先写入内存的临时向量空间中,在将有效数据写入相应的数组位置中。
所述的基于全局数据重组的循环倾斜优化方法,所述步骤一中的数据依赖分析包括:分析数据之间的真依赖、反依赖和输出依赖,确定阻碍程序向量化的关键因素。
所述的基于全局数据重组的循环倾斜优化方法,所述步骤二中循环右移具体为:将二维数组的每一行进行循环右移,右移位数和数组的列号索引值相同,由于循环右移是连续操作,所以可以进行向量化优化,同时各列之间相互不影响,所以可以进行并行优化。
所述的基于全局数据重组的循环倾斜优化方法,所述步骤二中数组转置:因为数组转置部分离散读写比较多,所以将矩阵分块,改善数组转置局部性,并且利用OpenMP进行并行优化。
所述的基于全局数据重组的循环倾斜优化方法,所述步骤二中还包括:对数组分块,改善数据局部性,利用OpenMP对数组转置并行优化。
所述的基于全局数据重组的循环倾斜优化方法,所述步骤三中非满载向量读:读数据时,读取相应向量长度的数据,不需要计算的数据则为冗余数据,计算时需保存脏数据所在位置。
所述的基于全局数据重组的循环倾斜优化方法,所述步骤三中非满载向量写具体为:将数据写入一个内存中新申请的临时向量空间中,再通过这个新申请的临时空间,将需要写回数组的合法数据写入到计算后数组中数据相应的位置中。
本发明的有益效果是:本发明解决了循环倾斜变换中,并行执行部分的数据离散,数据局部性差,且不易于向量化的问题。针对循环倾斜变化,依次进行数据依赖分析、循环倾斜变换、数据重组、非满载向量操作实现,有效提升循环倾斜变换程序运行效率和执行性能,实现了对循环倾斜变换的优化。最后选择wavefront程序进行测试,优化后,程序计算可以获得平均10.73倍的加速效果。
附图说明
图1为循环倾斜示意图;
图2为数据重组循环右移示意图;
图3为数据重组矩阵转置示意图;
图4为非满载向量读示意图;
图5为非满载向量写示意图。
具体实施方式
实施例1:结合图1-图5,一种基于全局数据重组的循环倾斜优化方法,具体包括以下步骤:
步骤一:循环倾斜,针对循环进行数据依赖分析,分析各个迭代之间的数据依赖关系,确定循环适合进行循环倾斜优化。步骤一中的数据依赖分析包括:分析数据之间的真依赖、反依赖和输出依赖,确定阻碍程序向量化的关键因素。
步骤二:数据重组,针对循环倾斜对数组重组,首先将二维数组的每一行进行循环右移,右移位数和数组的列号索引值相同,接着将二维数组转置;
步骤二中循环右移具体为:将二维数组的每一行进行循环右移,右移位数和数组的列号索引值相同,由于循环右移是连续操作,所以可以进行向量化优化,同时各列之间相互不影响,所以可以进行并行优化。步骤二中数组转置:因为数组转置部分离散读写比较多,所以将矩阵分块,改善数组转置局部性,并且利用OpenMP进行并行优化。
步骤二中还包括:对数组分块,改善数据局部性,利用OpenMP对数组转置并行优化。
步骤三:非满载向量化,针对循环倾斜中尾循环存在非满载向量操作,实现非满载向量读写,向量读时空闲部位填充冗余数据;向量写时首先写入内存的临时向量空间中,在将有效数据写入相应的数组位置中。步骤三中非满载向量读:读数据时,读取相应向量长度的数据,不需要计算的数据则为冗余数据,计算时需保存脏数据所在位置。步骤三中非满载向量写具体为:将数据写入一个内存中新申请的临时向量空间中,再通过这个新申请的临时空间,将需要写回数组的合法数据写入到计算后数组中数据相应的位置中。
实施例2:结合图1-图5,一种基于全局数据重组的循环倾斜优化方法,包含如下步骤:
步骤1、针对循环进行数据依赖分析,分析各个迭代之间的数据依赖关系,确定循环适合进行循环倾斜优化。
步骤2、针对循环倾斜对数组重组,首先将二维数组的每一行进行循环右移,右移位数和数组的列号索引值相同,接着将二维数组转置。
步骤3、针对循环倾斜中尾循环存在非满载向量操作,实现非满载向量读写向量读时,空闲部位填充冗余数据;向量写时首先写入内存的临时向量空间中,在将有效数据写入相应的数组位置中。
本发明解决现有技术中循环倾斜并行部分数据离散,不利于向量化的问题,针对wavefront程序,程序优化从4个方面展开,分别是核循环倾斜优化、数据重组、向量化优化以及非满载向量化优化,实现对wavefront程序执行效率的提升。
依赖分析:对于程序的循环部分进行依赖分析,分析发现循环在i层迭代与j层迭代均存在依赖关系,所以i层与j层循环均不可以并行执行。但程序存在跨迭代并行执行部分,所以适合进行循环倾斜优化。
循环右移:将二维数组的每一行进行循环右移,右移位数和数组的列号索引值相同,由于循环右移是连续操作,所以可以进行向量化优化,同时各列之间相互不影响,所以可以进行并行优化。
数组转置:数组转置部分离散读写比较多,将矩阵分块,改善数组转置局部性,并且利用OpenMP进行并行优化。
非满载向量读:读数据时,读取相应向量长度的数据,不需要计算的数据则为冗余数据,计算时需保存脏数据所在位置。
非满载向量写:将数据写入一个内存中新申请的临时向量空间中,再通过这个新申请的临时空间,将需要写回数组的合法数据写入到计算后数组中数据相应的位置中。
基于全局数据重组的循环倾斜优化可以分为三个阶段,分别是循环倾斜,数据重组和非满载向量化,如图1、图2、图3、图4和图5所示,循环倾斜改变迭代空间,挖掘迭代中数据级并行部分,数据重组改善数据局部性,更便于向量化操作,非满载向量化对尾循环进行向量处理。
Claims (6)
1.一种基于全局数据重组的循环倾斜优化方法,其特征在于:具体包括以下步骤:
步骤一:循环倾斜,针对循环进行数据依赖分析,分析各个迭代之间的数据依赖关系,确定循环适合进行循环倾斜优化;
步骤二:数据重组,针对循环倾斜对数组重组,首先将二维数组的每一行进行循环右移,右移位数和数组的列号索引值相同,接着将二维数组转置;对数组分块,改善数据局部性,利用OpenMP对数组转置并行优化;
步骤三:非满载向量化,针对循环倾斜中尾循环存在非满载向量操作,实现非满载向量读写,向量读时空闲部位填充冗余数据;向量写时首先写入内存的临时向量空间中,再将有效数据写入相应的数组位置中。
2.根据权利要求1所述的基于全局数据重组的循环倾斜优化方法,其特征在于:所述步骤一中的数据依赖分析包括:分析数据之间的真依赖、反依赖和输出依赖,确定阻碍程序向量化的关键因素。
3.根据权利要求1所述的基于全局数据重组的循环倾斜优化方法,其特征在于:所述步骤二中循环右移具体为:将二维数组的每一行进行循环右移,右移位数和数组的列号索引值相同,由于循环右移是连续操作,所以可以进行向量化优化,同时各列之间相互不影响,所以可以进行并行优化。
4.根据权利要求1所述的基于全局数据重组的循环倾斜优化方法,其特征在于:所述步骤二中数组转置:因为数组转置部分离散读写比较多,所以将数组分块,改善数组转置局部性,并且利用OpenMP进行并行优化。
5.根据权利要求1所述的基于全局数据重组的循环倾斜优化方法,其特征在于:所述步骤三中非满载向量读:读数据时,读取相应向量长度的数据,不需要计算的数据则为冗余数据,计算时需保存脏数据所在位置。
6.根据权利要求1所述的基于全局数据重组的循环倾斜优化方法,其特征在于:所述步骤三中非满载向量写具体为:将数据写入一个内存中新申请的临时向量空间中,再通过这个新申请的临时空间,将需要写回数组的合法数据写入到计算后数组中数据相应的位置中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610908509.5A CN106502631B (zh) | 2016-10-18 | 2016-10-18 | 一种基于全局数据重组的循环倾斜优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610908509.5A CN106502631B (zh) | 2016-10-18 | 2016-10-18 | 一种基于全局数据重组的循环倾斜优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106502631A CN106502631A (zh) | 2017-03-15 |
CN106502631B true CN106502631B (zh) | 2019-07-09 |
Family
ID=58293971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610908509.5A Expired - Fee Related CN106502631B (zh) | 2016-10-18 | 2016-10-18 | 一种基于全局数据重组的循环倾斜优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106502631B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279327A (zh) * | 2013-04-28 | 2013-09-04 | 中国人民解放军信息工程大学 | 面向异构simd扩展部件的自动向量化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130151822A1 (en) * | 2011-12-09 | 2013-06-13 | International Business Machines Corporation | Efficient Enqueuing of Values in SIMD Engines with Permute Unit |
-
2016
- 2016-10-18 CN CN201610908509.5A patent/CN106502631B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279327A (zh) * | 2013-04-28 | 2013-09-04 | 中国人民解放军信息工程大学 | 面向异构simd扩展部件的自动向量化方法 |
Non-Patent Citations (2)
Title |
---|
循环扭曲技术的再认识;金国华等;《电子学报》;19940531;第22卷(第5期);第25-30页 |
面向SIMD的自动并行化关键技术研究;徐金龙;《万方数据 知识服务平台》;20160914;第29-30、64-64、86-88页 |
Also Published As
Publication number | Publication date |
---|---|
CN106502631A (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
CN103336758B (zh) | 一种采用带有局部信息的压缩稀疏行的稀疏矩阵存储方法及基于该方法的SpMV实现方法 | |
EP3526665B1 (en) | Sorting for data-parallel computing devices | |
Qi et al. | Accelerating framework of transformer by hardware design and model compression co-optimization | |
CN108446253B (zh) | 一种针对神威体系架构的稀疏矩阵向量乘的并行计算方法 | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
Ye et al. | Accelerating attention mechanism on fpgas based on efficient reconfigurable systolic array | |
CN102521463B (zh) | 一种优化Cache行为提升油藏数值模拟效率的方法 | |
KR102578762B1 (ko) | 뉴럴 프로세서 | |
Wu | Review on FPGA-based accelerators in deep learning | |
Song et al. | Gpnpu: Enabling efficient hardware-based direct convolution with multi-precision support in gpu tensor cores | |
Han et al. | ADE-HGNN: Accelerating HGNNs through Attention Disparity Exploitation | |
CN102722472B (zh) | 一种复数矩阵的优化方法 | |
Liu et al. | G-Learned Index: Enabling Efficient Learned Index on GPU | |
Liu et al. | Parallel reconstruction of neighbor-joining trees for large multiple sequence alignments using CUDA | |
Tang et al. | Optimizing and auto-tuning iterative stencil loops for GPUs with the in-plane method | |
CN106502631B (zh) | 一种基于全局数据重组的循环倾斜优化方法 | |
Li et al. | Automatic FFT performance tuning on OpenCL GPUs | |
CN102375801A (zh) | 一种多核处理器存储系统装置及方法 | |
Neelima et al. | New sparse matrix storage format to improve the performance of total SPMV time | |
CN202217274U (zh) | 一种多核处理器存储系统装置 | |
Liu et al. | Optimizing convolutional neural networks on multi-core vector accelerator | |
Liu et al. | LSRB-CSR: A low overhead storage format for SpMV on the GPU systems | |
CN114218737A (zh) | 一种基于国产众核架构的pom海洋模式众核优化方法 | |
Jiang et al. | Hierarchical Model Parallelism for Optimizing Inference on Many-core Processor via Decoupled 3D-CNN Structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190709 Termination date: 20191018 |