CN105511867A - 一种优化模式自动生成方法及优化装置 - Google Patents
一种优化模式自动生成方法及优化装置 Download PDFInfo
- Publication number
- CN105511867A CN105511867A CN201510863780.7A CN201510863780A CN105511867A CN 105511867 A CN105511867 A CN 105511867A CN 201510863780 A CN201510863780 A CN 201510863780A CN 105511867 A CN105511867 A CN 105511867A
- Authority
- CN
- China
- Prior art keywords
- fundamental block
- program
- corresponding relation
- block set
- fundamental
- 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.)
- Granted
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/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种优化模式自动生成方法及优化装置,用于提高工作效率,节约人力资源。本发明实施例方法包括:获取源程序及与所述源程序对应的图形处理器GPU优化程序;确定所述源程序对应的第一基本块集合,及所述GPU优化程序对应的第二基本块集合;建立所述第一基本块集合与所述第二基本块集合的第一对应关系;根据程序变换库及所述第一对应关系输出具有所述第一对应关系的基本块对对应的程序变换序列。本发明实施例还公开了一种优化装置,用于提高工作效率,节约人力资源。
Description
技术领域
本发明涉及通信领域,尤其涉及一种优化模式自动生成方法及优化装置。
背景技术
近年来,随着以图形处理器(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平台上的程序开发效率。
目前,利用模式来优化应用程序的一个重要技术是采用自适应调优库的形式。由专家程序员将某个或者某一类算法分析总结成库的形式,然后专家在实现这些算法时针对某些计算平台进行有对性的优化以获取尽可能好的性能,最后,将这些算法的优化实现包装成库的形式,并为用户提供一个函数接口。用户通过在应用程序直接调用这些库函数接口来利用这些专家的优化经验。这种技术方案的一个代码表性例子就是BLAS库,BLAS库是一个线性代码库,用以提供标量、向量和矩阵之间的相互运算。
基于自适应调优库的技术方案将优化模式以库的形式提供给用户使用,虽然能够减轻其他程序员的负担,但也优化模式的提取需要人工总结,需要耗费较多人力资源,并且抽象出的优化模式通用性差,通常只能针对某个具体算法有效。
发明内容
本发明实施例提供了一种优化模式自动生成方法及优化装置,用于提高工作效率,节约人力资源。
有鉴于此,本发明第一方面提供了一种优化模式自动生成方法,具体为优化装置获取源程序以及与源程序对应的GPU优化程序,确定源程序对应的第一基本块集合以及GPU优化程序对应的第二基本块集合,再建立第一基本块集合与第二基本块集合的第一对应关系,根据程序变换库以及对应关系输出多个具有该第一对应关系的程序变换序列。
其中,源程序是指未经编译的,案子一定程序设计语言规范书写的人类可读文本文件,通过由高级语言辨析,GPU优化程序是该源程序通过程序变换从多个维度逐渐生成的,从源程序到GPU优化程序所用到的优化序列即程序变换序列,即优化模式。另外,这里的对应关系可以包含对应空的情况,也就是第一基本块集合中的每一个基本块不一定都能在第二基本块集合中找到对应的基本块,当第一基本块集合中的基本块在第二基本块集合中找不到对应的基本块时,该基本块对应空。因此这里具有第一关系的基本块对包含至少一个属于第一基本块集合的基本块。
本方案中,优化装置获取源程序及GPU优化程序,确定源程序对应的第一基本块集合及GPU优化程序对应的第二基本块集合,并建立第一基本块集合与第二基本块集合的第一对应关系,根据预置的程序变换库及第一对应关系输出多个具有该第一对应关系的基本块对对应的程序变换序列。也就是说,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。
结合本发明第一方面,在本发明第一方面的第一实施方式中,优化装置根据程序变换库及第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列的方式具体为:
优化装置根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,如果具有第一对应关系的基本块对中属于第一基本块集合的基本块能够通过对应的程序变换序列得到属于同一基本块对的第二基本块集合中的基本块,或通过对应的程序变换序列后基本块对应的代码都被消除的情况下,输出该基本块对对应的程序变换序列。
本发明实施例提供了一种优化装置输出程序变换序列的具体过程,提高了方案的可实现性。
结合本发明第一方面或本发明第一方面的第一实施方式,在本发明第一方面的第二实施方式中,优化装置根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,如果具有第一对应关系的基本块对中属于第一基本块集合的基本块不能够通过对应的程序变换序列得到属于同一基本块对的第二基本块集合中的基本块,或不能够通过对应的程序变换序列将该基本块对应的代码都消除的情况下,对第一基本块集合和第二基本块集合中的基本块进行更新,然后建立更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块间的第二对应关系,再根据程序变换库及第二对应关系,输出多个具有第二对应关系的基本块对对应的程序变换序列,这里第二关系的定义与前述第一关系的定义相似,此处不再赘述。
本发明实施例提供了另一种优化装置输出程序变换序列的具体过程,提高了方案的可实现性,提高了方案的灵活性。
结合本发明第一方面、本发明第一方面的第一实施方式或本发明第一方面的第二实施方式,在本发明第一方面的第三实施方式中,优化装置建立第一基本块集合与第二基本块集合的第一对应关系具体可以通过如下方式:
优化装置确定GPU优化程序中用于优化源程序的核心程序,对核心程序进行逆程序变换得到目标程序,确定目标程序对应的第三基本块集合,建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系,同时建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,根据该等价关系及该对应关系,建立第一基本块集合与第二基本块集合的第一对应关系。
本发明实施例提供了一种优化装置建立第一对应关系的具体方式,提高了方案的可实现性。
结合本发明第一方面的第三实施方式,在本发明第一方面的第四实施方式中,优化装置通过如下方式建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系:
优化装置建立第一基本块集合与第三基本块集合中程序形式相同的基本块之间的对应关系,其中,程序形式包括三元组及操作数,对应关系指的是不同基本块集合之间的。三元组是数据结构里的概念,主要是用来存储稀疏矩阵的一种压缩方式,也叫三元组表。操作数指出指令执行的操作所需要数据的来源,是汇编语言指令的一个字段,它规定了指令中进行数字运算的量。
本发明实施例提供了一种优化装置建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系的具体方式,提高了方案的可实现性。
结合本发明第一方面的第三实施方式或第四实施方式,在本发明第一方面的第五实施方式中,优化装置可以通过如下方式建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系:
优化装置确定源程序对应的第一程序结构集合及目标程序对应的第三程序结构集合,建立第一程序结构集合中的程序结构与第三程序结构集合中的程序结构之间的程序对应关系,建立至少一个程序结构区域,其中每个程序区域包至少一对具有程序对应关系的程序结构,再建立第一基本块集合与第三基本块集合中程序形式相似度高于阈值且属于同一程序结构区域的基本块之间的对应关系,这里对应关系指的是不同基本块集合之间的。
本发明实施例提供了另一种优化装置建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系的具体方式,提高了方案的灵活性。
结合本发明第一方面的第三实施方式、第四实施方式或第五实施方式,在本发明第一方面的第六实施方式中,优化装置确定GPU优化程序中用于优化源程序的核心程序过程具体为:
优化装置确定GPU优化程序对应的第二程序结构集合,确定第二程序结构集合中用于支持GPU并行的目标程序结构,从GPU优化程序中去掉目标程序结构对应的程序代码,以得到核心程序。
本发明实施例提供了一种优化装置确定核心程序的具体方式,提高了方案的可实现性。
结合本发明第一方面的第三实施方式、第四实施方式、第五实施方式或第六实施方式,在本发明第一方面的第七实施方式中,优化装置建立第一基本块集合与第二基本块集合的对应关系的过程具体为:
优化装置确定第一目标基本块集合,其中,第一目标基本块集合是由第二基本块集合中和第三基本块集合中具有等价关系的基本块组成的;随后确定确定第二目标基本块集合,第二目标基本块集合是由第一基本块集合的子集,这个子集中的每个基本块与第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;最后建立第三目标基本块集合与第二目标基本块集合之间的对应关系,第三目标基本块集合为第一目标基本块集合与第二基本块集合的交集。
本发明实施例提供了多种优化装置建立第一基本块集合与第二基本块集合的对应关系的具体过程,提高了方案的灵活性。
本发明第二方面提供了一种优化装置,包括:
获取模块,用于获取源程序及与源程序对应的图形处理器GPU优化程序;
确定模块,用于确定获取模块获取的源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合;
建立模块,用于建立确定模块确定的第一基本块集合与第二基本块集合的第一对应关系;
输出模块,用于根据程序变换库及建立模块建立的第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列,每个基本块对包含至少一个属于第一基本块集合的基本块,程序变换序列用于优化源程序。
本发明实施例中,获取模块可以获取源程序及GPU优化程序,确定模块可以确定源程序对应的第一基本块集合及GPU优化程序对应的第二基本块集合,建立模块可以建立第一基本块集合与第二基本块集合的第一对应关系,输出模块可以根据预置的程序变换库及第一对应关系输出多个具有该第一对应关系的基本块对对应的程序变换序列。也就是说,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。
结合本发明第二方面,在本发明第二方面的第一实施方式中,
输出模块,还用于根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,在具有第一对应关系的基本块对中属于第一基本块集合的基本块能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出基本块对对应的程序变换序列。
本发明实施例提供了一种输出模块输出程序变换序列的具体方式,提高了方案的可实现性。
结合本发明第二方面或本发明第二方面的第一实施方式,在本发明第二方面的第二实施方式中,
输出模块,用于根据程序变换库为具有第一对应关系的基本块对分配程序变换序列,在具有第一对应关系基本块对中属于第一基本块集合的基本块不能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,对第一基本块集合和第二基本块集合中的基本块进行更新;
建立模块,还用于建立更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块间的第二对应关系;
输出模块,还用于根据程序变换库及第二对应关系,输出多个具有第二对应关系的基本块对对应的程序变换序列,每个具有第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的基本块。
本发明实施例提供了另一种输出模块输出程序变换序列的具体方式,提高了方案的灵活性。
结合本发明第二方面、本发明第二方面的第一实施方式或第二实施方式,在本发明第二方面的第三实施方式中,
建立模块,还用于确定GPU优化程序中用于优化源程序的核心程序,对确定的核心程序进行逆程序变换得到目标程序,定确定的目标程序对应的第三基本块集合,建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系,同时建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,根据等价关系及第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,建立第一基本块集合与第二基本块集合的对应关系。
本发明实施例提供了一种建立模块建立第一基本块集合与第二基本块集合的具体过程,提高了方案的可实现性。
结合本发明本发明第二方面的第三实施方式,在本发明第二方面的第四实施方式中,
建立模块,还用于建立第一基本块集合与第三基本块集合中程序形式相同的基本块之间的对应关系,其中,程序形式包括三元组及操作数。这里建立模块建立的对应关系是不同基本块集合的基本块之间的。
结合本发明本发明第二方面的第三实施方式或第四实施方式,在本发明第二方面的第五实施方式中,
建立模块,还用于确定源程序对应的第一程序结构集合及目标程序对应的第三程序结构集合,建立第一程序结构集合中的程序结构与第三程序结构集合中的程序结构之间的程序对应关系,再建立至少一个程序结构区域,其中,每个程序区域包至少一对具有程序对应关系的程序结构;最后建立第一基本块集合与第三基本块集合中程序形式相似度高于阈值且属于同一程序结构区域的基本块之间的对应关系。这里建立模块建立的对应关系是不同基本块集合的基本块之间的。
本发明实施例提供了一种建立模块建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,提高了方案的可实现性。
结合本发明本发明第二方面的第三实施方式、第四实施方式或第五实施方式,在本发明第二方面的第六实施方式中,
建立模块,还用于确定GPU优化程序对应的第二程序结构集合,确定第二程序结构集合中用于支持GPU并行的目标程序结构,从GPU优化程序中去掉目标程序结构对应的程序代码,以得到核心程序。
本发明实施例提供了一种建立模块确定核心程序的具体过程,提高了方案的可实现性。
结合本发明本发明第二方面的第三实施方式、第四实施方式或第五实施方式,在本发明第二方面的第七实施方式中,
建立模块,还用于确定第一目标基本块集合,第一目标基本块集合是由第二基本块集合中和第三基本块集合中具有等价关系的基本块组成的;再确定第二目标基本块集合,第二目标基本块集合是由第一基本块集合中的基本块组成的,第二目标基本块集合中的每个基本块与第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;最后建立第三目标基本块集合与第二目标基本块集合之间的对应关系,第三目标基本块集合为所述第一目标基本块集合与所述第二基本块集合的交集。
本发明第三方面提供了一种优化装置,该优化装置包括:输入装置、输出装置、处理器及存储器;其中,处理器用于获取源程序及与源程序对应的GPU优化程序;确定源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合;建立第一基本块集合与第二基本块集合的第一对应关系;
输出装置用于根据程序变换库及处理器建立的第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列,每个基本块对包含至少一个属于第一基本块集合的基本块,程序变换序列用于优化该源程序。
本方案中,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能通过处理器自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。
结合本发明第三方面,在本发明第三方面的第一实施方式中,处理器具体用于根据程序变换库为具有第一对应关系的基本块对分配程序变换序列;在具有第一对应关系的基本块对中属于第一基本块集合的基本块能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出装置具体用于输出基本块对对应的程序变换序列。
本发明实施例提供了一种优化装置输出程序变换序列的具体过程,提高了方案的可实现性。
结合本发明第三方面或第三方面的第一实施方式,在本发明第三方面的第二实施方式中,处理器具体用于根据程序变换库为具有第一对应关系的基本块对分配程序变换序列;在具有第一对应关系基本块对中属于第一基本块集合的基本块不能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,对第一基本块集合和第二基本块集合中的基本块进行更新;建立更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块间的第二对应关系;
输出装置具体用于根据程序变换库及第二对应关系,输出多个具有第二对应关系的基本块对对应的程序变换序列,每个具有第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的基本块。
本发明实施例提供了另一种优化装置输出程序变换序列的具体方式,提高了方案的灵活性。
结合本发明第三方面、第三方面的第一实施方式或第二实施方式,在本发明第三方面的第三实施方式中,处理器具体用于确定GPU优化程序中用于优化源程序的核心程序,对核心程序进行逆程序变换得到目标程序,确定目标程序对应的第三基本块集合,建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系,建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,根据等价关系及第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,建立第一基本块集合与第二基本块集合的对应关系。
本发明实施例提供了一种优化装置建立第一基本块集合与第二基本块集合的对应关系的具体方式,提高了方案的可实现性。
结合本发明第三方面的第三实施方式,在本发明第三方面的第四实施方式中,处理器具体用于建立第一基本块集合与第三基本块集合中程序形式相同的基本块之间的对应关系,程序形式包括三元组及操作数。这里处理器建立的基本块之间的对应关系,是不同基本块集合之间的。
本发明实施例提供了一种处理器建立第一基本块集合的基本块与第三基本块集合的基本块之间的对应关系的具体方式,提高了方案的可实现性。
结合本发明第三方面的第三实施方式或第四实施方式,在本发明第三方面的第五实施方式中,处理器还可以用于确定源程序对应的第一程序结构集合及目标程序对应的第三程序结构集合,建立第一程序结构集合中的程序结构与第三程序结构集合中的程序结构之间的程序对应关系,建立至少一个程序结构区域,每个程序区域包至少一对具有程序对应关系的程序结构,建立第一基本块集合与第三基本块集合中程序形式相似度高于阈值且属于同一程序结构区域的基本块之间的对应关系,程序形式包括三元组及操作数。这里处理器建立的基本块之间的对应关系,是不同基本块集合之间的基本块的对应关系。
本发明实施例提供了另一种处理器建立第一基本块集合的基本块与第三基本块集合的基本块之间的对应关系的具体方式,提高了方案的灵活性。
结合本发明第三方面的第三实施方式、第四实施方式或第五实施方式,在本发明第三方面的第六实施方式中,处理器具体用于确定GPU优化程序对应的第二程序结构集合,确定第二程序结构集合中用于支持GPU并行的目标程序结构,从GPU优化程序中去掉目标程序结构对应的程序代码,以得到核心程序。
本发明实施例提供了一种处理器确定核心程序的具体方式,提高了方案的可实现性。
结合本发明第三方面的第三实施方式、第四实施方式、第五实施方式或第六实施方式,在本发明第三方面的第七实施方式中,处理器具体还用于确定第一目标基本块集合,第一目标基本块集合是由第二基本块集合中和第三基本块集合中具有等价关系的基本块组成的;确定第二目标基本块集合,第二目标基本块集合是由第一基本块集合中的基本块组成的,第二目标基本块集合中的每个基本块与第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;建立第三目标基本块集合与第二目标基本块集合之间的对应关系,第三目标基本块集合为第一目标基本块集合与第二基本块集合的交集。
本发明实施例提供了多种处理器建立第一基本块集合与第三基本块集合的第一对应关系的具体方式,提高了方案的可实现性。
本发明实施例提供了一种建立模块建立第一基本块集合与第二基本块集合的第一对应关系的具体过程,提高了方案的可实现性。
从以上技术方案可以看出,本发明实施例具有以下优点:
优化装置获取源程序及GPU优化程序,确定源程序对应的第一基本块集合及GPU优化程序对应的第二基本块集合,并建立第一基本块集合与第二基本块集合的第一对应关系,根据预置的程序变换库及第一对应关系输出多个具有该第一对应关系的基本块对对应的程序变换序列。也就是说,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。
附图说明
图1为本发明实施例中优化模式自动生成方法的一个实施例示意图;
图2为本发明实施例中优化模式自动生成方法应用场景中的源程序;
图3为本发明实施例中优化模式自动生成方法应用场景中的GPU优化程序;
图4为本发明实施例中优化模式自动生成方法应用场景中的目标程序;
图5为本发明实施例中优化装置的一个实施例示意图;
图6为本发明实施例中优化装置的另一实施例示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本发明实施例,下面对GPU进行简单介绍:
GPU又名显示处理器。图形处理器是显示卡的“心脏”,也就相当于中央处理器(CentralProcessingUnit,CPU)在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也是二维显示卡和三维显示卡的区别依据。二维显示芯片在处理三维图像和特效时主要依赖CPU的处理能力,称为“软加速”。三维显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)。时下市场上的显卡大多采用NVIDIA和AMD两家公司的图形处理芯片。
目前GPU架构可以从平台模型、内存模型和执行模式三个角度进行描述:
一、平台模型
GPU程序由两部分代码组成:主机程序和GPUkernel代码。故平台模型也分为两部分:主机和设备。
主机一般情况下为CPU,对于CPU的介绍为本领域技术人员的公知常识,具体此处不作赘述。
设备在目前项目中指GPU。设备采用了层次化的架构模型:一个设备由一个或者多个计算单元(ComputeUnit,CU)构成,每个计算单元由一个或者多个处理元素(ProcessingElement,PE)组成。
在与具体的GPU对应上,CU相当于NVIDIAGPU的SM(StreamingMultiprocessor,流多处理器),相当于AMDGPU的CU。PE相当于NVIDIAGPU的CUDACore,相当于AMDGPU的SC(StreamingCore)。
二、执行模型
执行模型主要定义了GPU线程的开启数目和组织方式,这个由程序员决定。程序员可根据问题规模计算得出开启线程的数目。在线程的组织方面,采用了层次方式。首先,所有线程被组织为1、2或者3维的索引空间中,称为NDRange;其次,对NDRange中的线程进行分组,称为work-group,work-group的大小为32(NVIDIAGPU)或者64(AMDGPU)的整数倍。也就是说,线程索引空间由多个work-group组成;每个work-group由多个线程组成,线程可成为work-item。
每个work-item在索引空间(NDRange)中有唯一的全局身份识别码(identification,ID)。例如,假设NDRange为二维空间,work-item的全局ID为(gidx,gidy),gidx为该work-item在第一维上的位置,gidy为该work-item在第二维上的位置。
每个work-item在work-group内还有唯一的本地ID,即该work-item在work-group中所处的位置,记为(lidx,lidy)。
在执行过程中,每个work-group只能执行在一个CU上,每个CU可执行多个work-group;每个work-item只能执行在一个PE上,每个PE可执行多个work-item。
需要说明的是,一般情况下,开启的work-item的数目将远大于PE的数目。GPU将分组调度执行。
三、内存模型
内存模型也采用层次架构。包括全局内存、本地内存和私有内存三种。
全局内存可被所有work-item访问,全局内存最大但带宽最低。
本地内存(NVIDIAGPU称为共享内存),可以被属于同一个work-group的所有work-item访问。本地内存资源比较少,每个CU上为32至64K,每个work-group最多可使用32K。
私有内存为一个work-item所独享,一般对应于寄存器。带宽最高。
本地内存和私有内存位于GPU的芯片上,称为片上内存,是数据本地化常用的存储资源。
全局内存位于GPU卡上,但在芯片之外(相当于CPU的内存)。
可以理解的是,除了上述描述的GPU系统架构,本发明实施例还可以应用在其他GPU系统架构上,具体此处不作限定。
本发明实施例利用最佳优先搜索技术从专家编写的GPU优化程序中生成优化模式。专家在从源程序写成GPU优化程序的过程,实际上是利用程序变换技术从多个维度、多个步骤逐步生成最优的GPU程序。本发明实施例在程序变换库和其他编译器分析技术的基础上,逐步生成从源代码到目标代码所用到的优化序列,即优化模式。
本发明实施例应用位于软件(编译)层,本发明实施例中的优化装置主要由编译器构成,还可以包括其他应用程序,具体此处不作限定。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的术语:
基本块(BasicBlock,BB):程序的中间表示上单进单出的指令序列。
区域(region):一个流图中只具有单个入口节点的部分。
程序结构:在本设计书中,程序结构是指C程序中的循环(for,while,do..while)、if等程序区域。
本发明实施例提供了一种优化模式自动生成方法及优化装置,用于提高工作效率,节约人力资源。
请参阅图1,本发明实施例中优化模式自动生成方法的一个实施例包括:
101、优化装置获取源程序及源程序对应的GPU优化程序;
优化装置获取源程序,及源程序对应的GPU优化程序,其中,源程序是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件,通常由高级语言编写,GPU优化程序是源程序通过程序变换,从多个维度、多个步骤逐步生成的,该GPU优化程序可以是优化装置调用专家分析总结成的知识库得到的,也可以通过其他方式获取,具体此处不作限定。
102、优化装置确定源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合;
优化装置确定源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合,具体地,优化装置通过编译器扫描源程序及GPU优化程序,将源程序及GPU优化程序翻译成中间表示形式,将源程序及GPU优化程序的中间表示按照基本块定义进行划分,得到源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合。
需要说明的是,中间表示是以一种介于源程序语言和机器语言之间的中间语言表示程序的一种形式,其作用是使程序的结构在逻辑上更为简单明确。中间表示形式可以包括:逆波兰记号、四元式或三元式,还可以包括其他形式,具体此处不作限定。
103、优化装置建立第一基本块集合与第二基本块集合的第一对应关系;
优化装置确定源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合后,建立第一基本块集合与第二基本块集合的第一对应关系。需要说明的是,本发明实施例中第一对应关系指的是第一基本块集合到第二基本块集合的映射,但是,这里的映射并不是一般定义中的映射,第一基本块集合中的每一个基本块不一定都能在第二基本块集合中找到对应的基本块,当第一基本块集合中的基本块在第二基本块集合中找不到对应的基本块时,该基本块映射为空。另外,这里第一对应关系指的只是可能的映射关系,即不能确定是否存在映射关系,基本块之间的对应关系在后续的过程中可能会发生变化。
104、优化装置根据程序变换库及第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列。
优化装置建立第一对应关系后,根据程序变换库及第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列。需要说明的是,每个基本块对包含至少一个属于第一基本块集合的基本块,程序变换序列用于优化源程序。
还需要说明的是,程序变换库可以是优化装置预先建立的,也可以是优化装置从其他装置中获取到的,具体此处不作限定。该程序变换库中的内容包括程序变换的分类及程序变换的特性,按照变换维度可以包括:GPU任务管理变换(例如数据传输、认为队列建立、任务调度和任务组织等),同步控制、数据管理(例如全局存储、常数存储、局部存储和私有存储的分配使用),向量化并行或传统的程序变换(例如循环合并、循环分裂、循环展开等),该程序变化库中还可以包括其他内容,具体此处不作限定。
优化装置获取源程序及GPU优化程序,确定源程序对应的第一基本块集合及GPU优化程序对应的第二基本块集合,并建立第一基本块集合与第二基本块集合的第一对应关系,根据预置的程序变换库及第一对应关系输出具有该第一对应关系的基本块对对应的程序变化序列。也就是说,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。
基于上述图1对应的实施例,在本发明实施例的一些实施例中,优化装置建立第一基本块集合与第二基本块集合的第一对应关系可以通过如下方式:
步骤1、优化装置确定GPU优化程序中用于优化该源程序的核心程序;
优化装置利用区域分析技术对GPU优化程序的中间表示进行区域分析,从而得到GPU优化程序包含的程序结构,例如:主机端控制程序、kernel函数、kernel内部的任务分配语句、kernel内部的同步语句、向量读写操作和向量计算操作等。而GPU优化程序包含的程序结构中存在一些用来支持GPU并行的程序结构,包括主机控制程序等,这些代码区域是用来支持程序在GPU设备上执行的,与具体算法本身无关系,优化装置将这些与具体算法无关的程序结构去除掉,即得到GPU优化程序中用于优化该源程序的核心程序。
步骤2、优化装置对核心程序进行逆变换得到目标程序;
优化装置将核心程序中的kernel程序内联到主机端程序中,对kernel的向量并行计算、向量读写操作等kernel内优化变换进行分析,根据分析结果对核心程序进行逆程序变换得到目标程序。
步骤3、优化装置确定目标程序对应的第三基本块集合;
优化装置得到目标程序后,对目标程序的中间表示按照基本块定义进行划分得到目标程序对应的第三基本块集合。
步骤4、优化装置建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系;
优化装置得到第三基本块集合后,针对第三基本块集合中的每一个基本块,在第二基本块集合中找到与该基本块等价的等价基本块,建立该基本块与等价基本块之间的等价关系。
步骤5、优化装置建立第一基本块集的基本块合与第三基本块集合的基本块之间的对应关系;
优化装置在建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系的同时,建立第一基本块集合中基本块与第三基本块集合中基本块之间的对应关系,具体可以通过如下几种方式:
方式一、基本块的程序形式相同。
优化装置建立第一基本块集合与第三基本块集合中程序形式相同的基本块之间的对应关系,其中程序形式包括三元组及操作数。
需要说明的是,三元组是数据结构里的概念,主要是用来存储稀疏矩阵的一种压缩方式,也叫三元组表。假设以顺序存储结构来表示三元组表,则得到稀疏矩阵富人一种压缩存储方式,即三元组顺序表,简称三元组表。操作数指出指令执行的操作所需要数据的来源,是汇编语言指令的一个字段,它规定了指令中进行数字运算的量。
还需要说明的是,这里优化装置建立的对应关系指的是不同集合之间的对应关系。具体地,优化装置确定程序形式相同的第一基本块与第三基本块,并建立第一基本块与第三基本块之间的对应关系,其中,第一基本块属于第一基本块集合,第三基本块属于第三基本块集合。
具体地,优化装置可以通过如下方式确定第一基本块与三基本块的程序形式相同:
(1)、第一基本块对应的代码与第三基本块对应的代码相同,例如第一基本块对应的代码为:a[Height-1]=b[Height-1]+2,第三基本块对应的代码为:a[Height-1]=b[Height-1]+2。
(2)、第一基本块对应的代码形式与第三基本块对应的代码形式相同,如第一基本块对应的代码为:a[i]=b[i]+2,第三基本块对应的代码为:a[0]=b[0]+2。
(3)、第一基本块和/或第三基本块通过预处理后能够得到两个程序形式相同的基本块,例如第一基本块对应的代码为:
*pDst=(*pSrc1+*(pSrc1+1)+*(pSrc1+2)+*(pSrc1+3)
+*pSrc2+*(pSrc2+1)+*(pSrc2+2)+*(pSrc2+3)
+*pSrc3+*(pSrc3+1)+*(pSrc3+2)+*(pSrc3+3)
+*pSrc4+*(pSrc4+1)+*(pSrc4+2)+*(pSrc4+3)+8)>>4;
pDst++;
pSrc1+=4;pSrc2+=4;pSrc3+=4;pSrc4+=4;
对第一基本块进行前向表达式替换得到如下表达式:
temp+=*pPadSrc+*(pPadSrc+1)+*(pPadSrc+2)+*(pPadSrc+3)+
*(pPadSrc+3*nWidth)+*(pPadSrc+3*nwidth+1)+*(pPadSrc+3*nWidth+2)
+*(pPadSrc+3*nwidth+3)+
*(pPadSrc+2*nWidth)+*(pPadSrc+2*nwidth+1)+*(pPadSrc+2*nWidth+2)
+*(pPadSrc+2*nwidth+3)+
*(pPadSrc+3*nWidth)+*(pPadSrc+3*nwidth+1)+*(pPadSrc+3*nWidth+2)
+*(pPadSrc+3*nwidth+3)。
第三基本块对应的代码为:
temp+=*pPadSrc+*(pPadSrc+1)+*(pPadSrc+2)+*(pPadSrc+3);
temp+=*(pPadSrc+nWidth)+*(pPadSrc+nwidth+1)+*(pPadSrc+nWidth+2)+*(pPadSrc+nwidth+3);
temp+=*(pPadSrc+2*nWidth)+*(pPadSrc+2*nwidth+1)+*(pPadSrc+2*nWidth+2)+*(pPadSrc+2*nwidth+3);
temp+=*(pPadSrc+3*nWidth)+*(pPadSrc+3*nwidth+1)+*(pPadSrc+3*nWidth+2)+*(pPadSrc+3*nwidth+3);
对第三基本块进行前向表达式替换得到如下表达式:
*PDst+=*pSrc+*(pSrc1+1)+*(pSrc1+2)+*(pSrc1+3)+
*(pSrc1+3*nWidth)+*(pSrc1+3*nwidth+1)+*(pSrc1+3*nWidth+2)
+*(pSrc1+3*nwidth+3)+
*(pSrc1+2*nWidth)+*(pSrc1+2*nwidth+1)+*(pSrc1+2*nWidth+2)
+*(pSrc1+2*nwidth+3)+
*(pSrc1+3*nWidth)+*(pSrc1+3*nwidth+1)+*(pSrc1+3*nWidth+2)
+*(pSrc1+3*nwidth+3)。
方式二、基本块的程序形式相似度高于预置阈值。
步骤(1)、优化装置确定源程序对应的第一程序结构集合及目标程序对应的第三程序结构集合;
具体地,上述步骤102中将源程序翻译成中间表示后,利用区域分析技术对源程序的中间表示进行区域分析,即能得到源程序中包含的程序结构,这些程序结构组成第一程序结构集合。另外通过上述的方式得到目标程序后,对目标程序的中间表示进行区域分析,即能得到目标程序中包含的程序结构,这些程序结构组成第三程序结构集合。
步骤(2)、优化装置建立第一程序结构集合中的程序结构与第三程序结构集合中的程序结构之间的程序对应关系;
确定第一程序结构集合及第三程序结构集合后,优化装置建立第一程序结构集合中的程序结构与第三程序结构集合中的的程序对应关系,需要说明的是,这里的程序对应关系指的是不同集合之间的对应关系。具体地,可以根据程序特征建立对应关系,具体如第一程序结构属于第一程序结构集合,第三程序结构属于第三程序结构集合,如果一般情况下第一程序结构对应的语句在GPU优化过程中可以得到第三程序结构对应的语句,则可以建立第一程序结构与第三程序结构的程序对应关系。例如for语句对应kernel。
(3)、优化装置建立至少一个程序结构区域;
优化装置建立程序对应关系之后,根据程序对应关系建立至少一个程序结构区域,每个程序结构区域包含至少一对具有程序对应关系的程序结构。比如上述例子中,第一程序结构与第三程序结构具有程序对应关系,那么第一程序结构与第三程序结构即能构成一个程序结构区域。
(4)优化装置建立第一基本块集合与第三基本块集合中程序形似相似度高于阈值且属于同一程序结构的基本块之间的对应关系。
需要说明的是,程序结构可以由基本块组成,而程序结构由至少一对程序结构组成,因此一个程序结构区域可以包含多个基本块,故优化装置建立至少一个程序结构区域后,建立第一基本块集合与第三基本块集合中程序形式相似度高于阈值且属于同一程序结构的基本块之间的对应关系,需要说明的是,也就是说基本块的对应关系不能跨越程序结构区域,不属于同一程序结构区域的基本块,一般不具有映射关系,还需要说明的是这里建立的对应关系是不同基本块集合之间的。假设如上述例子所述第一程序结构与第三程序结构构成一个程序结构区域,第一基本块属于第一基本块集合,第三基本块属于第三基本块集合,如果第一基本块与第三基本块的程序形式相似度高于阈值,并且第一基本块属于第一程序结构,第三基本块属于第三程序结构,即第一基本块与第三基本块属于同一程序结构区域,则建立第一基本块与第三基本块的对应关系。
步骤6、优化装置根据等价关系及第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,建立第一基本块集合与第二基本块集合的对应关系。
优化装置建立第三基本块集合的基本块与第二基本块集合的基本块之间的等价关系,及第一基本块集合的基本块与第三基本块集合的基本块之间的对应关系后,根据该等价关系及该对应关系建立第一基本块集合与第二基本块集合的对应关系,即第一对应关系。具体地可以通过如下方式:
确定第一目标基本块集合,第一目标基本块集合是由第二基本块集合中和第三基本块集合中具有等价关系的基本块组成的;
确定第二目标基本块集合,第二目标基本块集合是由第一基本块集合中的基本块组成的,并且第二目标基本块集合中的每个基本块与第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;
建立第三目标基本块集合与第二目标基本块集合之间的对应关系,第三目标基本块集合为第一目标基本块集合与第二目标基本集合的交集。
具体地,如果第三基本块(第三基本块集合中的任意一个基本块)与第二基本块(第二基本块集合中的基本块)具有等价关系,并且第三基本块与第一基本块(第一基本块集合中的基本块)具有对应关系,则优化装置建立第一基本块与第二基本块的对应关系。对于第一基本块集合中的基本块,如果未能在第二基本块集合中找到对应的基本块,则该基本块对应空。
可以理解的是,根据不同程序的程序特征优化装置还可以通过其他方式建立对应关系,具体此处不作限定。
本发明实施例中,优化装置可以通过多种方式建立第一基本块集合与第二基本块集合的对应关系,提高了方案的灵活性。
基于上述图1对应的实施例,在本发明实施例的一些实施中,优化装置根据程序变换库及第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列如下方式:
1、优化装置根据预置的程序变换库为具有第一对应关系的基本块对分配程序变换序列;
具体地,由前述可知基本块对包含至少一个属于第一基本块集合的基本块,第一基本块集合中的基本块对应第二基本块集合中的基本块或空,优化装置根据这些基本块的基本块特征,结合程序变换库中存储的程序变换的特性,从该程序变换库中选取一个或多个与该基本块对匹配的程序变换序列,当程序变换序列为多个时,可以将各个程序变换序列按照可能性从大到小排列,优化装置在识别程序变换序列的时候可以按照这个排列顺序进行识别。例如,第一基本块集合中的第一基本块(a[i]=b[i]+2)和第二基本块集合中的第二基本块(a[0]=b[0]+2)具有第一对应关系,则对应的程序变换为向量化或并向归约。
2、优化装置判断该基本块对中属于第一基本块集合的基本块是否能够通过该程序变换序列得到该基本块对中属于第二基本块集合的基本块或空;
若是,则输出该基本块对对应的程序变换序列;
若否,则优化装置,对更新第一基本块集合和第二基本块集合中的基本块进行更新,建立更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块之间的第二对应关系,根据程序变换库及第二对应关系输出多个具有第二对应关系的基本块对对应的程序变换序列。
此步骤即对上述步骤分配的程序变换序列进行识别。
具体地,由前述可知第一对应关系只是一个可能的映射关系,这里就是对第一对应关系进行验证,判断具体第一对应关系的基本块对中属于第一基本块集合的基本块是否能够通过分配的程序变换序列得到该基本块对中属于第二基本块集合的基本块。或是具有第一对应关系的基本块对中属于第一基本块集合的基本块是否能够通过分配的程序变换序列得到空,空即变换后基本块对应的代码都被消除,不包含任何代码。
若能,则确定该基本块对之间存在映射关系,输出该基本块对对应的程序变换序列,例如按照上述举例,第一基本块集合中的第一基本块(a[i]=b[i]+2)通过向量化变换能够得到第二基本块集合中的第二基本块(a[0]=b[0]+2),即第一基本块与第二基本块具有第一对应关系,优化装置输出第一基本块到第二基本块,对应的程序变换序列为向量化。
若不能,则确定该基本块对之间不存在映射关系,优化装置需要通过合并基本块的方式更新第一基本块集合和/或第二基本块集合,并建立更新后的两个基本块集合之间的第二对应关系,再根据预置的程序变换库输出具有第二对应关系的基本块对对应的程序变换序列。具体过程与前述输出具有第一对应关系的基本块对对应的程序变换序列的过程相似,具体此处不再赘述。
需要说明的是,这里指的合并基本块只能是合并同一基本块集合的,即不能将第一基本块集合的基本块与第二基本块集合的基本块进行合并。在合并基本块时,优化装置可以先对属于同一程序结构的基本块进行合并,当合并后仍然识别出程序变换序列,才合并不属于同一程序结构的基本块。
本发明实施例提供了一种优化装置输出程序变换序列的具体方式,提高了方案的可实现性。
为了便于理解,下面以一实际应用场景对本发明实施例中的优化模式自动生成方法:
优化装置通过用户的输入得到图2中的源程序,通过调用专家分析总结成的知识库得到与该源程序对应的GPU优化程序,如图3所示。
优化装置扫描源程序和GPU优化程序,生成两者的中间表示。由于程序的中间表示会比较复杂且篇幅较大,这里仍然以类C代码表示。
按照基本块的定义划分源程序的基本块,得到源程序对应的第一基本块集合:
BB1(2),BB2(3,4),BB3(5,6),BB4(8)
括号内的数字对应于源程序上的代码序列,表示该基本块对应的具体内容,例如BB1(2),表示第一基本块对应的具体内容为源程序中第一行代码的内功,即:intsum(int*a,int*b,int*c),下面对于程序结构表达式中括号内的数字的含义与此相似。
通过区域分析技术分析源程序的程序结构得到源程序对应的第一程序结构集合:
for(2,3,4,5,6,7)
if(3,4)
else(5,6)
其中,BB1(2),BB2(3,4)及BB3(5,6)属于for程序结构,BB2(3,4)属于if程序结构,BB3(5,6)属于else程序结构。
用相同的分析方法对GPU优化程序进行分析,得到GPU优化程序对应的第二基本块集合:
BB1(1),BB2(3,4),BB3(5,6),BB4(7),BB5(9)
GPU优化程序对应的第二程序结构集合:
kernel(2,3,4,5,6,7,8)
kernel_task_control(3,4,5,6)
其中,BB2及BB3属于kernel_task_control程序结构。
优化装置确定目标程序:
在GPU优化程序上去掉与用于支持程序在GPU设备上执行的kernel_task_control(3,4,5,6)程序结构得到核心程序,对核心程序进行逆变换得到目标程序,如图4所示。
目标程序对应的第三基本块集合:
BB1(1),BB4(7),BB5(9)
目标程序对应的第三程序结构:
kernel(2,7,8)
其中,BB4(7)属于kernel(2,7,8)程序结构。
优化装置建立源程序和目标程序的基本块对应关系:
用(BBx;BBy)表示,分号之前的表示源程序的基本块集合(第一基本块集合),分号之后表示目标程序的基本块集合(第二基本块集合)。当目标程序中没有源程序对应的基本块时,映射为空,用NULL进行标记。
显而易见的,源程序中的BB4(8)对应的代码与目标程序中的BB5(9)对应的代码相同,故建立BB4(8)与BB5(9)之间的对应关系,记为(BB4;BB5)。
根据程序特征源程序中的for(2,3,4,5,6,7)程序结构与目标程序中的kernel(2,7,8)程序结构可能存在映射关系,for(2,3,4,5,6,7)程序结构与kernel(2,7,8)程序结构的对应关系,源程序中的if(3,4)程序结构及else(5,6)程序结构在目标程序中未找到对应的程序结构。
其中,源程序中的BB1(2),BB2(3,4)及BB3(5,6)属于for程序结构,目标程序中的BB4(7)属于kernel(2,7,8)程序结构的基本块,故源程序中的BB1(2),BB2(3,4)及BB3(5,6)与目标程序中的BB4(7)属于同一程序结构区域。
源程序中的BB2(3,4)与目标程序中的BB1(1)或BB5(9)的程序形式相似,但是源程序中的BB2(3,4)与目标程序中的BB1(1)或BB5(9)都不属于同一程序结构区域,跨越了程序结构区域,故BB2(3,4)与BB1(1)或BB5(9)不具有对应关系,记为(BB2,NULL)。
源程序中的BB3(5,6)与目标程序中的BB4(7)的程序形式相似,并且源程序中的BB3(5,6)与目标程序中的BB4(7)属于同一程序结构区域,即未跨越程序结构区域,故BB3(5,6)与BB4(7)可能存在映射关系,建立BB3(5,6)与BB4(7)之间的初步基本块映射关系,记为(BB3;BB4)。
源程序中的BB1(2)在目标程序中未能找到对应的基本块,故映射为空(BB1;NULL)
最终建立第一基本块集合与第三基本块集合的对应关系为(BB1;NULL),(BB2;NULL),(BB3;BB4),(BB4;BB5);
其中目标程序中的BB4与GPU优化程序中的BB4等价,目标程序中的BB5与源程序中的BB5等价,故建立第一基本块集合与第二基本块集合的初步第一对应关系为:
(BB1;NULL),(BB2;NULL),(BB3;BB4),(BB4;BB5)。
优化装置根据预置的程序变换库为具有初步基本块映射关系的基本块对分配程序变换序列:
(BB1;NULL)对应的程序变换序列为kernel/循环展开;
(BB2;NULL)对应的程序变换序列为循环if/else消除,循环分裂;
(BB3;BB4)对应的程序变换序列为循环内if/else消除;
(BB4;BB5)对应的程序变换序列为向量化/并向归约。
优化装置判断该基本块对中属于第一基本块集合的基本块是否能够通过该程序变换序列得到该基本块对中属于第二基本块集合的基本块:
从底向上开始识别优化序列,优先分析基本块对中两者都非空的情形。
对于(BB4;BB5),容易分析出其等价关系,对应的程序变换序列为向量化,优化装置输出(BB4;BB5)对应的程序变换序列为向量化。
对于(BB3;BB4),虽然存在可能映射关系,但是不能确定其变换序列;
优化装置合并映射为空的基本块,和无法确定是否映射的基本块,将源程序中的BB2和BB3合并得到BB23(3,4,5,6),
对于更新后的基本块集合,BB23(3,4,5,6)所属程序变换可能是循环分裂和循环内if/else消除,其对应的基本块集为可能为BB2+BB3+BB4(2,4,5,6,7),仍然无法找到变换序列。
由于源程序已经无法继续扩大程序区域,则合并GPU优化程序的基本块,合并GPU优化程序的BB1和(BB2+BB3+BB4)得到BB1+BB2+BB3+BB4,这时候分析出:
源程序中的BB2与GPU优化程序中的BB1相对应;
源程序中的BB3和优化程序中的BB4相对应;
源程序中的BB1+BB2+BB3在生成kernel过程将循环做了展开。
综上结果,优化装置输出:
(BB2+BB3,BB1+BB4)对应的程序变换序列为循环分裂,if分支提到循环外面;
(BB1+BB2+BB3,BB1+BB2+BB3+BB4)对应的程序变换序列为生成kernel函数。
上面介绍了本发明实施例中优化模式自动生成方法,下面介绍本发明实施例中的优化装置,请参阅图5,本发明实施例中优化装置500的一个实施例包括:
获取模块501,用于获取源程序及与源程序对应的图形处理器GPU优化程序;
确定模块502,用于确定获取模块501获取的源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合;
建立模块503,用于建立确定模块502确定的第一基本块集合与第二基本块集合的第一对应关系;
输出模块504,用于根据程序变换库及建立模块503建立的第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列,每个基本块对包含至少一个属于第一基本块集合的基本块,程序变换序列用于优化源程序。
获取模块501获取源程序及GPU优化程序,确定模块502确定源程序对应的第一基本块集合及GPU优化程序对应的第二基本块集合,建立模块503建立第一基本块集合与第二基本块集合的第一对应关系,输出模块504根据预置的程序变换库及第一对应关系输出多个具有该第一对应关系的基本块对对应的程序变换序列。也就是说,用户只需要输入源程序及与该源程序对应的GPU优化程序,优化装置就能自动识别出该源程序对应的优化模式,不需要人工提取优化模式,节约人力资源。
基于上述图5对应的实施例,在本发明的另一实施例中,输出模块504具体用于根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序列;
在具有第一对应关系的基本块对中属于第一基本块集合的基本块能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出模块504还用于输出基本块对对应的程序变换序列。
在具有第一对应关系基本块对中属于第一基本块集合的基本块不能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出模块还用于对第一基本块集合和第二基本块集合中的基本块进行更新;
建立模块503还用于建立述更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块间的第二对应关系;
输出模块504还用于根据程序变换库及第二对应关系,输出多个具有第二对应关系的基本块对对应的程序变换序列,每个具有第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的基本块。
本发明实施例中提供了输出模块504输出程序变换序列的具体方式,提高了方案的可实现性。
基于上述图5对应的实施例,在本发明实施例的另一实施例中,建立模块503具体用于:
确定GPU优化程序中用于优化源程序的核心程序;
对第一确定子单元确定的核心程序进行逆程序变换得到目标程序;
确定第二确定子单元确定的目标程序对应的第三基本块集合;
建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系;
建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系;
根据等价关系及第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,建立第一基本块集合与第二基本块集合的对应关系。
可选地,在本发明实施例中,建立模块503具体还用于:
建立第一基本块集合与第三基本块集合中程序形式相同的基本块之间的对应关系,程序形式包括三元组及操作数。
可选地,在本发明实施例中,建立模块503具体还用于:
确定源程序对应的第一程序结构集合及目标程序对应的第三程序结构集合;
建立第一程序结构集合中的程序结构与第三程序结构集合中的程序结构之间的程序对应关系;
建立至少一个程序结构区域,每个程序区域包至少一对具有程序对应关系的程序结构;
建立第一基本块集合与第二基本块集合中程序形式相似度高于阈值且属于同一程序结构区域的基本块之间的对应关系。
可选地,在本发明实施例中,建立模块503具体还用于:
确定GPU优化程序对应的第二程序结构集合;
确定第二程序结构集合中用于支持GPU并行的目标程序结构;
从GPU优化程序中去掉目标程序结构对应的程序代码,以得到核心程序。
可选地,在本发明实施例中,建立模块503具体还用于:
确定第一目标基本块集合,第一目标基本块集合是由第二基本块集合中和第三基本块集合中具有等价关系的基本块组成的;
确定第二目标基本块集合,第二目标基本块集合是由第一基本块集合中的基本块组成的,第二目标基本块集合中的每个基本块与第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;
建立第三目标基本块集合与第二目标基本块集合之间的对应关系,第三目标基本块集合为第一目标基本块集合与第二基本块集合的交集。
本发明实施例中建立模块可以通过多种方式建立第一基本块集合与第二基本块集合的第一对应关系,提高了方案的灵活性。
上面从功能模块的角度介绍了本发明实施例中的优化装置,下面从硬件实体的角度进行介绍,请参阅图6,本发明实施例中优化装置600的另一实施例包括:输入装置601、输出装置602、处理器603和存储器604(其中优化装置中的处理器603的数量可以一个或多个,图6中以一个处理器603为例)。处理器603和存储器604通过输入装置601接收优化装置外部的信息,处理器603和存储器604通过输出装置602将信息发送到优化装置外部。在本发明的一些实施例中,输入装置601、输出装置602、处理器603和存储器604可通过总线或其它方式连接,其中,图6中以通过总线连接为例。
其中,存储器604中存储应用程序及程序变换库,通过调用存储器604存储的应用程序及程序变换库,处理器603用于执行如下步骤:
处理器603用于获取源程序及与源程序对应的GPU优化程序;确定源程序对应的第一基本块集合,及GPU优化程序对应的第二基本块集合;建立第一基本块集合与第二基本块集合的第一对应关系;
输出装置602用于根据程序变换库及处理器建立的第一对应关系输出多个具有第一对应关系的基本块对对应的程序变换序列,每个基本块对包含至少一个属于第一基本块集合的基本块,程序变换序列用于优化该源程序。
在本发明的一些实施例中,处理器603具体用于根据程序变换库为具有第一对应关系的基本块对分配程序变换序列;
在具有第一对应关系的基本块对中属于第一基本块集合的基本块能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出装置602具体用于输出基本块对对应的程序变换序列。
在本发明的一些实施例中,处理器603具体用于根据程序变换库为具有第一对应关系的基本块对分配程序变换序列;在具有第一对应关系基本块对中属于第一基本块集合的基本块不能够通过程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,对第一基本块集合和第二基本块集合中的基本块进行更新;建立更新后的第一基本块集合的基本块与更新后的第二基本块集合的基本块间的第二对应关系;
输出装置602具体用于根据程序变换库及第二对应关系,输出多个具有第二对应关系的基本块对对应的程序变换序列,每个具有第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的基本块。
在本发明的一些实施例中,处理器603具体用于确定GPU优化程序中用于优化源程序的核心程序,对核心程序进行逆程序变换得到目标程序,确定目标程序对应的第三基本块集合,建立第三基本块集合中的基本块与第二基本块集合中的基本块之间的等价关系,建立第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,根据等价关系及第一基本块集合中的基本块与第三基本块集合中的基本块之间的对应关系,建立第一基本块集合与第二基本块集合的对应关系。
在本发明的一些实施例中,处理器603具体用于确定源程序对应的第一程序结构集合及目标程序对应的第三程序结构集合,建立第一程序结构集合中的程序结构与第三程序结构集合中的程序结构之间的程序对应关系,建立至少一个程序结构区域,每个程序区域包至少一对具有程序对应关系的程序结构,建立第一基本块集合与第三基本块集合中程序形式相似度高于阈值且属于同一程序结构区域的基本块之间的对应关系,程序形式包括三元组及操作数。这里处理器建立的基本块之间的对应关系,是不同基本块集合之间的基本块的对应关系。
在本发明的一些实施例中,处理器603具体用于确定GPU优化程序对应的第二程序结构集合,确定第二程序结构集合中用于支持GPU并行的目标程序结构,从GPU优化程序中去掉目标程序结构对应的程序代码,以得到核心程序。
在本发明的一些实施例中,处理器603具体还用于确定第一目标基本块集合,第一目标基本块集合是由第二基本块集合中和第三基本块集合中具有等价关系的基本块组成的;确定第二目标基本块集合,第二目标基本块集合是由第一基本块集合中的基本块组成的,第二目标基本块集合中的每个基本块与第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;建立第三目标基本块集合与第二目标基本块集合之间的对应关系,第三目标基本块集合为第一目标基本块集合与第二基本块集合的交集。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (24)
1.一种优化模式自动生成方法,其特征在于,包括:
获取源程序及与所述源程序对应的图形处理器GPU优化程序;
确定所述源程序对应的第一基本块集合,及所述GPU优化程序对应的第二基本块集合;
建立所述第一基本块集合与所述第二基本块集合的第一对应关系;
根据程序变换库及所述第一对应关系输出多个具有所述第一对应关系的基本块对对应的程序变换序列,每个所述基本块对包含至少一个属于第一基本块集合的基本块,所述程序变换序列用于优化所述源程序。
2.根据权利要求1所述的方法,其特征在于,所述根据程序变换库及所述第一对应关系输出多个具有所述第一对应关系的基本块对对应的程序变换序列包括:
根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序列;
在所述具有所述第一对应关系的基本块对中属于所述第一基本块集合的基本块能够通过所述程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出所述基本块对对应的所述程序变换序列。
3.根据权利要求1或2所述的方法,其特征在于,所述根据程序变换库及所述对应关系输出多个具有所述第一对应关系的基本块对对应的程序变换序列包括:
根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序列;
在所述具有所述第一对应关系基本块对中属于所述第一基本块集合的基本块不能够通过所述程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,对所述第一基本块集合和所述第二基本块集合中的基本块进行更新;
建立所述更新后的第一基本块集合的基本块与所述更新后的第二基本块集合的基本块间的第二对应关系;
根据所述程序变换库及所述第二对应关系,输出多个具有所述第二对应关系的基本块对对应的程序变换序列,每个所述具有所述第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的基本块。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述建立所述第一基本块集合与所述第二基本块集合的第一对应关系,包括:
确定所述GPU优化程序中用于优化所述源程序的核心程序;
对所述核心程序进行逆程序变换得到目标程序;
确定所述目标程序对应的第三基本块集合;
建立第三基本块集合中的基本块与所述第二基本块集合中的基本块之间的等价关系;
建立所述第一基本块集合中的基本块与所述第三基本块集合中的基本块之间的对应关系;
根据所述等价关系及所述第一基本块集合中的基本块与所述第三基本块集合中的基本块之间的对应关系,建立所述第一基本块集合与所述第二基本块集合的对应关系。
5.根据权利要求4所述的方法,其特征在于,所述建立所述第一基本块集合中的基本块与所述第三基本块集合中的基本块之间的对应关系包括:
建立所述第一基本块集合与所述第三基本块集合中程序形式相同的基本块之间的对应关系,所述程序形式包括三元组及操作数。
6.根据权利要求4所述的方法,其特征在于,所述建立所述第一基本块集合中的基本块与所述第三基本块集合中的基本块之间的对应关系包括:
确定所述源程序对应的第一程序结构集合及所述目标程序对应的第三程序结构集合;
建立所述第一程序结构集合中的程序结构与所述第三程序结构集合中的程序结构之间的程序对应关系;
建立至少一个程序结构区域,每个所述程序区域包至少一对具有所述程序对应关系的程序结构;
建立所述第一基本块集合与所述第三基本块集合中程序形式相似度高于阈值且属于同一所述程序结构区域的基本块之间的对应关系,所述程序形式包括三元组及操作数。
7.根据权利要求4所述的方法,其特征在于,所述确定所述GPU优化程序中用于优化所述源程序的核心程序包括:
确定所述GPU优化程序对应的第二程序结构集合;
确定所述第二程序结构集合中用于支持GPU并行的目标程序结构;
从所述GPU优化程序中去掉所述目标程序结构对应的程序代码,以得到所述核心程序。
8.根据权利要求4所述的方法,其特征在于,所述根据所述等价关系及所述第一基本块集合与所述第三基本块集合之间的对应关系,建立所述第一基本块集合与所述第二基本块集合的对应关系包括:
确定第一目标基本块集合,所述第一目标基本块集合是由所述第二基本块集合中和所述第三基本块集合中具有所述等价关系的基本块组成的;
确定第二目标基本块集合,所述第二目标基本块集合是由所述第一基本块集合中的基本块组成的,所述第二目标基本块集合中的每个基本块与所述第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;
建立第三目标基本块集合与所述第二目标基本块集合之间的对应关系,所述第三目标基本块集合为所述第一目标基本块集合与所述第二基本块集合的交集。
9.一种优化装置,其特征在于,包括:
获取模块,用于获取源程序及与所述源程序对应的图形处理器GPU优化程序;
确定模块,用于确定所述获取模块获取的所述源程序对应的第一基本块集合,及所述GPU优化程序对应的第二基本块集合;
建立模块,用于建立所述确定模块确定的所述第一基本块集合与所述第二基本块集合的第一对应关系;
输出模块,用于根据程序变换库及所述建立模块建立的第一对应关系输出多个具有所述第一对应关系的基本块对对应的程序变换序列,每个所述基本块对包含至少一个属于第一基本块集合的基本块,所述程序变换序列用于优化所述源程序。
10.根据权利要求9所述的装置,其特征在于,
所述输出模块,还用于根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序列;
所述输出模块,还用于在所述具有所述第一对应关系的基本块对中属于所述第一基本块集合的基本块能够通过所述程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出所述基本块对对应的所述程序变换序列。
11.根据权利要求9或10所述的装置,其特征在于,
所述输出模块,还用于根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序列;
所述输出模块,还用于在所述具有所述第一对应关系基本块对中属于所述第一基本块集合的基本块不能够通过所述程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,对所述第一基本块集合和所述第二基本块集合中的基本块进行更新;
所述建立模块,还用于建立所述更新后的第一基本块集合的基本块与所述更新后的第二基本块集合的基本块间的第二对应关系;
所述输出模块,还用于根据所述程序变换库及所述第二对应关系,输出多个具有所述第二对应关系的基本块对对应的程序变换序列,每个所述具有所述第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的基本块。
12.根据权利要求9至11中任一项所述的装置,其特征在于,
所述建立模块,还用于确定所述GPU优化程序中用于优化所述源程序的核心程序;
所述建立模块,还用于对所述第一确定子单元确定的核心程序进行逆程序变换得到目标程序;
所述建立模块,还用于确定所述第二确定子单元确定的目标程序对应的第三基本块集合;
所述建立模块,还用于建立第三基本块集合中的基本块与所述第二基本块集合中的基本块之间的等价关系;
所述建立模块,还用于建立所述第一基本块集合中的基本块与所述第三基本块集合中的基本块之间的对应关系;
所述建立模块,还用于根据所述等价关系及所述第一基本块集合中的基本块与所述第三基本块集合中的基本块之间的对应关系,建立所述第一基本块集合与所述第二基本块集合的对应关系。
13.根据权利要求12所述的装置,其特征在于,
所述建立模块,还用于建立所述第一基本块集合与所述第三基本块集合中程序形式相同的基本块之间的对应关系,所述程序形式包括三元组及操作数。
14.根据权利要求13所述的装置,其特征在于,
所述建立模块,还用于确定所述源程序对应的第一程序结构集合及所述目标程序对应的第三程序结构集合;
所述建立模块,还用于建立所述第一程序结构集合中的程序结构与所述第三程序结构集合中的程序结构之间的程序对应关系;
所述建立模块,还用于建立至少一个程序结构区域,每个所述程序区域包至少一对具有所述程序对应关系的程序结构;
所述建立模块,还用于建立所述第一基本块集合与所述第三基本块集合中程序形式相似度高于阈值且属于同一所述程序结构区域的基本块之间的对应关系,所述程序形式包括三元组及操作数。
15.根据权利要求13所述的装置,其特征在于,
所述建立模块,还用于确定所述GPU优化程序对应的第二程序结构集合;
所述建立模块,还用于确定所述第二程序结构集合中用于支持GPU并行的目标程序结构;
所述建立模块,还用于从所述GPU优化程序中去掉所述目标程序结构对应的程序代码,以得到所述核心程序。
16.根据权利要求13所述的装置,其特征在于,
所述建立模块,还用于确定第一目标基本块集合,所述第一目标基本块集合是由所述第二基本块集合中和所述第三基本块集合中具有所述等价关系的基本块组成的;
所述建立模块,还用于确定第二目标基本块集合,所述第二目标基本块集合是由所述第一基本块集合中的基本块组成的,所述第二目标基本块集合中的每个基本块与所述第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;
所述建立模块,还用于建立第三目标基本块集合与所述第二目标基本块集合之间的对应关系,所述第三目标基本块集合为所述第一目标基本块集合与所述第二基本块集合的交集。
17.一种优化装置,其特征在于,包括:输入装置、输出装置、处理器及存储器;
所述处理器用于执行以下步骤:
获取源程序及与所述源程序对应的图形处理器GPU优化程序;
确定所述源程序对应的第一基本块集合,及所述GPU优化程序对应的第二基本块集合;
建立所述第一基本块集合与所述第二基本块集合的第一对应关系;
所述输出装置用于执行以下步骤:
根据程序变换库及所述第一对应关系输出多个具有所述第一对应关系的基本块对对应的程序变换序列,每个所述基本块对包含至少一个属于第一基本块集合的基本块,所述程序变换序列用于优化所述源程序。
18.根据权利要求17所述的装置,其特征在于,所述处理器具体用于执行以下步骤:
根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序列;
所述输出装置具体用于执行以下步骤:
在所述具有所述第一对应关系的基本块对中属于所述第一基本块集合的基本块能够通过所述程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,输出所述基本块对对应的所述程序变换序列。
19.根据权利要求17或18所述的装置,其特征在于,所述处理器具体用于执行以下步骤:
根据程序变换库为具有所述第一对应关系的基本块对分配程序变换序列;
在所述具有所述第一对应关系基本块对中属于所述第一基本块集合的基本块不能够通过所述程序变换序列得到属于同一基本块对的第二基本块集合中的基本块或空的情况下,对所述第一基本块集合和所述第二基本块集合中的基本块进行更新;
建立所述更新后的第一基本块集合的基本块与所述更新后的第二基本块集合的基本块间的第二对应关系;
所述输出装置具体用于执行以下步骤:
根据所述程序变换库及所述第二对应关系,输出多个具有所述第二对应关系的基本块对对应的程序变换序列,每个所述具有所述第二对应关系的基本块对包含至少一个属于更新后的第一基本块集合的基本块。
20.根据权利要求17至19中任一项所述的装置,其特征在于,所述处理器具体用于执行以下步骤:
确定所述GPU优化程序中用于优化所述源程序的核心程序;
对所述核心程序进行逆程序变换得到目标程序;
确定所述目标程序对应的第三基本块集合;
建立第三基本块集合中的基本块与所述第二基本块集合中的基本块之间的等价关系;
建立所述第一基本块集合中的基本块与所述第三基本块集合中的基本块之间的对应关系;
根据所述等价关系及所述第一基本块集合中的基本块与所述第三基本块集合中的基本块之间的对应关系,建立所述第一基本块集合与所述第二基本块集合的对应关系。
21.根据权利要求20所述的装置,其特征在于,所述处理器具体用于执行以下步骤:
建立所述第一基本块集合与所述第三基本块集合中程序形式相同的基本块之间的对应关系,所述程序形式包括三元组及操作数。
22.根据权利要求20所述的装置,其特征在于,所述处理器具体用于执行以下步骤:
确定所述源程序对应的第一程序结构集合及所述目标程序对应的第三程序结构集合;
建立所述第一程序结构集合中的程序结构与所述第三程序结构集合中的程序结构之间的程序对应关系;
建立至少一个程序结构区域,每个所述程序区域包至少一对具有所述程序对应关系的程序结构;
建立所述第一基本块集合与所述第三基本块集合中程序形式相似度高于阈值且属于同一所述程序结构区域的基本块之间的对应关系,所述程序形式包括三元组及操作数。
23.根据权利要求20所述的装置,其特征在于,所述处理器具体用于执行以下步骤:
确定所述GPU优化程序对应的第二程序结构集合;
确定所述第二程序结构集合中用于支持GPU并行的目标程序结构;
从所述GPU优化程序中去掉所述目标程序结构对应的程序代码,以得到所述核心程序。
24.根据权利要求20所述的装置,其特征在于,所述处理器具体用于执行以下步骤:
确定第一目标基本块集合,所述第一目标基本块集合是由所述第二基本块集合中和所述第三基本块集合中具有所述等价关系的基本块组成的;
确定第二目标基本块集合,所述第二目标基本块集合是由所述第一基本块集合中的基本块组成的,所述第二目标基本块集合中的每个基本块与所述第一目标基本块集合中属于第三基本块集合中的基本块具有对应关系;
建立第三目标基本块集合与所述第二目标基本块集合之间的对应关系,所述第三目标基本块集合为所述第一目标基本块集合与所述第二基本块集合的交集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510863780.7A CN105511867B (zh) | 2015-11-30 | 2015-11-30 | 一种优化模式自动生成方法及优化装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510863780.7A CN105511867B (zh) | 2015-11-30 | 2015-11-30 | 一种优化模式自动生成方法及优化装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105511867A true CN105511867A (zh) | 2016-04-20 |
CN105511867B CN105511867B (zh) | 2019-04-23 |
Family
ID=55719877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510863780.7A Expired - Fee Related CN105511867B (zh) | 2015-11-30 | 2015-11-30 | 一种优化模式自动生成方法及优化装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105511867B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775803A (zh) * | 2016-11-14 | 2017-05-31 | 努比亚技术有限公司 | 一种参数值调整装置、终端及方法 |
CN107544794A (zh) * | 2016-06-28 | 2018-01-05 | 华为技术有限公司 | 程序信息的处理方法和装置 |
CN111324461A (zh) * | 2020-02-20 | 2020-06-23 | 西安芯瞳半导体技术有限公司 | 内存分配方法、装置、计算机设备和存储介质 |
WO2020181670A1 (en) * | 2019-03-11 | 2020-09-17 | Huawei Technologies Co., Ltd. | Control flow optimization in graphics processing unit |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580826B (zh) * | 2020-04-30 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10187450A (ja) * | 1996-11-07 | 1998-07-21 | Fujitsu Ltd | オブジェクト指向プログラム自動生成装置,自動生成方法およびそのプログラム記憶媒体 |
CN101937343A (zh) * | 2010-09-17 | 2011-01-05 | 上海交通大学 | 异构多核虚拟执行环境的后端翻译框架实现的方法 |
CN101963918A (zh) * | 2010-10-26 | 2011-02-02 | 上海交通大学 | 实现cpu/gpu异构平台的虚拟执行环境的方法 |
CN104820613A (zh) * | 2015-05-27 | 2015-08-05 | 中国科学院自动化研究所 | 一种异构多核程序的编译方法 |
-
2015
- 2015-11-30 CN CN201510863780.7A patent/CN105511867B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10187450A (ja) * | 1996-11-07 | 1998-07-21 | Fujitsu Ltd | オブジェクト指向プログラム自動生成装置,自動生成方法およびそのプログラム記憶媒体 |
CN101937343A (zh) * | 2010-09-17 | 2011-01-05 | 上海交通大学 | 异构多核虚拟执行环境的后端翻译框架实现的方法 |
CN101963918A (zh) * | 2010-10-26 | 2011-02-02 | 上海交通大学 | 实现cpu/gpu异构平台的虚拟执行环境的方法 |
CN104820613A (zh) * | 2015-05-27 | 2015-08-05 | 中国科学院自动化研究所 | 一种异构多核程序的编译方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544794A (zh) * | 2016-06-28 | 2018-01-05 | 华为技术有限公司 | 程序信息的处理方法和装置 |
CN106775803A (zh) * | 2016-11-14 | 2017-05-31 | 努比亚技术有限公司 | 一种参数值调整装置、终端及方法 |
WO2020181670A1 (en) * | 2019-03-11 | 2020-09-17 | Huawei Technologies Co., Ltd. | Control flow optimization in graphics processing unit |
CN111324461A (zh) * | 2020-02-20 | 2020-06-23 | 西安芯瞳半导体技术有限公司 | 内存分配方法、装置、计算机设备和存储介质 |
CN111324461B (zh) * | 2020-02-20 | 2023-09-01 | 西安芯瞳半导体技术有限公司 | 内存分配方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105511867B (zh) | 2019-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gao et al. | Estimating gpu memory consumption of deep learning models | |
Walter et al. | Fast agglomerative clustering for rendering | |
CN105511867A (zh) | 一种优化模式自动生成方法及优化装置 | |
Nugteren et al. | Introducing'Bones' a parallelizing source-to-source compiler based on algorithmic skeletons | |
CN102231133B (zh) | 基于重写逻辑的并发实时程序验证的优化处理系统及其方法 | |
WO2021000971A1 (zh) | 操作数据的生成方法、装置及相关产品 | |
US7983890B2 (en) | Method and apparatus performing automatic mapping for a multi-processor system | |
CN109062636A (zh) | 一种数据处理方法、装置、设备及介质 | |
Shterenlikht et al. | Fortran 2008 coarrays | |
Neele et al. | Partial-order reduction for GPU model checking | |
Weber et al. | MATOG: array layout auto-tuning for CUDA | |
Hu et al. | High-dimensional image descriptor matching using highly parallel KD-tree construction and approximate nearest neighbor search | |
Gosmann et al. | Automatic optimization of the computation graph in the Nengo neural network simulator | |
Jin et al. | Evaluation of Medical Imaging Applications using SYCL | |
Le Moullec et al. | Multi-granularity metrics for the era of strongly personalized SOCs | |
Fumero et al. | accull: An user-directed approach to heterogeneous programming | |
Huynh et al. | TP-PARSEC: A task parallel PARSEC benchmark suite | |
Czarnul et al. | Auto-tuning methodology for configuration and application parameters of hybrid CPU+ GPU parallel systems based on expert knowledge | |
Ma et al. | Parallel exact inference on multicore using mapreduce | |
Huchant et al. | Adaptive partitioning for iterated sequences of irregular OpenCL kernels | |
Anderson | A framework for composing high-performance opencl from python descriptions | |
Niu et al. | A DCU code generation and optimization method based on polyhedral model | |
Aldegheri et al. | Rapid prototyping of embedded vision systems: Embedding computer vision applications into low-power heterogeneous architectures | |
Štill | State space compression for the DiVinE model checker | |
CN102567206B (zh) | 一种剖析cuda程序行为的方法 |
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 | ||
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: 20190423 Termination date: 20201130 |