硬件架构的验证方法及装置与流程

文档序号:11515240阅读:613来源:国知局
硬件架构的验证方法及装置与流程

本发明涉及机器学习硬件化技术领域,尤其是涉及一种硬件架构的验证方法及装置。



背景技术:

机器学习是近年来兴起的一门研究如何使用机器来模拟人类学习活动的科学,机器学习算法是一类从数据中自动分析来获得规律,并利用规律对未知数据进行预测的算法。

目前,机器学习一般采用运行在单个中央处理器(centralprocessingunit,简称cpu),或者,中央处理器与图形处理器(graphicprocessingunit,简称gpu)的组合处理器上的成熟的学习软件框架进行实现。例如,深度学习作为机器学习研究中的一个重要领域,所拥有的成熟的学习软件框架有caffe、tensorflow、mxnet等。已有的成熟的学习软件框架具有不同的标准计算流程和固定的数据类型,能够提供可靠的计算结果。然而,随着应用需求的不断扩大,针对一些复杂的问题,上述软件实现方法存在时效和功耗等方面的局限性。要想速度更快、功耗更低、延时更小地实现机器学习,硬件方面可以通过使用现场可编程门阵列fpga(field-programmablegatearray,简称fpga)、片上系统(systemonchip,简称soc)、专用集成电路(applicationspecificintergratedcircuits,简称asic)等器件将实现机器学习算法的硬件进行重新组建。

具体地,在将实现机器学习算法的硬件进行重新组建过程中,由于涉及到了分块计算、数据拆分等操作,因而针对硬件架构的不同,需要对机器学习的计算流程进行不同的编写。然而,鉴于硬件架构适合采用的数据类型和现有软件框架采用的数据类型不相同,因而,如何保证某一硬件架构进行机器学习的计算流程的正确性,目前缺乏有效的验证方法。



技术实现要素:

有鉴于此,本发明的目的在于提供一种硬件架构的验证方法及装置,以缓解现有技术无法验证硬件架构计算流程正确性的技术问题。

第一方面,本发明实施例提供了一种硬件架构的验证方法,所述硬件架构用于执行机器学习算法,所述方法包括:

获取应用测试程序,其中,所述应用测试程序为预先设计的用于对待验证的硬件架构进行验证的程序,且所述应用测试程序的计算结果与预选标准计算流程的计算结果相同,所述预选标准计算流程与所述硬件架构所执行的任务相同;

基于所述硬件架构的数据类型,调节所述应用测试程序的数据类型,得到中间应用测试程序,其中,所述中间应用测试程序的数据类型与所述硬件架构的数据类型相同;

将所述中间应用测试程序和所述硬件架构的计算结果进行比较,根据比较结果验证所述硬件架构计算流程是否正确。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,根据比较结果验证所述硬件架构计算流程是否正确,包括:

如果所述比较结果为第一比较结果,则验证所述硬件架构计算流程正确,其中,所述第一比较结果为所述中间应用测试程序的计算结果和所述硬件架构的计算结果相同;

如果所述比较结果为第二比较结果,则验证所述硬件架构计算流程错误,其中,所述第二比较结果为所述中间应用测试程序的计算结果和所述硬件架构的计算结果不相同。

结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,在验证所述硬件架构计算流程错误之后,所述方法还包括:

基于所述中间应用测试程序的计算结果,对所述硬件架构计算流程进行校正。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,基于所述硬件架构的数据类型,调节所述应用测试程序的数据类型,得到中间应用测试程序,包括:

判断所述硬件架构的数据类型与所述应用测试程序的数据类型的是否相同;

如果判断出不相同,则对所述应用测试程序的数据类型进行调整,以使所述应用测试程序的数据类型与所述硬件架构的数据类型相同,从而得到所述中间应用测试程序;

如果判断出相同,则将当前的所述应用测试程序确定为所述中间应用测试程序。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,获取应用测试程序,包括:

获取预先设计的原始应用测试程序,所述原始应用测试程序的数据类型和所述预选标准计算流程的数据类型相同;

基于所述预选标准计算流程的计算结果,对所述原始应用测试程序的计算流程进行校正,得到所述应用测试程序。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述应用测试程序为采用c语言或者c++语言编写的应用测试程序。

第二方面,本发明实施例还提供一种硬件架构的验证装置,所述硬件架构用于执行机器学习算法,所述装置包括:

获取模块,用于获取应用测试程序,其中,所述应用测试程序为预先设计的用于对待验证的硬件架构进行验证的程序,且所述应用测试程序的计算结果与预选标准计算流程的计算结果相同,所述预选标准计算流程与所述硬件架构所执行的任务相同。

调节模块,用于基于所述硬件架构的数据类型,调节所述应用测试程序的数据类型,得到中间应用测试程序,其中,所述中间应用测试程序的数据类型与所述硬件架构的数据类型相同;

验证模块,用于将所述中间应用测试程序和所述硬件架构的计算结果进行比较,根据比较结果验证所述硬件架构计算流程是否正确。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述验证模块用于:

在所述比较结果为第一比较结果的情况下,则验证所述硬件架构计算流程正确,其中,所述第一比较结果为所述中间应用测试程序的计算结果和所述硬件架构的计算结果相同;

在所述比较结果为第二比较结果的情况下,则验证所述硬件架构计算流程错误,其中,所述第二比较结果为所述中间应用测试程序的计算结果和所述硬件架构的计算结果不相同。

结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述装置还包括矫正模块,所述矫正模块用于:

在验证所述硬件架构计算流程错误之后,基于所述中间应用测试程序的计算结果,对所述硬件架构计算流程进行校正。

结合第二方面,本发明提供了第二方面的第三种可能的实施方式,其中,所述调节模块包括:

判断单元,用于判断所述硬件架构的数据类型与所述应用测试程序的数据类型的是否相同;

调整单元,用于在判断出所述硬件架构的数据类型与所述应用测试程序的数据类型不相同的情况下,对所述应用测试程序的数据类型进行调整,以使所述应用测试程序的数据类型与所述硬件架构的数据类型相同,从而得到所述中间应用测试程序;

确定单元,用于在判断出所述硬件架构的数据类型与所述应用测试程序的数据类型相同的情况下,将当前的所述应用测试程序确定为所述中间应用测试程序。

结合第二方面,本发明提供了第二方面的第四种可能的实施方式,其中,所述获取模块包括:

获取单元,用于获取预先设计的原始应用测试程序,所述原始应用测试程序的数据类型和所述预选标准计算流程的数据类型相同;

矫正单元,用于基于所述预选标准计算流程的计算结果,对所述原始应用测试程序的计算流程进行校正,得到所述应用测试程序。

结合第二方面,本发明提供了第二方面的第五种可能的实施方式,其中,所述应用测试程序为采用c语言或者c++语言编写的应用测试程序。

本发明实施例中,获取的应用测试程序的计算结果与预选标准计算流程的计算结果相同,然后,调节应用测试程序的数据类型,得到数据类型与硬件架构的数据类型相同的中间应用测试程序,既而通过将中间应用测试程序的计算结果和硬件架构的计算结果进行比较,从而实现了将预选标准计算流程的计算结果和硬件架构的计算结果进行间接比较的目的,达到了对硬件架构计算流程的正确性进行验证的技术效果,从而缓解了现有技术中存在的无法对硬件架构计算流程的正确性进行验证的技术问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一提供的一种硬件架构的验证方法的流程图;

图2为本发明实施例一提供的另一种硬件架构的验证方法的流程图;

图3为本发明实施例一提供的另一种硬件架构的验证方法的流程图;

图4为本发明实施例二提供的一种硬件架构的验证装置的结构示意图。

图标:100-获取模块;200-调节模块;300-验证模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前机器学习一般采用运行在单个cpu或者cpu与gpu的组合处理器上的成熟的学习软件框架进行实现,然而,针对一些复杂的问题,上述软件实现方法存在时效和功耗等方面的局限性,因而要想速度更快、功耗更低、延时更小地实现机器学习,就需要通过使用不同的fpga、soc或asic等器件将将实现机器学习算法的硬件进行重新组建。但是,鉴于硬件架构适合采用的数据类型和现有软件框架采用的数据类型不相同,其中,硬件适合处理定点数表示的数据,现有软件框架的数据为浮点数表示的数据。因而,如何保证某一硬件架构进行机器学习的计算流程的正确性,目前缺乏有效的验证方法。基于此,本发明实施例提供的一种硬件架构的验证方法及装置,可以缓解现有技术中存在的无法验证硬件架构计算流程正确性的技术问题。

实施例一

本发明实施例提供的一种硬件架构的验证方法,如图1所示,包括:

步骤s102,获取应用测试程序,其中,应用测试程序为预先设计的用于对待验证的硬件架构进行验证的程序,且应用测试程序的计算结果与预选标准计算流程的计算结果相同,预选标准计算流程与硬件架构所执行的任务相同,硬件架构用于执行机器学习算法。

具体地,应用测试程序是为了对待验证的硬件架构进行验证而预先设计的程序,是经过测试而验证了的计算结果与预选标准计算流程的计算结果相同的程序。

需要说明的是,应用测试程序作为临时编写的程序,其数据类型是可以因需要而被调节的。

成熟的机器学习软件框架已被广泛应用,计算结果可靠,从而,在应用测试程序的计算结果与预选标准计算流程的计算结果相同的情况下,应用测试程序就是计算流程正确的程序。其中,在硬件架构用于执行深度学习算法的情况下,预选标准计算流程可以采用以下任意一种成熟的深度学习软件框架的计算流程:caffe、tensorflow、mxnet。

此外,本发明中的硬件架构用于执行机器学习算法,包括执行深度学习算法,但需要强调的是,不仅限于深度学习算法。

步骤s104,基于硬件架构的数据类型,调节应用测试程序的数据类型,得到中间应用测试程序,其中,中间应用测试程序的数据类型与硬件架构的数据类型相同。

需要说明的是,由于同类型的数据才可以进行比较,因而在中间应用测试程序的数据类型与硬件架构的数据类型相同的情况下,则中间应用测试程序的计算结果的数据类型和硬件架构的计算结果的数据类型也相同,从而使得中间应用测试程序的计算结果和硬件架构的计算结果能够进行比较。

步骤s106,将中间应用测试程序和硬件架构的计算结果进行比较,根据比较结果验证硬件架构计算流程是否正确。

具体地,由于应用测试程序是计算流程正确的程序,那么,只改变应用测试程序的数据类型而得到的中间应用测试程序也是计算流程正确的程序,因而中间应用测试程序的计算结果是可靠的计算结果,所以将中间应用测试程序和硬件架构的数据类型相同的计算结果进行比较,根据比较结果即可验证硬件架构计算流程是否正确。

在本发明实施例中,获取的应用测试程序的计算结果与预选标准计算流程的计算结果相同,然后,调节应用测试程序的数据类型,得到数据类型与硬件架构的数据类型相同的中间应用测试程序,既而通过将中间应用测试程序的计算结果和硬件架构的计算结果进行比较,从而实现了将预选标准计算流程的计算结果和硬件架构的计算结果进行间接比较的目的,达到了对硬件架构计算流程的正确性进行验证的技术效果,从而缓解了现有技术中存在的无法对硬件架构计算流程的正确性进行验证的技术问题。

本发明实施例的一个可选实施方式中,根据比较结果验证硬件架构计算流程是否正确,包括:

如果比较结果为第一比较结果,则验证硬件架构计算流程正确,其中,第一比较结果为中间应用测试程序的计算结果和硬件架构的计算结果相同;

如果比较结果为第二比较结果,则验证硬件架构计算流程错误,其中,第二比较结果为中间应用测试程序的计算结果和硬件架构的计算结果不相同。

具体地,在中间应用测试程序的计算结果和硬件架构的计算结果相同的情况下,由于中间应用测试程序的计算结果是正确的计算结果,因而硬件架构的计算结果也是正确的计算结果,从而验证得硬件架构计算流程正确;反之,在中间应用测试程序的计算结果和硬件架构的计算结果不相同的情况下,则硬件架构的计算结果是错误的计算结果,从而验证得硬件架构计算流程错误。

本发明实施例的另一个可选实施方式中,如图2所示,在步骤s106中,将中间应用测试程序和硬件架构的数据类型相同的计算结果进行比较,比较结果为第二比较结果,则验证硬件架构计算流程错误之后,硬件架构的验证方法还包括:

步骤s108,基于中间应用测试程序的计算结果,对硬件架构计算流程进行校正。

具体地,在验证硬件架构计算流程错误之后,则修改硬件架构计算流程,知道修改后的硬件架构的计算结果和中间应用测试程序的计算结果相同。

本发明实施例中,验证硬件架构计算流程错误之后,对硬件架构计算流程进行校正,从而得到正确的硬件架构的计算流程。

本发明实施例的另一个可选实施方式中,基于硬件架构的数据类型,调节应用测试程序的数据类型,得到中间应用测试程序,包括:

判断硬件架构的数据类型与应用测试程序的数据类型的是否相同;

如果判断出不相同,则对应用测试程序的数据类型进行调整,以使应用测试程序的数据类型与硬件架构的数据类型相同,从而得到中间应用测试程序;

如果判断出相同,则将当前的应用测试程序确定为中间应用测试程序。

本发明实施例的另一个可选实施方式中,如图3所示,步骤s102,获取应用测试程序,包括:

步骤s1021,获取预先设计的原始应用测试程序,原始应用测试程序的数据类型和预选标准计算流程的数据类型相同;

步骤s1022,基于预选标准计算流程的计算结果,对原始应用测试程序的计算流程进行校正,得到应用测试程序。

具体地,在原始应用测试程序的数据类型和预选标准计算流程的数据类型相同的情况下,将数据类型相同的原始应用测试程序的计算结果和预选标准计算流程的计算结果进行比较,并且根据比较结果,对原始应用测试程序的计算流程进行校正,得到应用测试程序。

进一步,在比较结果为原始应用测试程序的计算结果和预选标准计算流程的计算结果相同时,则将原始应用测试程序确定为应用测试程序;而在比较结果为原始应用测试程序的计算结果和预选标准计算流程的计算结果不同时,则修改原始应用测试程序的计算流程,直到修改后的原始应用测试程序的计算结果和预选标准计算流程的计算结果相同为止,并且将修改后的原始应用测试程序确定为应用测试程序。

本发明实施例的另一个可选实施方式中,鉴于c语言和c++语言作为常用的编程用语言,又支持泛型编程,即在不改变算法计算结构的基础上就可以很方便的改变数据类型,因而,应用测试程序为采用c语言或者c++语言编写的应用测试程序。

具体地,使用c语言编写的应用测试程序,通过设置使用typedef的方式即可实现改变数据类型的目的。

实施例二

本发明实施例提供的一种硬件架构的验证装置,如图4所示,包括:

获取模块100,用于获取应用测试程序,其中,应用测试程序为预先设计的用于对待验证的硬件架构进行验证的程序,且应用测试程序的计算结果与预选标准计算流程的计算结果相同,预选标准计算流程与硬件架构所执行的任务相同;

调节模块200,用于基于硬件架构的数据类型,调节应用测试程序的数据类型,得到中间应用测试程序,其中,中间应用测试程序的数据类型与硬件架构的数据类型相同;

验证模块300,用于将中间应用测试程序和硬件架构的计算结果进行比较,根据比较结果验证硬件架构计算流程是否正确。

在本发明实施例中,获取模块100获取的应用测试程序的计算结果与预选标准计算流程的计算结果相同,然后,调节模块200调节应用测试程序的数据类型,得到数据类型与硬件架构的数据类型相同的中间应用测试程序,既而通过验证模块300将中间应用测试程序的计算结果和硬件架构的计算结果进行比较,从而实现了将预选标准计算流程的计算结果和硬件架构的计算结果进行间接比较的目的,达到了对硬件架构计算流程的正确性进行验证的技术效果,从而缓解了现有技术中存在的无法对硬件架构计算流程的正确性进行验证的技术问题。

本发明实施例的另一个可选实施方式中,验证模块300用于:

在比较结果为第一比较结果的情况下,则验证硬件架构计算流程正确,其中,第一比较结果为中间应用测试程序的计算结果和硬件架构的计算结果相同;

在比较结果为第二比较结果的情况下,则验证硬件架构计算流程错误,其中,第二比较结果为中间应用测试程序的计算结果和硬件架构的计算结果不相同。

本发明实施例的另一个可选实施方式中,装置还包括矫正模块,矫正模块用于:

在验证硬件架构计算流程错误之后,基于中间应用测试程序的计算结果,对硬件架构计算流程进行校正。

本发明实施例的另一个可选实施方式中,调节模块200包括:

判断单元,用于判断硬件架构的数据类型与应用测试程序的数据类型的是否相同;

调整单元,用于在判断出硬件架构的数据类型与应用测试程序的数据类型不相同的情况下,对应用测试程序的数据类型进行调整,以使应用测试程序的数据类型与硬件架构的数据类型相同,从而得到中间应用测试程序;

确定单元,用于在判断出硬件架构的数据类型与应用测试程序的数据类型相同的情况下,将当前的应用测试程序确定为中间应用测试程序。

本发明实施例的另一个可选实施方式中,获取模块100包括:

获取单元,用于获取预先设计的原始应用测试程序,原始应用测试程序的数据类型和预选标准计算流程的数据类型相同;

矫正单元,用于基于预选标准计算流程的计算结果,对原始应用测试程序的计算流程进行校正,得到应用测试程序。

本发明实施例的另一个可选实施方式中,应用测试程序为采用c语言或者c++语言编写的应用测试程序。

本发明实施例所提供的硬件架构的验证方法及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1