一种测试GPU的方法及装置与流程

文档序号:11950002阅读:1110来源:国知局
一种测试GPU的方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种测试GPU(Graphics Processing Unit,图形处理器)的方法及装置。



背景技术:

GPU是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。GPU根据图形图像计算的特点设计。一块GPU设备上通常集成了数百至上千的轻量级计算核心,针对相互独立的SIMD(Single Instruction Multiple Data,单指令多数据流),MIMD(MultipleInstructionStreamMultipleDataStream,多指令流多数据流)计算具有极高的计算能力。由于其并行加速等特性,GPU已经应用到各个领域。

现有技术中,在对GPU进行测试时,一般需要借助专用的测试软件,需要搭建复杂的测试平台。通过人工对测试软件进行操作,对测试平台进行调试。总之,现有技术中对GPU测试比较复杂。



技术实现要素:

本发明实施例提供了一种测试GPU的方法及装置,能够更加简单地实现对GPU的测试。

一方面,本发明实施例提供了一种测试GPU的方法,包括:

S1:预先设置GPU的测试脚本,所述测试脚本中包括至少一个计算任务;

S2:执行所述测试脚本;

S3:根据所述测试脚本控制所述GPU处理所述测试脚本中的所述至少一个计算任务;

S4:根据所述GPU对所述至少一个计算任务的处理结果,确定所述GPU的性能。

进一步地,所述S1,包括:

在所述测试脚本中设置在线程内完全依赖的求和计算的第一计算任务和在线程内部分依赖的求和计算的第二计算任务;

所述S3,包括:

根据所述测试脚本控制所述GPU分别处理所述第一计算任务和所述第二计算任务;

所述S4,包括:

分别获取所述GPU处理所述第一计算任务所需要的第一时间和所述GPU处理所述第二计算任务所需要的第二时间;

根据所述第一时间和所述第二时间,确定所述GPU的性能。

进一步地,所述S1,包括:

在所述测试脚本中设置规约求和的第三计算任务;

所述S3,包括:

根据所述测试脚本控制所述GPU处理所述测试脚本中的所述规约求和的第三计算任务;

所述S4,包括:

确定所述GPU在处理所述规约求和的第三计算任务时的第一单位时间运算次数;

根据所述第一单位时间运算次数,确定所述GPU的性能。

进一步地,所述S1,包括:

在所述测试脚本中设置不进行分块优化的矩阵计算的第四计算任务和进行分块优化的矩阵计算的第五计算任务;

所述S3,包括:

根据所述测试脚本控制所述GPU分别处理所述第四计算任务和所述第五计算任务;

所述S4,包括:

分别获取所述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是本发明一实施例提供的一种测试GPU的方法的流程图;

图2是本发明一实施例提供的另一种测试GPU的方法的流程图;

图3是本发明一实施例提供的又一种测试GPU的方法的流程图;

图4是本发明一实施例提供的再一种测试GPU的方法的流程图;

图5是本发明一实施例提供的一种测试GPU的装置的示意图;

图6是本发明一实施例提供的另一种测试GPU的装置的示意图。

具体实施方式

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

如图1所示,本发明实施例提供了一种测试GPU的方法,该方法可以包括以下步骤:

S1:预先设置GPU的测试脚本,所述测试脚本中包括至少一个计算任务;

S2:执行所述测试脚本;

S3:根据所述测试脚本控制所述GPU处理所述测试脚本中的所述至少一个计算任务;

S4:根据所述GPU对所述至少一个计算任务的处理结果,确定所述GPU的性能。

在本发明实施例中,设置测试脚本,在测试脚本中设置至少一个计算任务,通过执行脚本控制GPU处理该至少一个计算任务,根据处理结果确定所述GPU的性能,无需人工操作测试软件通过执行测试脚本自动实现测试,更加简单地实现对GPU的测试。

在本发明一实施例中,所述S1,包括:

在所述测试脚本中设置在线程内完全依赖的求和计算的第一计算任务和在线程内部分依赖的求和计算的第二计算任务;

所述S3,包括:

根据所述测试脚本控制所述GPU分别处理所述第一计算任务和所述第二计算任务;

所述S4,包括:

分别获取所述GPU处理所述第一计算任务所需要的第一时间和所述GPU处理所述第二计算任务所需要的第二时间;

根据所述第一时间和所述第二时间,确定所述GPU的性能。

如图2所示,本发明实施例提供的一种测试GPU的方法,包括:

步骤201:预先在GPU的测试脚本中设置在线程内完全依赖的求和计算的第一计算任务和在线程内部分依赖的求和计算的第二计算任务。

步骤202:执行测试脚本。

步骤203:根据测试脚本控制GPU分别处理第一计算任务和第二计算任务。

步骤204:分别获取GPU处理第一计算任务所需要的第一时间和GPU处理第二计算任务所需要的第二时间;

步骤205:根据第一时间和第二时间,确定GPU的性能。

在本发明实施例中,第一计算任务和第二计算任务可以主要是基本运算:加法、乘法、除法、正弦、乘加等。测试数据可以包括单精度、双精度数据类型。根据第一时间和第二时间,可以确定GPU对独立代码的自动优化功能。

在线程内完全依赖的求和计算的第一计算任务可以通过以下代码实现:

在线程内部分依赖的求和计算的第二计算任务可以通过以下代码实现:

在本发明一实施例中,所述S1,包括:

在所述测试脚本中设置规约求和的第三计算任务;

所述S3,包括:

根据所述测试脚本控制所述GPU处理所述测试脚本中的所述规约求和的第三计算任务;

所述S4,包括:

确定所述GPU在处理所述规约求和的第三计算任务时的第一单位时间运算次数;

根据所述第一单位时间运算次数,确定所述GPU的性能。

如图3所示,本发明实施例提供的一种测试GPU的方法,包括:

步骤301:预先在GPU的测试脚本中设置规约求和的第三计算任务。

步骤302:执行测试脚本。

步骤303:根据测试脚本控制GPU处理测试脚本中的规约求和的第三计算任务。

步骤304:确定GPU在处理规约求和的第三计算任务时的第一单位时间运算次数。

步骤305:根据第一单位时间运算次数,确定GPU的性能。

通过第一单位时间运算次数可以确定GPU在处理规约求和的处理速度。

在本发明实施例中,可以将GPU的测试规模配置为:block的数量为1、thread的数量为32、数组大小为256;或者,block的数量为128、thread的数量为64、数组大小为1024;或者,block的数量为128、thread的数量为256、数组大小为1024;或者,block的数量为512、thread的数量为512、数组大小为10M。

规约求和的第三计算任务可以通过以下代码实现:

在本发明一实施例中,所述S1,包括:

在所述测试脚本中设置不进行分块优化的矩阵计算的第四计算任务和进行分块优化的矩阵计算的第五计算任务;

所述S3,包括:

根据所述测试脚本控制所述GPU分别处理所述第四计算任务和所述第五计算任务;

所述S4,包括:

分别获取所述GPU处理所述第四计算任务时的第二单位时间运算次数,以及所述GPU处理所述第五计算任务时的第三单位时间运算次数;

根据所述第二单位时间运算次数和所述第三单位时间运算次数,确定所述GPU的性能。

如图4所示,本发明实施例提供的一种测试GPU的方法,包括:

步骤401:预先在GPU的测试脚本中设置不进行分块优化的矩阵计算的第四计算任务和进行分块优化的矩阵计算的第五计算任务。

步骤402:执行测试脚本。

步骤403:根据测试脚本控制GPU分别处理第四计算任务和第五计算任务。

步骤404:分别获取GPU处理第四计算任务时的第二单位时间运算次数,以及GPU处理第五计算任务时的第三单位时间运算次数。

步骤405:根据第二单位时间运算次数和第三单位时间运算次数,确定GPU的性能。

在本发明实施例中,矩阵计算可以是矩阵乘法计算。矩阵计算中涉及内存读写、大量乘累加操作,通过第二单位时间运算次数和第三单位时间运算次数可以确定出GPU的计算能力。通过不进行分块优化的矩阵计算和进行分块优化的矩阵计算,可以确定出分块优化对GPU的处理速度的影响。

不进行分块优化的矩阵计算的第四计算任务可以通过以下代码实现:

进行分块优化的矩阵计算的第五计算任务可以通过以下代码实现:

在本发明一实施例中,还包括:

根据所述测试脚本获取向所述GPU提出求和指令时指令点调用的时间;

根据所述指令点调用的时间,确定所述GPU的性能。

在GPU计算中,由主机(host)调用GPU指令。在本发明实施例中,通过获取向GPU提出求和指令时指令点调用的时间,可以确定GPU的指令调度延迟和指令执行延迟。在本发明实施例中,可以预先指定block数和thread数来确定指令调用延迟和指令执行延迟。

本发明实施例可以通过以下代码实现:

在本发明实施例中,可以在表1所示的测试环境中实现:

表1

为了更准确的反映GPU的性能,block和thread以及内存的设置需要考虑到GPU的架构的相关参数的上限。在本发明实施例中,可以参考”NVIDIA Kepler GK110GK210Architectrue Whitepaper”。其中,Tesla K80采用两颗基于Kepler架构的GK210GPU,每颗GPU内建2496个CUDA核心并配备12GB GDDR5内存,内存带宽为240GB/s。因此Tesla K80共计4992个CUDA核心和24GB GDDR5内存,总带宽480GB/s。

本发明实施例可以实现基于CUDA(Compute Unified Device Architecture,统一计算设备架构)的GPU的测试,可以对GPU以下性能进行测试:指令调度延迟、指令执行延迟、规约求和、自动并行优化、矩阵乘法、内存传输速度、内存读写访问速度、分页锁定内存访问。

在本发明实施例可以实现在Linux操作系统基础上,CUDA开发编译环境下,针对NVIDIA Tesla架构Kepler系列的K20、K40、K80型号GPU进行相关测试。测试内容可以为计算机辅助工程设计中常用的基本运算方法:加、乘、除、乘累加、正弦、矩阵乘法等操作在单精度和双精度下的不同表现,以得到不通型号的GPU在特定的CPU和芯片组架构环境下,影响性能的因素以及表现能力。

如图5、图6所示,本发明实施例提供了一种测试GPU的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图5所示,为本发明实施例提供的一种测试GPU的装置所在设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图6所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种测试GPU的装置,包括:

设置单元601,用于设置GPU的测试脚本,所述测试脚本中包括至少一个计算任务;

执行单元602,用于执行所述测试脚本;

控制单元603,用于根据所述测试脚本控制所述GPU处理所述测试脚本中的所述至少一个计算任务;

第一确定单元604,用于根据所述GPU对所述至少一个计算任务的处理结果,确定所述GPU的性能。

在本发明一实施例中,所述设置单元,用于在所述测试脚本中设置在线程内完全依赖的求和计算的第一计算任务和在线程内部分依赖的求和计算的第二计算任务;

所述控制单元,用于根据所述测试脚本控制所述GPU分别处理所述第一计算任务和所述第二计算任务;

所述第一确定单元,用于分别获取所述GPU处理所述第一计算任务所需要的第一时间和所述GPU处理所述第二计算任务所需要的第二时间,根据所述第一时间和所述第二时间,确定所述GPU的性能。

在本发明一实施例中,所述设置单元,用于在所述测试脚本中设置规约求和的第三计算任务;

所述控制单元,用于根据所述测试脚本控制所述GPU处理所述测试脚本中的所述规约求和的第三计算任务;

所述第一确定单元,用于确定所述GPU在处理所述规约求和的第三计算任务时的第一单位时间运算次数,根据所述第一单位时间运算次数,确定所述GPU的性能。

在本发明一实施例中,所述设置单元,用于在所述测试脚本中设置不进行分块优化的矩阵计算的第四计算任务和进行分块优化的矩阵计算的第五计算任务;

所述控制单元,用于根据所述测试脚本控制所述GPU分别处理所述第四计算任务和所述第五计算任务;

所述第一确定单元,用于分别获取所述GPU处理所述第四计算任务时的第二单位时间运算次数,以及所述GPU处理所述第五计算任务时的第三单位时间运算次数,根据所述第二单位时间运算次数和所述第三单位时间运算次数,确定所述GPU的性能。

在本发明一实施例中,还包括:

获取单元,用于根据所述测试脚本获取向所述GPU提出求和指令时指令点调用的时间;

第二确定单元,用于根据所述指令点调用的时间,确定所述GPU的性能。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明各个实施例至少具有如下有益效果:

1、在本发明实施例中,设置测试脚本,在测试脚本中设置至少一个计算任务,通过执行脚本控制GPU处理该至少一个计算任务,根据处理结果确定所述GPU的性能,无需人工操作测试软件通过执行测试脚本自动实现测试,更加简单地实现对GPU的测试。

2、在本发明实施例中,在测试脚本中设置规约求和的计算任务,通过控制GPU对简单的规约求和进行处理即可实现对GPU的处理速度的测试。

3、在本发明实施例中,矩阵计算中涉及内存读写、大量乘累加操作,通过第二单位时间运算次数和第三单位时间运算次数可以确定出GPU的计算能力。通过不进行分块优化的矩阵计算和进行分块优化的矩阵计算,可以确定出分块优化对GPU的处理速度的影响。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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