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

文档序号:9750550阅读:350来源:国知局
一种优化模式自动生成方法及优化装置的制造方法
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种优化模式自动生成方法及优化装置。
【背景技术】
[0002]近年来,随着以图形处理器(Graphics Processing Unit,GPU)技术为基础搭建的计算平台的应用领域变得越来越广泛,更多的程序开发人员需要在GHJ平台上进行软件开发,并且需要对以前的非GPU程序进行改写。相较于以前的主流处理器平台,例如Intel或者AMD公司的X86处理器,GPU计算平台具有更复杂的存储结构和并行执行单元集合,这使得在GPU平台上编程变得更复杂,例如,为了使得应用程序充分利用GPU的计算资源,用户必须学习每个GPU计算平台的体系结构特点,并设计具体的优化方法。
[0003]在由GPU构建的计算平台上编写程序,目前多使用⑶DA或OpenCL编写程序。CUDA可以使用在包含NVIDIA GPU的平台上,而OpenCL可以使用在任意GPU平台上,因此OpenCL的适应性更加广泛,一份用OpenCL写好的代码可以运行在不同的GPU平台上,即在A GPU平台上可以正确执行的OpenCL程序,在B GPU平台上也可以正确执行。
[0004]将从其他语言编写的程序(例如C语言程序)变换成一个优化OpenCL程序过程中所进行的各种程序变换序列,称之为优化模式。
[0005]如果已经知道某个应用程序适合的优化模式,那么由程序员或者编译器来根据该模式来生成最终的OpenCL程序,将大大降低GPU程序开发的复杂度,从而能够显著提高GPU平台上的程序开发效率。
[0006]目前,利用模式来优化应用程序的一个重要技术是采用自适应调优库的形式。由专家程序员将某个或者某一类算法分析总结成库的形式,然后专家在实现这些算法时针对某些计算平台进行有对性的优化以获取尽可能好的性能,最后,将这些算法的优化实现包装成库的形式,并为用户提供一个函数接口。用户通过在应用程序直接调用这些库函数接口来利用这些专家的优化经验。这种技术方案的一个代码表性例子就是BLAS库,BLAS库是一个线性代码库,用以提供标量、向量和矩阵之间的相互运算。
[0007]基于自适应调优库的技术方案将优化模式以库的形式提供给用户使用,虽然能够减轻其他程序员的负担,但也优化模式的提取需要人工总结,需要耗费较多人力资源,并且抽象出的优化模式通用性差,通常只能针对某个具体算法有效。

【发明内容】

[0008]本发明实施例提供了一种优化模式自动生成方法及优化装置,用于提高工作效率,节约人力资源。
[0009]有鉴于此,本发明第一方面提供了一种优化模式自动生成方法,具体为优化装置获取源程序以及与源程序对应的GPU优化程序,确定源程序对应的第一基本块集合以及GPU优化程序对应的第二基本块集合,再建立第一基本块集合与第二基本块集合的第一对应关系,根据程序变换库以及对应关系输出多个具有该第一对应关系的程序变换序列。
[0010]其中,源程序是指未经编译的,案子一定程序设计语言规范书写的人类可读文本文件,通过由高级语言辨析,GHJ优化程序是该源程序通过程序变换从多个维度逐渐生成的,从源程序到GPU优化程序所用到的优化序列即程序变换序列,即优化模式。另外,这里的对应关系可以包含对应空的情况,也就是第一基本块集合中的每一个基本块不一定都能在第二基本块集合中找到对应的基本块,当第一基本块集合中的基本块在第二基本块集合中找不到对应的基本块时,该基本块对应空。因此这里具有第一关系的基本块对包含至少一个属于第一基本块集合的基本块。
[0011]本方案中,优化装置获取源程序及GPU优化程序,确定源程序对应的第一基本块集合及GPU优化程序对应的第二基本块集合,并建立第一基本块集合与第二基本块集合的第一对应关系,根据预置的程序变换库及第一对应关系输出多个具有该第一对应关系的基本块对对应的程序变换序列。也就是说,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。
[0012]结合本发明第一方面,在本发明第一方面的第一实施方式中,优化装置根据程序变换库及第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列的方式具体为:
[0013]优化装置根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,如果具有第一对应关系的基本块对中属于第一基本块集合的基本块能够通过对应的程序变换序列得到属于同一基本块对的第二基本块集合中的基本块,或通过对应的程序变换序列后基本块对应的代码都被消除的情况下,输出该基本块对对应的程序变换序列。
[0014]本发明实施例提供了一种优化装置输出程序变换序列的具体过程,提高了方案的可实现性。
[0015]结合本发明第一方面或本发明第一方面的第一实施方式,在本发明第一方面的第二实施方式中,优化装置根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,如果具有第一对应关系的基本块对中属于第一基本块集合的基本块不能够通过对应的程序变换序列得到属于同一基本块对的第二基本块集合中的基本块,或不能够通过对应的程序变换序列将该基本块对应的代码都消除的情况下,对第一基本块集合和第二基本块集合中的基本块进行更新,然后建立更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块间的第二对应关系,再根据程序变换库及第二对应关系,输出多个具有第二对应关系的基本块对对应的程序变换序列,这里第二关系的定义与前述第一关系的定义相似,此处不再赘述。
[0016]本发明实施例提供了另一种优化装置输出程序变换序列的具体过程,提高了方案的可实现性,提高了方案的灵活性。
[0017]结合本发明第一方面、本发明第一方面的第一实施方式或本发明第一方面的第二实施方式,在本发明第一方面的第三实施方式中,优化装置建立第一基本块集合与第二基本块集合的第一对应关系具体可以通过如下方式:
[0018]优化装置确定GPU优化程序中用于优化源程序的核心程序,对核心程序进行逆程序变换得到目标程序,确定目标程序对应的第三基本块集合,建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系,同时建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,根据该等价关系及该对应关系,建立第一基本块集合与第二基本块集合的第一对应关系。
[0019]本发明实施例提供了一种优化装置建立第一对应关系的具体方式,提高了方案的可实现性。
[0020]结合本发明第一方面的第三实施方式,在本发明第一方面的第四实施方式中,优化装置通过如下方式建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系:
[0021]优化装置建立第一基本块集合与第三基本块集合中程序形式相同的基本块之间的对应关系,其中,程序形式包括三元组及操作数,对应关系指的是不同基本块集合之间的。三元组是数据结构里的概念,主要是用来存储稀疏矩阵的一种压缩方式,也叫三元组表。操作数指出指令执行的操作所需要数据的来源,是汇编语言指令的一个字段,它规定了指令中进行数字运算的量。
[0022]本发明实施例提供了一种优化装置建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系的具体方式,提高了方案的可实现性。
[0023]结合本发明第一方面的第三实施方式或第四实施方式,在本发明第一方面的第五实施方式中,优化装置可以通过如下方式建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系:
[0024]优化装置确定源程序对应的第一程序结构集合及目标程序对应的第三程序结构集合,建立第一程序结构集合中的程序结构与第三程序结构集合中的程序结构之间的程序对应关系,建立至少一个程序结构区域,其中每个程序区域包至少一对具有程序对应关系的程序结构,再建立第一基本块集合与第三基本块集合中程序形式相似度高于阈值且属于同一程序结构区域的基本块之间的对应关系,这里对应关系指的是不同基本块集合之间的。
[0025]本发明实施例提供了另一种优化装置建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系的具体方式,提高了方案的灵活性。
[0026]结合本发明第一方面的第三实施方式、第四实施方式或第五实施方式,在本发明第一方面的第六实施方式中,优化装置确定GPU优化程序中用于优化源程序的核心程序过程具体为:
[0027]优化装置确定GPU优化程序对应的第二程序结构集合,确定第二程序结构集合中用于支持GHJ并行的目标程序结构,从GPU优化程序中去掉目标程序结构对应的程序代码,以得到核心程序。
[0028]本发明实施例提供了一种优化装置确定核心程序的具体方式,提高了方案的可实现性。
[0029]结合本发明第一方面的第三实施方式、第四实施方式、第五实施方式或第六实施方式,在本发明第一方面的第七实施方式中,优化装置建立第一基本块集合与第二基本块集合的对应关系的过程具体为:
[0030]优化装置确定第一目标基本块集合,其中,第一目标基本块集合是由第二基本块集合中和第三基本块集合中具有等价关系的基本块组成的;随后确定确定第二目标基本块集合,第二目标基本块集合是由第一基本块集合的子集,这个子集中的每个基本块与第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;最后建立第三目标基本块集合与第二目标基本块集合之间的对应关系,第三目标基本块集合为第一目标基本块集合与第二基本块集合的交集。
[0031]本发明实施例提供了多种优化装置建立第一基本块集合与第二基本块集合的对应关系的具体过程,提高了方案的灵活性。
[0032 ]本发明第二方面提供了一种优化装置,包括:
[0033]获取模块,用于获取源程序及与源程序对应的图形处理器GPU优化程序;
[0034]确定模块,用于确定获取模块获取的源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合;
[0035]建立模块,用于建立确定模块确定的第一基本块集合与第二基本块集合的第一对应关系;
[0036]输出模块,用于根据程序变换库及建立模块建立的第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列,每个基本块对包含至少一个属于第一基本块集合的基本块,程序变换序列用于优化源程序。
[0037]本发明实施例中,获取模块可以获取源程序及GPU优化程序,确定模块可以确定源程序对应的第一基本块集合及GPU优化程序对应的第二基本块集合,建立模块可以建立第一基本块集合与第二基本块集合的第一对应关系,输出模块可以根据预置的程序变换库及第一对应关系输出多个具有该第一对应关系的基本块对对应的程序变换序列。也就是说,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。
[0038]结合本发明第二方面,在本发明第二方面的第一实施方式中,
[0039]输出模块,还用于根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,在具有第一对应关系的基本块对中属于第一基本块集合的基本块能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出基本块对对应的程序变换序列。
[0040]本发明实施例提供了一种输出模块输出程序变换序列的具体方式,提高了方案的可实现性。
[0041]结合本发明第二方面或本发明第二方面的第一实施方式,在本发明第二方面的第二实施方式中,
[0042]输出模块,用于根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,在具有第一对应关系基本块对中属于第一基本块集合的基本块不能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,对第一基本块集合和第二基本块集合中的基本块进行更新;
[0043]建立模块,还用于建立更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块间的第二对应关系;
[0044]输出模块,还用于根据程序变换库及第二对应关系,输出多个具有第二对应关系的基本块对对应的程序变换序列,每个具有第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的基本块。
[0045]本发明实施例提供了另一种输出模块输出程序变换序列的具体方式,提高了方案的灵活性。
[0046]结合本发明第二方面、本发明第二方面的第一实施方式或第二实施方式,在本发明第二方面的第三实施方式中,
[0047]建立模块,还用于确定GPU优化程序中用于优化源程序的核心程序,对确定的核心程序进行逆程序变换得到目标程序,定确定的目标程序对应的第三基本块集合,建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系,同时建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,根据等价关系及第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,建立第一基本块集合与第二基本块集合的对应关系。
[0048]本发明实施例提供了一种建立模块建立第一基本块集合与第二基本块集合的具体过程,提高了方案的可实现性。
[0049]结合本发明本发明第二方面的第三实施方式,在本发明第二方面的第四实施方式中,
[0050]建立模块,还用于建立第一基本块集合与第三基本块集合中程序形式相同的基本块之间的对应关系,其中,程序形式包括三元组及操作数。这里建立模块建立的对应关系是不同基本块集合的基本块之间的。
[0051]结合本发明本发明第二方面
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1