一种优化模式自动生成方法及优化装置制造方法及图纸

技术编号:14555832 阅读:33 留言:0更新日期:2017-02-05 09:51
本发明专利技术实施例公开了一种优化模式自动生成方法及优化装置,用于提高工作效率,节约人力资源。本发明专利技术实施例方法包括:获取源程序及与所述源程序对应的图形处理器GPU优化程序;确定所述源程序对应的第一基本块集合,及所述GPU优化程序对应的第二基本块集合;建立所述第一基本块集合与所述第二基本块集合的第一对应关系;根据程序变换库及所述第一对应关系输出具有所述第一对应关系的基本块对对应的程序变换序列。本发明专利技术实施例还公开了一种优化装置,用于提高工作效率,节约人力资源。

Method and device for automatically generating optimization mode

The embodiment of the invention discloses a method and a device for optimizing the automatic generation of the mode, which is used to improve the working efficiency and save the human resource. The embodiment of the invention method comprises: obtaining the source program and GPU graphics processor optimization program corresponding to the source program; first determine the set of basic blocks corresponding to the source program, and the GPU optimization program corresponding to the second basic block set; establishing the first set of basic block and the second basic block set first according to the corresponding relationship; program transformation and the corresponding relationship between the first base output with the first correspondence between basic blocks corresponding to the sequence of program transformation. The embodiment of the invention also discloses an optimization device, which is used for improving work efficiency and saving human resources.

【技术实现步骤摘要】

本专利技术涉及通信领域,尤其涉及一种优化模式自动生成方法及优化装置
技术介绍
近年来,随着以图形处理器(GraphicsProcessingUnit,GPU)技术为基础搭建的计算平台的应用领域变得越来越广泛,更多的程序开发人员需要在GPU平台上进行软件开发,并且需要对以前的非GPU程序进行改写。相较于以前的主流处理器平台,例如Intel或者AMD公司的X86处理器,GPU计算平台具有更复杂的存储结构和并行执行单元集合,这使得在GPU平台上编程变得更复杂,例如,为了使得应用程序充分利用GPU的计算资源,用户必须学习每个GPU计算平台的体系结构特点,并设计具体的优化方法。在由GPU构建的计算平台上编写程序,目前多使用CUDA或OpenCL编写程序。CUDA可以使用在包含NVIDIAGPU的平台上,而OpenCL可以使用在任意GPU平台上,因此OpenCL的适应性更加广泛,一份用OpenCL写好的代码可以运行在不同的GPU平台上,即在AGPU平台上可以正确执行的OpenCL程序,在BGPU平台上也可以正确执行。将从其他语言编写的程序(例如C语言程序)变换成一个优化OpenCL程序过程中所进行的各种程序变换序列,称之为优化模式。如果已经知道某个应用程序适合的优化模式,那么由程序员或者编译器来根据该模式来生成最终的OpenCL程序,将大大降低GPU程序开发的复杂度,从而能够显著提高GPU平台上的程序开发效率。r>目前,利用模式来优化应用程序的一个重要技术是采用自适应调优库的形式。由专家程序员将某个或者某一类算法分析总结成库的形式,然后专家在实现这些算法时针对某些计算平台进行有对性的优化以获取尽可能好的性能,最后,将这些算法的优化实现包装成库的形式,并为用户提供一个函数接口。用户通过在应用程序直接调用这些库函数接口来利用这些专家的优化经验。这种技术方案的一个代码表性例子就是BLAS库,BLAS库是一个线性代码库,用以提供标量、向量和矩阵之间的相互运算。基于自适应调优库的技术方案将优化模式以库的形式提供给用户使用,虽然能够减轻其他程序员的负担,但也优化模式的提取需要人工总结,需要耗费较多人力资源,并且抽象出的优化模式通用性差,通常只能针对某个具体算法有效。
技术实现思路
本专利技术实施例提供了一种优化模式自动生成方法及优化装置,用于提高工作效率,节约人力资源。有鉴于此,本专利技术第一方面提供了一种优化模式自动生成方法,具体为优化装置获取源程序以及与源程序对应的GPU优化程序,确定源程序对应的第一基本块集合以及GPU优化程序对应的第二基本块集合,再建立第一基本块集合与第二基本块集合的第一对应关系,根据程序变换库以及对应关系输出多个具有该第一对应关系的程序变换序列。其中,源程序是指未经编译的,案子一定程序设计语言规范书写的人类可读文本文件,通过由高级语言辨析,GPU优化程序是该源程序通过程序变换从多个维度逐渐生成的,从源程序到GPU优化程序所用到的优化序列即程序变换序列,即优化模式。另外,这里的对应关系可以包含对应空的情况,也就是第一基本块集合中的每一个基本块不一定都能在第二基本块集合中找到对应的基本块,当第一基本块集合中的基本块在第二基本块集合中找不到对应的基本块时,该基本块对应空。因此这里具有第一关系的基本块对包含至少一个属于第一基本块集合的基本块。本方案中,优化装置获取源程序及GPU优化程序,确定源程序对应的第一基本块集合及GPU优化程序对应的第二基本块集合,并建立第一基本块集合与第二基本块集合的第一对应关系,根据预置的程序变换库及第一对应关系输出多个具有该第一对应关系的基本块对对应的程序变换序列。也就是说,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。结合本专利技术第一方面,在本专利技术第一方面的第一实施方式中,优化装置根据程序变换库及第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列的方式具体为:优化装置根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,如果具有第一对应关系的基本块对中属于第一基本块集合的基本块能够通过对应的程序变换序列得到属于同一基本块对的第二基本块集合中的基本块,或通过对应的程序变换序列后基本块对应的代码都被消除的情况下,输出该基本块对对应的程序变换序列。本专利技术实施例提供了一种优化装置输出程序变换序列的具体过程,提高了方案的可实现性。结合本专利技术第一方面或本专利技术第一方面的第一实施方式,在本专利技术第一方面的第二实施方式中,优化装置根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,如果具有第一对应关系的基本块对中属于第一基本块集合的基本块不能够通过对应的程序变换序列得到属于同一基本块对的第二基本块集合中的基本块,或不能够通过对应的程序变换序列将该基本块对应的代码都消除的情况下,对第一基本块集合和第二基本块集合中的基本块进行更新,然后建立更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块间的第二对应关系,再根据程序变换库及第二对应关系,输出多个具有第二对应关系的基本块对对应的程序变换序列,这里第二关系的定义与前述第一关系的定义相似,此处不再赘述。本专利技术实施例提供了另一种优化装置输出程序变换序列的具体过程,提高了方案的可实现性,提高了方案的灵活性。结合本专利技术第一方面、本专利技术第一方面的第一实施方式或本专利技术第一方面的第二实施方式,在本专利技术第一方面的第三实施方式中,优化装置建立第一基本块集合与第二基本块集合的第一对应关系具体可以通过如下方式:优化装置确定GPU优化程序中用于优化源程序的核心程序,对核心程序进行逆程序变换得到目标程序,确定目标程序对应的第三基本块集合,建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系,同时建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,根据该等价关系及该对应关系,建立第一基本块集合与第二基本块集合的第一对应关系。本专利技术实施例提供了一种优化装置建立第一对应关系的具体方式,提高了方案的可实现性。结合本专利技术第一方面的第三实施方式,在本专利技术第一方面的第四实施方式中,优化装置通过如下方式建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系:优化装置建立第一基本块集合与第三基本块集合中程序形式本文档来自技高网...

【技术保护点】
一种优化模式自动生成方法,其特征在于,包括:获取源程序及与所述源程序对应的图形处理器GPU优化程序;确定所述源程序对应的第一基本块集合,及所述GPU优化程序对应的第二基本块集合;建立所述第一基本块集合与所述第二基本块集合的第一对应关系;根据程序变换库及所述第一对应关系输出多个具有所述第一对应关系的基本块对对应的程序变换序列,每个所述基本块对包含至少一个属于第一基本块集合的基本块,所述程序变换序列用于优化所述源程序。

【技术特征摘要】
1.一种优化模式自动生成方法,其特征在于,包括:
获取源程序及与所述源程序对应的图形处理器GPU优化程序;
确定所述源程序对应的第一基本块集合,及所述GPU优化程序对应的第
二基本块集合;
建立所述第一基本块集合与所述第二基本块集合的第一对应关系;
根据程序变换库及所述第一对应关系输出多个具有所述第一对应关系的
基本块对对应的程序变换序列,每个所述基本块对包含至少一个属于第一基
本块集合的基本块,所述程序变换序列用于优化所述源程序。
2.根据权利要求1所述的方法,其特征在于,所述根据程序变换库及所
述第一对应关系输出多个具有所述第一对应关系的基本块对对应的程序变换
序列包括:
根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序
列;
在所述具有所述第一对应关系的基本块对中属于所述第一基本块集合的
基本块能够通过所述程序变换序列得到属于同一基本块对的第二基本块集合
中的基本块或空的情况下,输出所述基本块对对应的所述程序变换序列。
3.根据权利要求1或2所述的方法,其特征在于,所述根据程序变换库
及所述对应关系输出多个具有所述第一对应关系的基本块对对应的程序变换
序列包括:
根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序
列;
在所述具有所述第一对应关系基本块对中属于所述第一基本块集合的基
本块不能够通过所述程序变换序列得到属于同一基本块对的第二基本块集合
中的基本块或空的情况下,对所述第一基本块集合和所述第二基本块集合中
的基本块进行更新;
建立所述更新后的第一基本块集合的基本块与所述更新后的第二基本块
集合的基本块间的第二对应关系;
根据所述程序变换库及所述第二对应关系,输出多个具有所述第二对应
关系的基本块对对应的程序变换序列,每个所述具有所述第二对应关系的基

\t本块对包含至少一个属于更新后的第一基本块集合的基本块。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述建立所
述第一基本块集合与所述第二基本块集合的第一对应关系,包括:
确定所述GPU优化程序中用于优化所述源程序的核心程序;
对所述核心程序进行逆程序变换得到目标程序;
确定所述目标程序对应的第三基本块集合;
建立第三基本块集合中的基本块与所述第二基本块集合中的基本块之间
的等价关系;
建立所述第一基本块集合中的基本块与所述第三基本块集合中的基本块
之间的对应关系;
根据所述等价关系及所述第一基本块集合中的基本块与所述第三基本块
集合中的基本块之间的对应关系,建立所述第一基本块集合与所述第二基本
块集合的对应关系。
5.根据权利要求4所述的方法,其特征在于,所述建立所述第一基本块
集合中的基本块与所述第三基本块集合中的基本块之间的对应关系包括:
建立所述第一基本块集合与所述第三基本块集合中程序形式相同的基本
块之间的对应关系,所述程序形式包括三元组及操作数。
6.根据权利要求4所述的方法,其特征在于,所述建立所述第一基本块
集合中的基本块与所述第三基本块集合中的基本块之间的对应关系包括:
确定所述源程序对应的第一程序结构集合及所述目标程序对应的第三程
序结构集合;
建立所述第一程序结构集合中的程序结构与所述第三程序结构集合中的
程序结构之间的程序对应关系;
建立至少一个程序结构区域,每个所述程序区域包至少一对具有所述程
序对应关系的程序结构;
建立所述第一基本块集合与所述第三基本块集合中程序形式相似度高于
阈值且属于同一所述程序结构区域的基本块之间的对应关系,所述程序形式
包括三元组及操作数。
7.根据权利要求4所述的方法,其特征在于,所述确定所述GPU优化

\t程序中用于优化所述源程序的核心程序包括:
确定所述GPU优化程序对应的第二程序结构集合;
确定所述第二程序结构集合中用于支持GPU并行的目标程序结构;
从所述GPU优化程序中去掉所述目标程序结构对应的程序代码,以得到
所述核心程序。
8.根据权利要求4所述的方法,其特征在于,所述根据所述等价关系及
所述第一基本块集合与所述第三基本块集合之间的对应关系,建立所述第一
基本块集合与所述第二基本块集合的对应关系包括:
确定第一目标基本块集合,所述第一目标基本块集合是由所述第二基本
块集合中和所述第三基本块集合中具有所述等价关系的基本块组成的;
确定第二目标基本块集合,所述第二目标基本块集合是由所述第一基本
块集合中的基本块组成的,所述第二目标基本块集合中的每个基本块与所述
第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;
建立第三目标基本块集合与所述第二目标基本块集合之间的对应关系,
所述第三目标基本块集合为所述第一目标基本块集合与所述第二基本块集合
的交集。
9.一种优化装置,其特征在于,包括:
获取模块,用于获取源程序及与所述源程序对应的图形处理器GPU优化
程序;
确定模块,用于确定所述获取模块获取的所述源程序对应的第一基本块
集合,及所述GPU优化程序对应的第二基本块集合;
建立模块,用于建立所述确定模块确定的所述第一基本块集合与所述第
二基本块集合的第一对应关系;
输出模块,用于根据程序变换库及所述建立模块建立的第一对应关系输
出多个具有所述第一对应关系的基本块对对应的程序变换序列,每个所述基
本块对包含至少一个属于第一基本块集合的基本块,所述程序变换序列用于
优化所述源程序。
10.根据权利要求9所述的装置,其特征在于,
所述输出模块,还用于根据程序变换库为具有所述第一对应关系的基本

\t块对分配程序变换序列;
所述输出模块,还用于在所述具有所述第一对应关系的基本块对中属于
所述第一基本块集合的基本块能够通过所述程序变换序列得到属于同一基本
块对的第二基本块集合中的基本块或空的情况下,输出所述基本块对对应的
所述程序变换序列。
11.根据权利要求9或10所述的装置,其特征在于,
所述输出模块,还用于根据程序变换库为具有所述第一对应关系的基本
块对分配程序变换序列;
所述输出模块,还用于在所述具有所述第一对应关系基本块对中属于所
述第一基本块集合的基本块不能够通过所述程序变换序列得到属于同一基本
块对的第二基本块集合中的基本块或空的情况下,对所述第一基本块集合和
所述第二基本块集合中的基本块进行更新;
所述建立模块,还用于建立所述更新后的第一基本块集合的基本块与所
述更新后的第二基本块集合的基本块间的第二对应关系;
所述输出模块,还用于根据所述程序变换库及所述第二对应关系,输出
多个具有所述第二对应关系的基本块对对应的程序变换序列,每个所述具有
所述第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的
基本块。
12.根据权利要求9至11中任一项所述的装置,其特征在于,
所述建立模块,还用于确定所述GPU优化程序中用于优化所述源程序的
核心程序;
所述建立模块,还用于对所述第一确定子单元确定的核心程序进行逆程
序变换得到目标程序;
所述建立模块,还用于确定...

【专利技术属性】
技术研发人员:卢兴敬邢明杰刘雷
申请(专利权)人:华为技术有限公司中国科学院计算技术研究所
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1