一种测试GPU浮点运算性能的方法和系统与流程

文档序号:16207745发布日期:2018-12-08 07:19阅读:2569来源:国知局
一种测试GPU浮点运算性能的方法和系统与流程

本申请涉及高性能计算服务器技术领域,特别是涉及一种测试gpu浮点运算性能的方法和系统。

背景技术

随着高性能计算服务器技术的发展,gpu(graphicsprocessingunit,图形处理器)服务器广泛应用于深度学习和人工智能等技术领域。在这些技术领域中,主要应用gpu的高性能并行计算以及超大规模负载数据中心的能力,而评估gpu并行计算能力的重要指标就是gpu的单精度和双精度浮点运算能力。因此,对gpu的浮点运算性能进行测试,是个进行gpu性能评估的重点。

目前,对gpu进行浮点运算性能测试的方法主要是,一次测试针对某一种类型的gpu分别进行单精度测试和双精度测试,而且一次只能测试一种类型的gpu,然后根据单精度测试结果和双精度测试结果,来评估gpu的并行计算性能。

然而,目前对gpu所进行的浮点运算性能测试方法,由于一次只能针对一种类型的gpu进行测试,而且单精度测试和双精度测试只能分开测试,占用测试时间较长,测试效率较低。尤其是进行多个gpu的性能测试时,测试效率较低的现象更加明显。



技术实现要素:

本申请提供了一种测试gpu浮点运算性能的方法和系统,以解决现有技术中测试效率较低的问题。

为了解决上述技术问题,本申请实施例公开了如下技术方案:

一种测试gpu浮点运算性能的方法,所述方法包括:

根据设定的测试参数,利用shoc-master.zip工具,对gpu进行单精度浮点运算测试和双精度浮点运算测试,获取gpu的实际浮点运算值,所述实际浮点运算值包括单精度实际浮点运算值和双精度实际浮点运算值,所述测试参数包括:待测试gpu的型号、序号和测试规模;

根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,计算得出gpu的标准浮点运算值,所述标准浮点运算值包括单精度标准浮点运算值和双精度标准浮点运算值;

根据gpu的实际浮点运算值与标准浮点运算值的比值,计算得出gpu的效率值;

判断gpu的效率值是否≥85%;

如果是,判定gpu的浮点运行性能测试合格,否则,判定gpu的浮点运算性能不合格。

可选地,根据设定的测试参数,利用shoc-master.zip工具,对gpu进行单精度浮点运算测试和双精度浮点运算测试,获取gpu的实际浮点运算值之前,所述方法还包括:

搭建gpu测试环境,所述测试环境包括cuda平台,所述cuda平台用于运行shoc基准程序。

可选地,所述搭建gpu测试环境,包括:

根据所获取的第一加载指令,加载gpu驱动程序;

根据所获取的安装指令,安装cuda平台;

根据所获取的第二加载指令,在cuda平台上加载shoc-master.zip工具。

可选地,根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,计算得出gpu的标准浮点运算值的方法,包括:

根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,利用公式:双精度标准浮点运算值=每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出双精度标准浮点运算值;

根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,利用公式:单精度标准浮点运算值=3*每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出单精度标准浮点运算值。

可选地,所述方法可用于gpu单机测试以及gpu集群测试。

一种测试gpu浮点运算性能的系统,所述系统包括:

实际浮点运算值测试模块,用于根据设定的测试参数,利用shoc-master.zip工具,对gpu进行单精度浮点运算测试和双精度浮点运算测试,获取gpu的实际浮点运算值,所述实际浮点运算值包括单精度实际浮点运算值和双精度实际浮点运算值,所述测试参数包括:待测试gpu的型号、序号和测试规模;

标准浮点运算值计算模块,用于根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,计算得出gpu的标准浮点运算值,所述标准浮点运算值包括单精度标准浮点运算值和双精度标准浮点运算值;

gpu效率值计算模块,用于根据gpu的实际浮点运算值与标准浮点运算值的比值,计算得出gpu的效率值;

判断模块,用于判断gpu的效率值是否≥85%,如果是,判定gpu的浮点运行性能测试合格,否则,判定gpu的浮点运算性能不合格。

可选地,所述系统还包括测试环境搭建模块,用于搭建gpu测试环境,所述测试环境包括cuda平台。

可选地,所述测试环境搭建模块包括:

gpu驱动程序加载单元,用于根据所获取的第一加载指令,加载gpu驱动程序;

cuda平台安装单元,用于根据所获取的安装指令,安装cuda平台;

测试工具加载单元,用于根据所获取的第二加载指令,在cuda平台上加载shoc-master.zip工具。

可选地,所述标准浮点运算值计算模块,包括:

双精度标准浮点运算值计算单元,用于根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,利用公式:双精度标准浮点运算值=每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出双精度标准浮点运算值;

单精度标准浮点运算值计算单元,用于根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,利用公式:单精度标准浮点运算值=3*每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出单精度标准浮点运算值。

可选地,所述系统可用于gpu单机测试以及gpu集群测试。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请提供一种测试gpu浮点运算性能的方法,首先根据设定的测试参数,利用shoc-master.zip工具,对gpu进行单精度浮点运算测试和双精度浮点运算测试,获取gpu的实际浮点运算值;其次根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,计算得出gpu的标准浮点运算值;然后根据gpu的实际浮点运算值与标准浮点运算值的比值,计算得出gpu的效率值;最后判断gpu的效率值是否≥85%;如果是,判定gpu的浮点运行性能测试合格,否则,判定gpu的浮点运算性能不合格。相比于现有技术,本申请通过在cuda平台上运行shoc基准程序,能够同时测试一个或多个gpu的单精度和双精度浮点运行性能,从而能够简单便捷地获取单机gpu服务器的并行运算能力,或gpu服务器的集群性能。利用本申请的方法编写脚本,能够实现gpu浮点运行性能的自动化测试,有利于节省测试时间,提高测试效率。

本申请还提供一种测试gpu浮点运算性能的系统,该系统包括实际浮点运算值测试模块、标准浮点运算值计算模块、gpu效率值计算模块和判断模块。通过实际浮点运算值测试模块,根据设定的测试参数,利用shoc-master.zip工具,对gpu进行单精度浮点运算测试和双精度浮点运算测试,获取gpu的实际浮点运算值;利用标准浮点运算值计算模块根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,计算得出gpu的标准浮点运算值;利用gpu效率值计算模块,根据gpu的实际浮点运算值与标准浮点运算值的比值,计算得出gpu的效率值;最后通过判断模块根据效率值是否≥85%来判断gpu的浮点运行性能测试是否合格,从而实现对单机gpu浮点运算性能的评估,或gpu集群浮点运算性能的评估。本申请所提供的系统,利用shoc基准程序,能够同时测试一个或多个gpu的单精度和双精度浮点运行性能,从而能够简单便捷地获取单机gpu服务器的并行运算能力,或gpu服务器的集群性能,有利于大大提高gpu性能测试的效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

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

图1为本申请实施例所提供的一种测试gpu浮点运算性能的方法的流程示意图;

图2为本申请实施例所提供的一种测试gpu浮点运算性能的系统的结构示意图。

具体实施方式

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

为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。

实施例一

参见图1,图1为本申请实施例所提供的一种测试gpu浮点运算性能的方法的流程示意图。由图1可知,本实施例中测试gpu浮点运算性能的方法,主要包括如下过程:

s1:根据设定的测试参数,利用shoc-master.zip工具,对gpu进行单精度浮点运算测试和双精度浮点运算测试,获取gpu的实际浮点运算值。

实际浮点运算值包括单精度实际浮点运算值和双精度实际浮点运算值,测试参数包括:待测试gpu的型号、序号和测试规模。其中,待测试gpu的序号指的是同时测试多个gpu时,当前gpu所在的设备的编号。gpu的测试规模为gpu上所运行数据的规模。

具体地,步骤s1包括如下过程:

s11:根据设定的测试参数,利用shoc-master.zip工具,对gpu进行单精度浮点运算测试和双精度浮点运算测试,获取gpu每周期运算次数实测值、gpu的核数实测值以及每核心频率实测值。

其中,gpu每周期运算次数实测值包括单精度每周期运算次数实测值和双精度每周期运算次数实测值,gpu的核数实测值包括单精度核数实测值和双精度核数实测值,每核心频率实测值包括单精度每核心频率实测值和双精度每核心频率实测值。

s12:根据gpu每周期运算次数实测值、gpu的核数实测值以及每核心频率实测值,利用公式:gpu的双精度实际浮点运算值=gpu每周期运算次数实测值*gpu的核数实测值*每核心频率实测值,计算得出gpu的双精度实际浮点运算值。

s13:根据gpu每周期运算次数实测值、gpu的核数实测值以及每核心频率实测值,利用公式:gpu的单精度实际浮点运算值=3*gpu每周期运算次数实测值*gpu的核数实测值*每核心频率实测值,计算得出gpu的单精度实际浮点运算值。

本实施例主要利用shoc基准程序来测试gpu服务器的单精度、双精度性能参数,具体是利用shoc-master.zip工具调用shoc基准程序中与gpu性能相关的程序和系统。shoc(scalableheterogeneouscomputing,可扩展的异构计算)是基准程序的集合,用于测试系统的性能、稳定性以及测试编写在这些系统中的软件。本实施例通过shoc-master.zip工具调用shoc中的与gpu性能相关的程序,选择单精度浮点数进行运算或者选择双精度浮点数进行运算,从而实现gpu的浮点运算性能测试。本实施例能够实现gpu单机测试,即针对单个gpu的浮点运算性能测试;也能够实现gpu集群的浮点运算能力测试,也就是实现gpu集群中多个不同型号gpu的浮点运算能力测试。尤其针对gpu集群中多个不同型号的gpu,不必一一对每个gpu进行测试,可以利用shoc基准程序一次测试出多个gpud的浮点运行性能。

当然,本实施例进行gpu浮点运算性能测试之前,首先需要执行步骤s0:搭建测试环境,该测试环境包括cuda平台,cuda平台用于运行shoc基准程序。也就是,通过在gpu上配置cuda平台,在cuda平台上运行与gpu浮点性能相关的shoc程序,从而检测到gpu的单精度浮点运算性能和双精度浮点运算性能。

具体地,搭建gpu测试环境,包括如下过程:

s01:根据所获取的第一加载指令,加载gpu驱动程序。

s02:根据所获取的安装指令,安装cuda平台。

s03:根据所获取的第二加载指令,在cuda平台上加载shoc-master.zip工具。

继续参见图1可知,获取gpu的实际浮点运算值之后,执行步骤s2:根据gpu每周期运算次数、gpu的核数以及每核心频率,计算得出gpu的标准浮点运算值。其中,标准浮点运算值包括单精度标准浮点运算值和双精度标准浮点运算值。

具体地,根据不同的浮点运算情况,步骤s2又包括:

s21:根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,利用公式:双精度标准浮点运算值=每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出双精度标准浮点运算值;

s22:根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,利用公式:单精度标准浮点运算值=3*每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出单精度标准浮点运算值。

s3:根据gpu的实际浮点运算值与标准浮点运算值的比值,计算得出gpu的效率值。

获取到gpu的实际浮点运算值和标准浮点运算值以后,按照单精度和双精度,分别计算gpu的单精度效率值和gpu的双精度效率值。gpu的单精度效率值为:gpu的单精度实际浮点运算值与gpu的单精度标准浮点运算值之比。gpu的双精度效率值为:gpu的双精度实际浮点运算值与gpu的双精度标准浮点运算值之比。

s4:判断gpu的效率值是否≥85%。

根据步骤s3中计算得出的gpu的单精度效率值和双精度效率值,分别判断gpu的效率值是否≥85%,从而确定gpu的单精度浮点运算性能和gpu的双精度浮点运算性能。

s5:如果是,判定gpu的浮点运行性能测试合格。

s6:如果否,判定gpu的浮点运算性能不合格。

下面以采用本实施例所编写的脚本,对型号为k80的gpu进行浮点性能测试为例,详细描述gpu浮点运算性能的测试方法。

(1)测试环境准备。

包括下载gpu驱动程序、cuda驱动程序和测试工具shoc-master.zip。

(2)配置编译环境。

(21)根据cuda驱动程序安装cuda平台。

首先,利用#sudoshcuda_8.0…run软件自动安装cuda平台,使gpu与cuda平台建立连接。需要注意的是本实施例中所安装的cuda驱动为厂家最新版本的cuda驱动,而不是厂家自带的cuda驱动。

其次,调用cuda中的环境变量配置文件,进行cuda环境配置并保存所配置的信息。例如:将以下内容添加至cuda中的环境变量配置文件~/.bashrc中:

exportld_library_path=/usr/local/cuda-8.0/lib64:$ld_library_path

exportpath=/usr/local/cuda-8.0/bin:$path。

然后,执行#source~/.bashrc命令,使环境变量配置文件生效;

然后,利用#nvcc–v命令,验证所安装的cuda平台是否正确。如果不正确重新安装,直到cuda安装正确为止。

(22)安装gpu驱动。

为了与cuda平台相匹配,本实施例中需要安装当前最新版本的gpu驱动。为了避免操作系统中自带的gpu基础驱动与最新版本的gpu驱动有冲突,首先卸载操作系统中自带的gpu基础驱动。

然后安装与cuda平台版本相匹配的gpu驱动。可以利用命令#sudoshxxx.run进行gpu驱动安装,其中xxx.run是gpu驱动文件。驱动安装完毕后,通过命令#nvidia-smi验证驱动安装是否正常。

(23)编译安装。

通过解压所下载的源码包,完成编译安装。

(3)进行gpu浮点运算测试。

通过#perl./tools/driver.pl-cuda-s4-d0,1,2,3-benchmarkmaxflops命令进行测试参数配置。其中,-s表示测试规模,即gpu上需要运行的数据的规模;-d表示在哪个device上运行程序,也就是gpu所在设备的序号;-benchmark表示只运行maxflops,即只运行单精度以及双精度性能测试,maxsflops表示单精度浮点运算,maxdflops表示双精度浮点运算。

执行命令#perl./tools/driver.pl,开始进行gpu浮点运算。首先,分别采集到单精度下的gpu每周期运算次数实测值、gpu的核数实测值以及每核心频率实测值,和双精度下的gpu每周期运算次数实测值、gpu的核数实测值以及每核心频率实测值。然后,利用公式:gpu的双精度实际浮点运算值=gpu每周期运算次数实测值*gpu的核数实测值*每核心频率实测值,以及公式:gpu的单精度实际浮点运算值=3*gpu每周期运算次数实测值*gpu的核数实测值*每核心频率实测值,分别计算得出gpu的单精度实际浮点运算值和双精度实际浮点运算值。

(4)获取测试结果。

根据gpu厂家所提供的gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,利用公式:双精度标准浮点运算值=每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出双精度标准浮点运算值;利用公式:单精度标准浮点运算值=3*每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出单精度标准浮点运算值。

再结合步骤(3)中计算得出的gpu的单精度实际浮点运算值和双精度实际浮点运算值,根据gpu的实际浮点运算值与标准浮点运算值的比值,计算得出gpu的单精度效率值和双精度效率值。

分别判断gpu的单精度效率值和双精度效率值是否≥85%;如果是,判定gpu的浮点运行性能测试合格,否则,判定gpu的浮点运算性能不合格。

从而获取到k80的浮点运算性能。

实施例二

在图1所示实施例的基础之上参见图2,图2为本申请实施例所提供的一种测试gpu浮点运算性能的系统的结构示意图。由图2可知,该系统主要包括实际浮点运算值测试模块、标准浮点运算值计算模块、gpu效率值计算模块和判断模块。该系统可以用于gpu单机测试和gpu集群测试。

其中,实际浮点运算值测试模块用于根据设定的测试参数,利用shoc-master.zip工具,对gpu进行单精度浮点运算测试和双精度浮点运算测试,获取gpu的实际浮点运算值。其中,实际浮点运算值包括单精度实际浮点运算值和双精度实际浮点运算值,测试参数包括:待测试gpu的型号、序号和测试规模。标准浮点运算值计算模块用于根据gpu每周期运算次数标称值、gpu的核数标称值以及每核心频率标称值,计算得出gpu的标准浮点运算值,标准浮点运算值包括单精度标准浮点运算值和双精度标准浮点运算值。gpu效率值计算模块用于根据gpu的实际浮点运算值与标准浮点运算值的比值,计算得出gpu的效率值。判断模块用于判断gpu的效率值是否≥85%,如果是,判定gpu的浮点运行性能测试合格,否则,判定gpu的浮点运算性能不合格。

进一步地,本实施例中测试gpu浮点运算性能的系统还包括测试环境搭建模块,用于搭建gpu测试环境,所述测试环境包括cuda平台。该测试环境搭建模块包括:gpu驱动程序加载单元、cuda平台安装单元和测试工具加载单元。其中,gpu驱动程序加载单元用于根据所获取的第一加载指令,加载gpu驱动程序;cuda平台安装单元用于根据所获取的安装指令,安装cuda平台;测试工具加载单元用于根据所获取的第二加载指令,在cuda平台上加载shoc-master.zip工具。

进一步地,标准浮点运算值计算模块,包括:双精度标准浮点运算值计算单元和单精度标准浮点运算值计算单元。其中,双精度标准浮点运算值计算单元用于根据gpu每周期运算次数、gpu的核数以及每核心频率,利用公式:双精度标准浮点运算值=每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出双精度标准浮点运算值。单精度标准浮点运算值计算单元用于根据gpu每周期运算次数、gpu的核数以及每核心频率,利用公式:单精度标准浮点运算值=3*每周期运算次数标称值*gpu的核数标称值*每核心频率标称值,计算得出单精度标准浮点运算值。

进一步地,实际浮点运算值测试模块,包括:双精度实际浮点运算值计算单元和单精度实际浮点运算值计算单元。其中,双精度实际浮点运算值计算单元用于根据gpu每周期运算次数实测值、gpu的核数实测值以及每核心频率实测值,利用公式:双精度标准浮点运算值=每周期运算次数实测值*gpu的核数实测值*每核心频率实测值,计算得出双精度标准浮点运算值。单精度标实际浮点运算值计算单元用于根据gpu每周期运算次数实测值、gpu的核数实测值以及每核心频率实测值,利用公式:单精度标准浮点运算值=3*每周期运算次数实测值*gpu的核数实测值*每核心频率实测值,计算得出单精度标准浮点运算值。

本实施例中测试gpu浮点运算性能的系统的工作原理和工作方法,在图1所示的实施例中已经详细阐述,两者之间可以互相参照,在此不再赘述。

综上所述,本申请所提供的系统,利用shoc基准程序能够同时测试一个或多个gpu的单精度和双精度浮点运行性能,从而能够简单便捷地获取单机gpu服务器的并行运算能力,或gpu服务器的集群性能,有利于大大提高gpu性能测试的效率。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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