CN106502631B - 一种基于全局数据重组的循环倾斜优化方法 - Google Patents

一种基于全局数据重组的循环倾斜优化方法 Download PDF

Info

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
Application number
CN201610908509.5A
Other languages
English (en)
Other versions
CN106502631A (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.)
China South Power Grid International Co ltd
Power Grid Technology Research Center of China Southern Power Grid Co Ltd
Original Assignee
China South Power Grid International Co ltd
Power Grid Technology Research Center of China Southern Power Grid Co Ltd
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 China South Power Grid International Co ltd, Power Grid Technology Research Center of China Southern Power Grid Co Ltd filed Critical China South Power Grid International Co ltd
Priority to CN201610908509.5A priority Critical patent/CN106502631B/zh
Publication of CN106502631A publication Critical patent/CN106502631A/zh
Application granted granted Critical
Publication of CN106502631B publication Critical patent/CN106502631B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/3824Operand accessing
    • 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/3887Concurrent 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所述的基于全局数据重组的循环倾斜优化方法,其特征在于:所述步骤三中非满载向量写具体为:将数据写入一个内存中新申请的临时向量空间中,再通过这个新申请的临时空间,将需要写回数组的合法数据写入到计算后数组中数据相应的位置中。
CN201610908509.5A 2016-10-18 2016-10-18 一种基于全局数据重组的循环倾斜优化方法 Expired - Fee Related CN106502631B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279327A (zh) * 2013-04-28 2013-09-04 中国人民解放军信息工程大学 面向异构simd扩展部件的自动向量化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279327A (zh) * 2013-04-28 2013-09-04 中国人民解放军信息工程大学 面向异构simd扩展部件的自动向量化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
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