CN107544794A - 程序信息的处理方法和装置 - Google Patents
程序信息的处理方法和装置 Download PDFInfo
- Publication number
- CN107544794A CN107544794A CN201610490507.9A CN201610490507A CN107544794A CN 107544794 A CN107544794 A CN 107544794A CN 201610490507 A CN201610490507 A CN 201610490507A CN 107544794 A CN107544794 A CN 107544794A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- fragment
- prioritization scheme
- computation schema
- program information
- 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.)
- Pending
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例提供一种程序信息的处理方法和装置,该方法包括:获取待处理程序信息中的适合硬件平台的至少一个算法片段;根据预先配置的计算模式库,为每个算法片段选则对应的第一优化方案;根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成OpenCL代码,由硬件设备自动确定程序中的算法适合的硬件平台和优化方案,并且考虑到程序算法本身的行为、硬件特征以及各种优化模式,自动制定针对算法的高性能优化方案,减轻程序员负担,有效提高了程序信息处理,即优化的效率和性能。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种程序信息的处理方法和装置。
背景技术
图像处理相关算法的应用领域广泛,在移动智能终端、物联网和人工智能等领域都有着广泛应用。在移动智能终端方面,游戏、社交、安全和金融支付领域都会使用图像处理相关算法;在物联网方面,智能交通和智慧城市也经常用到图像处理算法;在人工智能方面,例如人脸识别等技术也在最近获得较大进步。
图像处理算法在很多应用中有时间约束限制、实时性要求以及功耗限制,图形处理器(英文:Graphic Processing Unit,简称:GPU)平台具有强大的计算能力,同时其功耗还比较低,以GPU技术为基础搭建的异构加速计算平台的应用领域变得越来越广泛,在由GPU构建的计算平台上编写程序,目前多使用开放平台(英文:Compute Unified DeviceArchitecture,简称:CUDA)或开放运算语言(英文:Open Computing Language,简称:OpenCL)编写程序,CUDA和OpenCL均为异构并行编程模型。OpenCL可以使用在任意GPU平台上,因此OpenCL的适应性更加广泛,在OpenCL编程框架下,OpenCL程序分为主机端(Host)程序和加速器端(Device)程序两个部分,用户在开发并优化OpenCL程序的优化流程如下:由专家程序员利用OpenCL或者CUDA等底层编程语言将某个或者某类重要算法写成高性能的算法库,用户在应用程序中直接调用算法库提供的接口进行优化,根据制定的优化方案生成OpenCL代码。或者采用用户制导加编译优化的技术方案,用户给出程序在GPU平台上的优化变换指示,由编译器进行具体的分析变换工作,将应用程序中的能够优化的程序代码生成对应的OpenCL代码。
然而,在采用上述方式进行OpenCL程序优化的实际过程中,每个优化参数值的具体确定更是需要程序员的经验积累,OpenCL程序的优化过程是非常复杂的,通常只有经验非常丰富的专家程序员才能写出高效的GPU程序,对于普通程序员来讲,OpenCL程序开发过于复杂,而且调试和调优也非常困难,导致OpenCL程序优化的效率和性能都比较低。
发明内容
本发明实施例提供一种程序信息的处理方法和装置,用于解决OpenCL程序开发过于复杂,而且调试和调优也非常困难,导致OpenCL程序优化的效率和性能都比较低的问题。
本发明第一方面提供一种程序信息的处理方法,包括:
获取待处理程序信息中的适合硬件平台算法的至少一个算法片段;
根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案;
根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成OpenCL代码。
本方案提供的技术方案中,程序信息指的是编写的高级语言代码,硬件平台可以是GPU平台或者其他的硬件处理器,对此不做限制。由硬件设备自动确定程序中的算法适合的硬件平台和优化方案,并且考虑到程序算法本身的行为、硬件特征以及各种优化模式,自动制定针对算法的高性能优化方案,减轻程序员负担,有效提高了程序信息处理,即优化的效率和性能。
可选的,所述硬件平台为GPU平台,所述获取待处理程序信息中的适合硬件平台算法的至少一个算法片段,包括:
将所述待处理程序信息转换成具有高层语义的中转程序信息;
将所述中转程序信息中能够满足所述GPU平台算法,且在主机端和加速器端满足收益评估模型的算法程序片段作为所述至少一个算法片段。
可选的,所述根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案,包括:
根据预先定义的计算模式,确定每个算法片段所属的第一计算模式;
根据每个算法片段所属的所述第一计算模式,以及预先配置的计算模式与优化方案的映射关系,获取每个算法片段对应的所述第一优化方案。
可选的,所述第一优化方案包括以下优化中的至少一种:并行化归约、向量化并行、共享内存优化、局部同步优化、通信优化、向量化访存、访存合并优化和边界处理向量并行化。
可选的,所述根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成开放运算语言代码,包括:
确定算法特征参数空间和硬件平台特征参数空间;
根据所述算法特征参数空间和所述硬件平台特征参数空间,将每个算法片段对应的第一优化方案实例化得到第二优化方案;
根据每个算法片段对应的第二优化方案,将所述至少一个算法片段转换成开放运算语言代码。
在上述技术方案中,自动确定程序信息中的算法适合的硬件平台和优化方案,具备硬件平台的自适应性,能够自动制定针对算法的高性能优化方案,大大减轻了程序员的负担,提高了转换效率;优化方案综合考虑了程序行为、硬件体特征和优化模式,提高了程序性能,并且通过增量的添加新的硬件平台特征和优化策略,从而最终降低平台升级换代带来的成本。
本发明第二方面提供一种程序信息的处理装置,包括:
获取模块,用于获取待处理程序信息中的适合硬件平台算法的至少一个算法片段;
处理模块,用于根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案;所述计算模式库中包括计算模式与优化方案的映射关系;
所述处理模块具体用于根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成OpenCL代码。
可选的,所述硬件平台为GPU平台,所述获取模块包括:
转换子模块,用于将所述待处理程序信息转换成具有高层语义的中转程序信息;
获取子模块,用于将所述中转程序信息中能够满足所述GPU平台算法,且在主机端和加速器端满足收益评估模型的算法程序片段作为所述至少一个算法片段。
可选的,所述处理模块具体用于:
根据预先定义的计算模式,确定每个算法片段所属的第一计算模式;
根据每个算法片段所属的所述第一计算模式,查询所述计算模式库中的计算模式与优化方案的所述映射关系,获取每个算法片段对应的所述第一优化方案。
可选的,所述处理模块获取的所述第一优化方案包括以下优化中的至少一种:并行化归约、向量化并行、共享内存优化、局部同步优化、通信优化、向量化访存、访存合并优化和边界处理向量并行化。
可选的,所述处理模块还具体用于:
确定算法特征参数空间和硬件平台特征参数空间;
根据所述算法特征参数空间和所述硬件平台特征参数空间,将每个算法片段对应的第一优化方案实例化得到第二优化方案;
根据每个算法片段对应的第二优化方案,将所述至少一个算法片段转换成开放运算语言代码。
本发明提供的程序信息的处理方法和装置,获取待处理程序信息中的适合硬件平台的至少一个算法片段,根据预先配置的计算模式库,为每个算法片段选则对应的第一优化方案,然后根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成OpenCL代码,通过由硬件设备自动确定程序中的算法适合的硬件平台和优化方案,并且考虑到程序算法本身的行为、硬件特征以及各种优化模式,自动制定针对算法的高性能优化方案,减轻程序员负担,有效提高了程序信息处理,即优化的效率和性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明程序信息的处理方法实施例一的流程图;
图2a为本发明程序信息的处理方法实施例二的流程图;
图2b为一高层语言描述的算法片段示意图;
图2c为将图2b的算法片段P1转换为OpenCL代码后的示意图;
图2d为将图2b的算法片段P2转换为OpenCL代码后的示意图;
图3为本发明程序信息的处理装置实施例一的结构示意图;
图4为本发明程序信息的处理装置实施例二的结构示意图;
图5为本发明程序信息的处理设备一实例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明方案是基于编译基础利用高层程序语义自动生成高性能GPU程序。将一个算法写成GPU的过程包括三个步骤,首先是确定一个算法是否适合在GPU平台上运行;其次是根据算法特征制定优化方案;最后,根据硬件平台特征和算法特征,实例化优化方案,并生成OpenCL代码。本发明首先根据收益评估模型判断算法是否适合在GPU平台上运行,其次,通过高层语义获取适合算法的最佳优化方案,最后根据该优化方案,自动生成GPU程序。下面提供的程序信息的处理方法不止可以适用于GPU平台的程序转换,还适用于其他硬件平台,例如:单指令多数据流(英文:Single Instruction Multiple Data,简称:SIMD)加速部件,数字信号处理(英文:Digital Signal Processing,简称:DSP)和现场可编程逻辑门阵列(英文:Field-Programmable Gate Array,简称:FPGA)等。
图1为本发明程序信息的处理方法实施例一的流程图,如图1所示,该程序信息的处理方法应用在编译器或者具有程序代码编译功能的设备中,具体的该程序信息的处理方法的具体步骤包括:
S101:获取待处理程序信息中的适合硬件平台的至少一个算法片段。
在本步骤中,待处理程序信息指的是高层语言程序,其中包括了普通的程序语言以及一些调用的算法语言,需要对从待处理程序信息中识别出适合选择的硬件平台的算法片段,可以是一个或者多个算法片段,上述的至少一个算法片段不仅能够在算法平台上执行,并且能够在主机端和加速器端得到可能性最高的性能。
S102:根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案。
在本步骤中,上述计算模式库中包括计算模式与优化方案的映射关系,确定从待处理程序信息中选择出的每个算法片段计算模式,然后根据预先配置的计算模式库为每个算法片段选择第一优化方案,在该计算模式库中,包括了多个算法模式以及每个算法模式对应的优化方案,在需要对算法片段进行优化的时候,可以分析出该算法片段的计算模式,然后查询该计算模式库,得到对应的第一优化方案。
S103:根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成OpenCL代码。
在本步骤中,需要对每个算法片段对应的第一优化方案进行形式化,建立每个优化方案的选择决策空间,然后根据硬件平台本身的特征信息和该些算法片段本身的特征信息对其的第一优化方案进行实例化,得到最终的优化方案,然后根据最终的优化方案,将待处理程序信息进行变换,生成OpenCL代码。
本实施例提供的程序信息的处理方法,获取待处理程序信息中的适合硬件平台的至少一个算法片段,根据预先配置的计算模式库,为每个算法片段选则对应的第一优化方案,然后根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成OpenCL代码,通过由硬件设备自动确定程序中的算法适合的硬件平台和优化方案,并且考虑到程序算法本身的行为、硬件特征以及各种优化模式,自动制定针对算法的高性能优化方案,减轻程序员负担,有效提高了程序信息处理,即优化的效率和性能。
图2a为本发明程序信息的处理方法实施例二的流程图,如图2a所示,以GPU为例,该程序信息的处理方法的具体实现步骤如下:
S201:将所述待处理程序信息转换成具有高层语义的中转程序信息。
在本步骤中,首先需要对待处理程序信息进行识别,识别出其中适合GPU平台的算法片段,具体的实现方式为:编译器扫描待处理程序信息(即源程序),将待处理程序信息翻译生成带有高层语义的中间表示形式,也就是上述的中转程序信息。
S202:将所述中转程序信息中能够满足所述GPU平台,且在主机端和加速器端满足收益评估模型的算法程序片段作为所述至少一个算法片段。
在本步骤中,紧接着上述的得到的中转程序信息,分析中转程序信息,根据其高层语义,确定能够在GPU平台上执行的算法区域,即上述的至少一个算法片段,这时得到算法只保证其能够在GPU平台上正确的执行。对确定出的能够在GPU平台上正确执行的多个算法片段(即算法区域),分析其在主机(Host)端和加速器(Device)端能够得到的可能最高性能。并根据性能收益评估模型,从上述的多个算法片段中选出适合GPU平台的算法集合,即步骤中的所述至少一个算法片段。
在上述过程之前,首先需要定义Host和Device上的性能收益评估模型,该模型包含的主要参数包括硬件平台的峰值性能、带宽以及算法本身特征,具体公式如下:
其中,H表示Host;D表示Device;A表示Algorithm;
HPP,DPP分别表示Host端的峰值性能和峰值性能;
HBW,DBW分别表示Host端的峰带宽和Device端的带宽;
AComp,Acomm分别表示算法的总的计算和访存;
DCC,HCC和ACC分别Device端的计算通信/访存比、Host端的计算通信/访存比、算法计算通信/访存比;
DRP,HRP表示算法在该平台上的Device端获取的实际最大性能和Host端的获取的实际最大性能;
DOH,HOH分别表示Device端和Host端并行带来的开销;
一种具体的实现方式是可以根据上述的性能收益评估模型,分析其在Host端和Device端能够得到的可能最高性能,从中选出适合GPU平台的算法集合。
S203:根据预先定义的计算模式,确定每个算法片段所属的第一计算模式。
S204:根据每个算法片段所属的所述第一计算模式,查询所述计算模式库中的计算模式与优化方案的所述映射关系,获取每个算法片段对应的所述第一优化方案。
在上述两个步骤中,编译器或者其他执行主体可确定选择出的至少一个算法片段的计算模式,可根据算法的高层语义,结合预先定义的计算模式,确定每个算法所属的计算模式。然后根据预先配置的计算模式库中预先获取的每个计算模式与对应的优化方案。根据每个算法片段所属的计算模式,映射到其适合的优化模式,即第一优化方案。所述第一优化方案包括以下优化中的至少一种:并行化归约、向量化并行、共享内存优化、局部同步优化、通信优化、向量化访存、访存合并优化和边界处理向量并行化。
S205:确定算法特征参数空间和硬件平台特征参数空间。
S206:根据所述算法特征参数空间和所述硬件平台特征参数空间,将每个算法片段对应的第一优化方案实例化得到第二优化方案。
S207:根据每个算法片段对应的第二优化方案,将所述至少一个算法片段转换成开放运算语言代码。
在上述步骤中,在S204中得到每个算法片段的第一优化方案基础上,将初步的第一优化方案形式化,建立优化方案的选择决策空间。根据硬件平台和程序的特征信息,也就是上述的算法特征参数空间和硬件平台特征参数空间实例化上述每个算法片段的初步第一优化方案,得到每个算法片段的第二优化方案,也就是最终优化方案。根据最终优化方案,完成程序变换和代码生成。
在上述两个实施例的基础上,下面举一实例对本发明的程序信息的处理方法进行详细说明:
图2b为一高层语言描述的算法片段示意图,存在一段由高层语言描述的算法片段如图2b所述,则具体的程序信息的处理方法的实际处理过程为:
S1、首先为源程序(上述的待处理程序信息)和GPU优化程序建立中间表示
S11、编译器扫描高层语言程序(即待处理程序信息),生成带有高层语义的中间表示。由于程序的中间表示会比较复杂且篇幅较大,这里仍然以类C代码表示,不给出具体的中间表示。
S12、根据高层语义识别出能够在GPU平台上执行的算法区域。本方法中的高层语言定义了两种描述可以在GPU平台上执行的算法的方法:
1)、由迭代器包含的并行区域,例如上图中的“并行区域P1”;
2)、由独立基础操作单独构成的并行区域,例如上图中的“并行区域P2”;
S13、根据性能收益评估公式确定并行区域P1和P2(也就是上述的至少一个算法片段)是否适合在GPU平台上执行。具体步骤如下:
(1)、计算Host和Device的计算通信比:HCC和DCC;
(2)、计算两个并行区域的计算特通信比ACC;
(3)、如果ACC>DCC,则适合GPU;
(4)、否则,计算GPU平台开销DOH;
(5)、如果ACC/DCC*DPP–DOH>ACC/HCC*HPP-HOH,则在GPU上执行,否则在Host执行;
根据分析结果判定,P1和P2适合在GPU上执行。
S2、确定适合算法片段(并行区域)的最佳优化方案
S21、确定算法所属的计算模式。下面分析对两个并行区域作如下分析:
S211、分析算法P1,根据高层语义可以确定:
(1)、边界处理:无;
(2)、任务粒度:细粒度;
(3)、基础操作集合:convolution;
根据预先定义的计算模式库可知,算法P1属于convolution计算模式。
S212、分析算法区域P2,根据高层语义可以确定:
(1)、边界处理:无;
(2)、任务粒度:粗粒度;
(3)、基础操作集合:matrix_sum;
根据预先定义的计算模式库可知,算法P2属于reduction计算模式。
S22、根据算法计算模式,获取其对应的初步优化方案。
S221、算法区域P1:
计算模式为convolution,其对应的优化模式为:向量化并行,向量化访存。
S222、算法区域P2
计算模式为reduction,其对应的优化模式为:并行化归约,局部同步优化,向量化并行和向量化访存。
S3、生成OpenCL代码
S31、形式化优化方案,定义算法特征参数空间和硬件平台特征参数空间。
S311.算法特征参数空间:
(1)、地址空间是否连续?
(2)、是否存在数据共享?
S312、硬件平台特征参数空间
(1)是否支持隐式硬件同步?
S32、实例化优化方案
S321、算法P1:
1)、地址空间连续;
2)、存在数据共享;
S322、算法P2:
1)、地址空间连续;
2)、不存在数据共享;
S323、硬件平台特征参数实例化:
AMD平台支持隐式硬件同步。
S33.生成代码
图2c为将图2b的算法片段P1转换为OpenCL代码后的示意图,生成的OpenCL代码如图2c中程序片段所示,并行区域P1转换后的向量化访存代码和向量化并行代码。
图2d为将图2b的算法片段P2转换为OpenCL代码后的示意图,图2d中的程序片段为前述的算法片段P2,也就是并行区域P2转换后的核心OpenCL代码。
下面给出说明:
(1)、并行化归约,将由128个线程进行归约多次两两归约求和;
(2)、向量化访存优化;
(3)、描述了显式同步,在AMD GPU平台上,在线程数目大约64的时候,需要显式同步;
(4)、局部同步优化,在AMD GPU平台上,当线程数目小于等于64时候,硬件提供了隐式同步,不需要用户显式描述;
通过分析计算高层硬件特征,包括峰值性能带宽比、Host与Device间的带宽和并行执行开销;获取高层算法特征,包括算法的计算访存比、数据定值引用信息;综合硬件特征和程序特征确定算法适合运行的硬件平台,结合优化策略的计算模式抽取方法:首先分析程序的行为特征;然后综合考虑GPU平台所具有的复杂硬件架构特征和适合这些体系结构特征的最佳优化策略两个因素,将算法形式化具体的计算模式。通过计算模式确定由优化模式集合构成的初步优化方案;将方案形式化为由算法特征和硬件特征作为参数定义的优化策略选择公式;最后根据具体的硬件平台和算法特征确定最终的优化方案。自动确定算法适合的硬件平台和优化方案,具备硬件平台的自适应性,自动制定针对算法的高性能优化方案,大大减轻了程序员的负担,提高了生产效率,优化方案综合考虑了程序行为、硬件体特征和优化模式,提高了程序性能,通过增量的添加新的硬件平台特征和优化策略,本方法可适用于新的硬件平台,从而最终降低平台升级换代带来的成本。
图3为本发明程序信息的处理装置实施例一的结构示意图,如图3所示,该程序信息的处理装置10包括:
获取模块11,用于获取待处理程序信息中的适合硬件平台的至少一个算法片段;
处理模块12,用于根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案;所述计算模式库中包括计算模式与优化方案的映射关系;
所述处理模块12具体用于根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成OpenCL代码。
本实施例提供的程序信息的处理装置,用于实现前述任一实施例提供的方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
图4为本发明程序信息的处理装置实施例二的结构示意图,如图4所示,在上述实施例的基础上,所述硬件平台为GPU平台,所述获取模块11包括:
转换子模块111,用于将所述待处理程序信息转换成具有高层语义的中转程序信息;
获取子模块112,用于将所述中转程序信息中能够满足所述GPU平台,且在主机端和加速器端满足收益评估模型的算法程序片段作为所述至少一个算法片段。
可选的,所述处理模块12具体用于:
根据预先定义的计算模式,确定每个算法片段所属的第一计算模式;
根据每个算法片段所属的所述第一计算模式,查询所述计算模式库中的计算模式与优化方案的所述映射关系,获取每个算法片段对应的所述第一优化方案。
可选的,所述处理模块12获取的所述第一优化方案包括以下优化中的至少一种:并行化归约、向量化并行、共享内存优化、局部同步优化、通信优化、向量化访存、访存合并优化和边界处理向量并行化。
可选的,所述处理模块12还具体用于:
确定算法特征参数空间和硬件平台特征参数空间;
根据所述算法特征参数空间和所述硬件平台特征参数空间,将每个算法片段对应的第一优化方案实例化得到第二优化方案;
根据每个算法片段对应的第二优化方案,将所述至少一个算法片段转换成开放运算语言代码。
本实施例提供的程序信息的处理装置,用于实现前述任一实施例提供的方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
图5为本发明程序信息的处理设备一实例的结构示意图,如图5所示,上述程序信息的处理装置可以被具体实现为一实体设备,具体包括:用于控制可执行指令执行的处理器、用于存储处理器可执行指令的存储器;该处理器具体可以用来执行:
获取待处理程序信息中的适合硬件平台的至少一个算法片段;
根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案;所述计算模式库中包括计算模式与优化方案的映射关系;
根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成OpenCL代码。
可选的所述硬件平台为GPU平台,则所述处理器具体用于:
将所述待处理程序信息转换成具有高层语义的中转程序信息;
将所述中转程序信息中能够满足所述GPU平台,且在主机端和加速器端满足收益评估模型的算法程序片段作为所述至少一个算法片段。
所述处理器还具体用于:
根据预先定义的计算模式,确定每个算法片段所属的第一计算模式;
根据每个算法片段所属的所述第一计算模式,查询所述计算模式库中的计算模式与优化方案的所述映射关系,获取每个算法片段对应的所述第一优化方案。
其中,所述第一优化方案包括以下优化中的至少一种:并行化归约、向量化并行、共享内存优化、局部同步优化、通信优化、向量化访存、访存合并优化和边界处理向量并行化。
可选的,所述处理器还具体用于:
确定算法特征参数空间和硬件平台特征参数空间;
根据所述算法特征参数空间和所述硬件平台特征参数空间,将每个算法片段对应的第一优化方案实例化得到第二优化方案;
根据每个算法片段对应的第二优化方案,将所述至少一个算法片段转换成开放运算语言代码。
应理解,上述设备的处理器可以是中央处理单元(英文:Central ProcessingUnit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital SignalProcessor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppy disk)、光盘(英文:optical disc)及其任意组合。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种程序信息的处理方法,其特征在于,包括:
获取待处理程序信息中的适合硬件平台的至少一个算法片段;
根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案;所述计算模式库中包括计算模式与优化方案的映射关系;
根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成开放运算语言OpenCL代码。
2.根据权利要求1所述的方法,其特征在于,所述硬件平台为GPU平台,所述获取待处理程序信息中的适合硬件平台的至少一个算法片段,包括:
将所述待处理程序信息转换成具有高层语义的中转程序信息;
将所述中转程序信息中能够满足所述GPU平台,且在主机端和加速器端满足收益评估模型的算法程序片段作为所述至少一个算法片段。
3.根据权利要求2所述的方法,其特征在于,所述根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案,包括:
根据预先定义的计算模式,确定每个算法片段所属的第一计算模式;
根据每个算法片段所属的所述第一计算模式,查询所述计算模式库中的计算模式与优化方案的所述映射关系,获取每个算法片段对应的所述第一优化方案。
4.根据权利要求3所述的方法,其特征在于,所述第一优化方案包括以下优化中的至少一种:并行化归约、向量化并行、共享内存优化、局部同步优化、通信优化、向量化访存、访存合并优化和边界处理向量并行化。
5.根据权利要求3或4所述的方法,其特征在于,所述根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成开放运算语言OpenCL代码,包括:
确定算法特征参数空间和硬件平台特征参数空间;
根据所述算法特征参数空间和所述硬件平台特征参数空间,将每个算法片段对应的第一优化方案实例化得到第二优化方案;
根据每个算法片段对应的第二优化方案,将所述至少一个算法片段转换成开放运算语言代码。
6.一种程序信息的处理装置,其特征在于,包括:
获取模块,用于获取待处理程序信息中的适合硬件平台的至少一个算法片段;
处理模块,用于根据预先配置的计算模式库,为每个算法片段选择对应的第一优化方案;所述计算模式库中包括计算模式与优化方案的映射关系;
所述处理模块具体用于根据硬件平台和每个算法片段对应的第一优化方案将所述至少一个算法片段转换成开放运算语言OpenCL代码。
7.根据权利要求6所述的装置,其特征在于,所述硬件平台为GPU平台,所述获取模块包括:
转换子模块,用于将所述待处理程序信息转换成具有高层语义的中转程序信息;
获取子模块,用于将所述中转程序信息中能够满足所述GPU平台,且在主机端和加速器端满足收益评估模型的算法程序片段作为所述至少一个算法片段。
8.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于:
根据预先定义的计算模式,确定每个算法片段所属的第一计算模式;
根据每个算法片段所属的所述第一计算模式,查询所述计算模式库中的计算模式与优化方案的所述映射关系,获取每个算法片段对应的所述第一优化方案。
9.根据权利要求8所述的装置,其特征在于,所述处理模块获取的所述第一优化方案包括以下优化中的至少一种:并行化归约、向量化并行、共享内存优化、局部同步优化、通信优化、向量化访存、访存合并优化和边界处理向量并行化。
10.根据权利要求8或9所述的装置,其特征在于,所述处理模块还具体用于:
确定算法特征参数空间和硬件平台特征参数空间;
根据所述算法特征参数空间和所述硬件平台特征参数空间,将每个算法片段对应的第一优化方案实例化得到第二优化方案;
根据每个算法片段对应的第二优化方案,将所述至少一个算法片段转换成开放运算语言代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610490507.9A CN107544794A (zh) | 2016-06-28 | 2016-06-28 | 程序信息的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610490507.9A CN107544794A (zh) | 2016-06-28 | 2016-06-28 | 程序信息的处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107544794A true CN107544794A (zh) | 2018-01-05 |
Family
ID=60963025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610490507.9A Pending CN107544794A (zh) | 2016-06-28 | 2016-06-28 | 程序信息的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107544794A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109740725A (zh) * | 2019-01-25 | 2019-05-10 | 网易(杭州)网络有限公司 | 神经网络模型运行方法及装置、以及存储介质 |
CN110765237A (zh) * | 2019-10-10 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 文档处理方法、装置、存储介质及电子设备 |
CN112988372A (zh) * | 2019-12-16 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 确定硬件运算平台分配方式的方法和装置 |
CN112988229A (zh) * | 2019-12-12 | 2021-06-18 | 上海大学 | 基于异构计算的卷积神经网络资源优化配置方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667135A (zh) * | 2009-09-30 | 2010-03-10 | 浙江大学 | 一种交互式并行化编译系统及其编译方法 |
CN101963916A (zh) * | 2010-09-28 | 2011-02-02 | 中国科学院地质与地球物理研究所 | 编译处理方法及装置 |
CN103019742A (zh) * | 2012-12-31 | 2013-04-03 | 清华大学 | 一种多dsp平台上的自动代码生成方法 |
CN105511867A (zh) * | 2015-11-30 | 2016-04-20 | 华为技术有限公司 | 一种优化模式自动生成方法及优化装置 |
-
2016
- 2016-06-28 CN CN201610490507.9A patent/CN107544794A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667135A (zh) * | 2009-09-30 | 2010-03-10 | 浙江大学 | 一种交互式并行化编译系统及其编译方法 |
CN101963916A (zh) * | 2010-09-28 | 2011-02-02 | 中国科学院地质与地球物理研究所 | 编译处理方法及装置 |
CN103019742A (zh) * | 2012-12-31 | 2013-04-03 | 清华大学 | 一种多dsp平台上的自动代码生成方法 |
CN105511867A (zh) * | 2015-11-30 | 2016-04-20 | 华为技术有限公司 | 一种优化模式自动生成方法及优化装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109740725A (zh) * | 2019-01-25 | 2019-05-10 | 网易(杭州)网络有限公司 | 神经网络模型运行方法及装置、以及存储介质 |
CN110765237A (zh) * | 2019-10-10 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 文档处理方法、装置、存储介质及电子设备 |
CN110765237B (zh) * | 2019-10-10 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 文档处理方法、装置、存储介质及电子设备 |
CN112988229A (zh) * | 2019-12-12 | 2021-06-18 | 上海大学 | 基于异构计算的卷积神经网络资源优化配置方法 |
CN112988372A (zh) * | 2019-12-16 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 确定硬件运算平台分配方式的方法和装置 |
CN112988372B (zh) * | 2019-12-16 | 2023-10-24 | 杭州海康威视数字技术股份有限公司 | 确定硬件运算平台分配方式的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vasilache et al. | The next 700 accelerated layers: From mathematical expressions of network computation graphs to accelerated gpu kernels, automatically | |
Mullapudi et al. | Automatically scheduling halide image processing pipelines | |
US8225074B2 (en) | Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator | |
Magni et al. | Automatic optimization of thread-coarsening for graphics processors | |
CN107544794A (zh) | 程序信息的处理方法和装置 | |
CN109933327B (zh) | 基于代码融合编译框架的OpenCL编译器设计方法和系统 | |
CN109491494A (zh) | 功率参数的调整方法、装置及强化学习模型训练方法 | |
Rieger et al. | Musket: a domain-specific language for high-level parallel programming with algorithmic skeletons | |
JP5057969B2 (ja) | データ操作のためのコンピュータシステム及び関連方法 | |
Bielecki et al. | Free scheduling for statement instances of parameterized arbitrarily nested affine loops | |
Reiche et al. | Auto-vectorization for image processing DSLs | |
CN114398039A (zh) | 一种自动细粒度的两级并行翻译方法 | |
Li et al. | Development and application of intelligent system modeling and simulation platform | |
Pereira et al. | Extending OpenACC for efficient stencil code generation and execution by skeleton frameworks | |
Sun et al. | Efficient tensor cores support in tvm for low-latency deep learning | |
CN112633516B (zh) | 性能预测和机器学习编译优化方法及装置 | |
Manikandan et al. | Software design challenges in time series prediction systems using parallel implementation of artificial neural networks | |
Li et al. | Revisiting split tiling for stencil computations in polyhedral compilation | |
Goli et al. | Mapping parallel programs to heterogeneous CPU/GPU architectures using a Monte Carlo Tree Search | |
Nguyen et al. | No! Not another deep learning framework | |
Chichin et al. | Capability to embed deep neural networks: Study on cpu processor in avionics context | |
Rameshka et al. | Rigel: A framework for openmp performancetuning | |
Lu et al. | A simple and efficient technique to generate bounded solutions for the multidimensional Knapsack problem: A guide for OR practitioners | |
Acosta et al. | Paralldroid: Performance analysis of gpu executions | |
Meyerovich et al. | Data parallel programming for irregular tree computations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180105 |