一种用于预测GPU性能的方法和相应的计算机系统技术方案

技术编号:14397452 阅读:57 留言:0更新日期:2017-01-11 11:20
本发明专利技术涉及一种用于在设计阶段评估和预测GPU性能的方法,其包括:在有待评估的GPU芯片中运行一组测试应用程序;捕获一组标量性能计数器和向量性能计数器;基于所捕获的标量性能计数器和向量性能计数器针对不同芯片配置创建用于评估和预测GPU性能的模型;以及预测GPU芯片的性能分数并且识别GPU流水线中的瓶颈。此外,本发明专利技术还涉及一种用于在设计阶段评估和预测GPU性能的计算机系统。

【技术实现步骤摘要】

本专利技术大体上涉及计算机处理单元。具体地说,本专利技术涉及一种用于评估和预测并行处理单元性能的方法,尤其是涉及一种用于评估和预测图形处理单元(GPU)性能的方法以及相应的计算机系统。
技术介绍
GPU性能评估和预测对于芯片架构设计来说非常关键。芯片架构设计人员、片上系统(SOC)团队、市场团队、驱动器团队和游戏开发人员都需要快速准确识别GPU芯片中的瓶颈并且针对不同芯片配置和不同实际应用程序例如游戏台标志、典型游戏以及工作站迹线预测芯片性能。不同的利益相关者对GPU芯片有特定的要求。例如,GPU架构团队必须识别GPU瓶颈并且在IP(知识产权)设计之前评估针对新的架构特征的性能增益,SOC团队必须在芯片设计之前针对不同芯片配置评估性能和功率,市场团队必须在流片(Tapeout)之前评估性能和功率,而驱动器团队/游戏开发人员必须在流片之后识别瓶颈并且评估目标性能。但是,尽管RTL(RegisterTransferLevel:寄存器传输级)和AM(ArchitectureModel:架构模型)能够针对简单测试准确地预测GPU性能,但是它对于针对实际应用程序(数百帧)评价性能来说太慢了(1帧花费大约1周时间)。一些可用的方法能够针对实际应用程序预测性能,但是这些方法都不准确。这些可用的方法提供大于20%的预测误差,这不能满足GPU设计人员的要求。例如,一种公知的评估方法基于下列假设:(ⅰ)GPU流水线是完全平行的。实际上,出于各种原因,所述GPU流水线可能被阻塞。(ⅱ)绘制(draw)时间等于由瓶颈区块(bottleneckblock)所花费的区块时间。(ⅲ)总的应用程序时间等于一个应用程序中所有绘制的总和。没有考虑引起流水线阻塞的表面内存同步和背景切换。(ⅳ)基于所估计的应用程序时间和参考芯片所花费的时间来计算相对的评分。该方法的主要问题在于,它不能准确预测GPU性能。在大多数情况下,所评估的分数与实际硅芯片分数之间的预测误差大于20%。即使在优化之后,仍然有大约10%的预测误差。需要新的方法和相应的计算机系统来快速、准确地预测GPU性能(甚至是功率)并且评估GPU性能。
技术实现思路
为了快速、准确地评估和预测GPU性能并且克服现有方法或者模型的缺陷,本专利技术的各个方面提供一种用于评估和预测GPU性能的方法以及相应的计算机系统,它们使用所捕获的性能计数器和芯片配置作为输入来识别GPU芯片中的瓶颈并且预测GPU性能。根据本专利技术的一个方面,提供一种用于在设计阶段评估和预测GPU性能的方法,其包括:-在有待评估的GPU芯片中运行一组测试应用程序;-捕获一组标量性能计数器和向量性能计数器;-基于所捕获的标量性能计数器和向量性能计数器针对不同芯片配置创建用于评估和预测GPU性能的模型;以及-预测GPU芯片的性能分数并且识别GPU流水线中的瓶颈。在一个方面,所述基于所捕获的标量性能计数器和向量性能计数器针对不同芯片配置创建用于评估和预测GPU性能的模型包括:(ⅰ)在通过GPU流水线的多个区块执行绘制的时候,对GPU流水线中每个区块所花费的周期(cycle)进行模型化,其中,一个测试应用程序包括多个绘制;(ⅱ)对每个绘制所花费的周期进行模型化,并且识别GPU芯片的不同层级中的瓶颈;(ⅲ)通过累加一个指令缓存器中每个绘制所花费的周期来获得执行一个指令缓存器中的所有绘制所花费的总的绘制周期,其中,在运行所述测试应用程序时,测试应用程序的绘制存储在多个指令缓存器中;(ⅳ)将所述执行一个指令缓存器中的所有绘制所花费的总的绘制周期关联到针对GPU芯片的每个指令缓存器的per-CMB周期;(ⅴ)通过累加所述针对GPU芯片的每个指令缓存器的per-CMB周期来获得执行一个测试应用程序的存储在多个指令缓存器中的所有绘制所花费的总的per-CMB周期;(ⅵ)将所述执行一个测试应用程序的存储在多个指令缓存器中的所有绘制所花费的总的per-CMB周期关联到针对在GPU芯片中运行的一个测试应用程序的per-Test周期;(ⅶ)计算GPU芯片的性能分数。根据本专利技术的一个方面,提供了一种用于在设计阶段评估和预测GPU性能的计算机系统,其中,所述计算机系统配置为实施根据本专利技术所述的方法。根据本专利技术的另一个方面,提供了一种用于在设计阶段评估和预测GPU性能的计算机系统,其包括:-用于在有待评估的GPU芯片中运行一组测试应用程序的装置;-用于捕获一组标量性能计数器和向量性能计数器的装置;-用于基于所捕获的标量性能计数器和向量性能计数器针对不同芯片配置创建用于评估和预测GPU性能的模型的装置;以及-用于预测GPU芯片的性能分数并且评估GPU流水线中的瓶颈的装置。在一个方面,所述用于基于所捕获的标量性能计数器和向量性能计数器针对不同芯片配置创建用于评估和预测GPU性能的模型的装置包括:(ⅰ)用于在通过GPU流水线的多个区块执行绘制的时候对GPU流水线中每个区块所花费的周期进行模型化的机构,其中,一个测试应用程序包括多个绘制;(ⅱ)用于对每个绘制所花费的周期进行模型化并且识别GPU芯片的不同层级中的瓶颈的机构;(ⅲ)用于通过累加一个指令缓存器中每个绘制所花费的周期来获得执行一个指令缓存器中的所有绘制所花费的总的绘制周期的机构,其中,在运行所述测试应用程序时,测试应用程序的绘制存储在多个指令缓存器中;(ⅳ)用于将所述执行一个指令缓存器中的所有绘制所花费的总的绘制周期关联到针对GPU芯片的每个指令缓存器的per-CMB周期的机构;(ⅴ)用于通过累加所述针对GPU芯片的每个指令缓存器的per-CMB周期来获得执行一个测试应用程序的存储在多个指令缓存器中的所有绘制所花费的总的per-CMB周期的机构;(ⅵ)用于将所述执行一个测试应用程序的存储在多个指令缓存器中的所有绘制所花费的总的per-CMB周期关联到针对在GPU芯片中运行的一个测试应用程序的per-Test周期的机构;(ⅶ)用于计算GPU芯片的性能分数的机构。根据本专利技术所述的用于在设计阶段评估和预测GPU性能的方法以及用于在设计阶段评估和预测GPU性能的计算机系统至少具有如下优点:(ⅰ)更加准确地预测针对不同芯片配置的性能;(ⅱ)预测具有不同架构和特征的芯片配置;(ⅲ)预测非常接近真实芯片中的FPS(FramePerSecond:帧每秒)的FPS;(ⅳ)快速对所捕获的数据进行预处理。结合附图在考虑下面的详细描述的情况下更好地理解本专利技术。对本领域技术人员来说,从下面的说明书中可以明确获知的是,通过图解说明用于实施本专利技术的最佳方式来示出和描述本专利技术的实施方式。如将会意识到的那样,本专利技术包括其他实施方式并且其某些细节包括很多改进方案和变形方案,它们都没有离开本专利技术的范围。相应地,附图和详细的说明书应该被认为是对实质的解释而并非限制。附图说明下面参考附图通过举例的方式(但并不限于此)阐述本专利技术,其中:图1示出根据本专利技术的用于评估和预测GPU性能的方法的流程图。图2示出根据本专利技术的用于评估和预测GPU性能的方法的一个步骤的流程图。图3示出根据本专利技术的GPU流水线的一种实施方式。图4示出根据本专利技术的GPU流水线的PA(PrimitiveAssembler:基本汇编编译器)接口的一种实施方式。图5示出根本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201510387995.html" title="一种用于预测GPU性能的方法和相应的计算机系统原文来自X技术">用于预测GPU性能的方法和相应的计算机系统</a>

【技术保护点】
一种用于评估和预测GPU性能的方法,其包括:‑在有待评估的GPU芯片中运行一组测试应用程序;‑捕获一组标量性能计数器和向量性能计数器;‑基于所捕获的标量性能计数器和向量性能计数器针对不同芯片配置创建用于评估和预测GPU性能的模型;以及‑预测GPU芯片的性能分数并且识别GPU流水线中的瓶颈。

【技术特征摘要】
1.一种用于评估和预测GPU性能的方法,其包括:-在有待评估的GPU芯片中运行一组测试应用程序;-捕获一组标量性能计数器和向量性能计数器;-基于所捕获的标量性能计数器和向量性能计数器针对不同芯片配置创建用于评估和预测GPU性能的模型;以及-预测GPU芯片的性能分数并且识别GPU流水线中的瓶颈。2.根据权利要求1所述的方法,其中,所述基于所捕获的标量性能计数器和向量性能计数器针对不同芯片配置创建用于评估和预测GPU性能的模型包括:(ⅰ)在通过GPU流水线的多个区块执行绘制的时候,对GPU流水线中每个区块所花费的周期进行模型化,其中,一个测试应用程序包括多个绘制;(ⅱ)对每个绘制所花费的周期进行模型化,并且识别GPU芯片的不同层级中的瓶颈;(ⅲ)通过累加一个指令缓存器中每个绘制所花费的周期来获得执行一个指令缓存器中的所有绘制所花费的总的绘制周期,其中,在运行所述测试应用程序时,测试应用程序的绘制存储在多个指令缓存器中;(ⅳ)将所述执行一个指令缓存器中的所有绘制所花费的总的绘制周期关联到针对GPU芯片的每个指令缓存器的per-CMB周期;(ⅴ)通过累加所述针对GPU芯片的每个指令缓存器的per-CMB周期来获得执行一个测试应用程序的存储在多个指令缓存器中的所有绘制所花费的总的per-CMB周期;(ⅵ)将所述执行一个测试应用程序的存储在多个指令缓存器中的所有绘制所花费的总的per-CMB周期关联到针对在GPU芯片中运行的一个测试应用程序的per-Test周期;(ⅶ)计算GPU芯片的性能分数。3.根据权利要求2所述的方法,其中,所述对GPU流水线中每个区块所花费的周期进行模型化包括:基于性能计数器、寄存器状态、Ttrace和GPU的芯片配置参数中的至少一个来创建针对每个区块的参数周期模型。4.根据权利要求2所述的方法,其中,所述GPU流水线的多个区块至少包括固定功能区块、前端着色器、后端着色器和内存控制器。5.根据权利要求2所述的方法,其中,所述对每个绘制所花费的周期进行模型化包括:-将所述GPU流水线分成前端流水线和后端流水线;-将所述前端流水线所花费的时间描述为:Bottleneck_FE=Max(Block_time[0],Block_time[1],…,Block_time[FE_Block_num-1]),其中,FE_Block_num-1代表了所述前端流水线中所包含的区块的数量;-将所述后端流水线所花费的时间描述为:Bottleneck_BE=Max(Block_time[0],Block_time[1],…,Block_time[BE_Block_num-1]),其中,BE_Block_num-1代表了所述后端流水线中所包含的区块的数量;-基于每个绘制的不同组的参数对绘制周期进行模型化。6.根据权利要求2所述的方法,其中,所述识别GPU芯片的不同层级中的瓶颈包括:-将所述瓶颈识别为所述GPU流水线中具有最大周期的区块;以及-假设所述GPU流水线由n个区块组成,那么针对瓶颈区块的周期将会是:Bottleneck_time=Max(block_0,block_1,block_2,…,block_n-1)。7.根据权利要求2所述的方法,其中,所述将所述执行一个指令缓存器中的所有绘制所花费的总的绘制周期关联到针对GPU芯片的每个指令缓存器的per-CMB周期包括:-通过累加一个指令缓存器中每个绘制所花费的周期来导出执行一个指令缓存器中的所有绘制所花费的总的绘制周期;-通过使用映射函数,将所述执行一个指令缓存器中的所有绘制所花费的总的绘制周期关联到针对GPU芯片的每个指令缓存器的per-CMB周期。8.根据权利要求5所述的方法,其中,所述基于每个绘制的不同组的参数对绘制周期进行模型化包括:基于向量性能计数器导出下列变量:(ⅰ)vs_vs1_ratio=vs_latency/vs_1st_wave_latency;(ⅱ)front_end_shader_time=ls_1st_wave_latency+hs_1st_wave_latency+es_1st_wave_latency+gs_1st_wave_latency+vs_latency;(ⅲ)fe_draw_ratio=front_end_shader_time/total_draw_ttrace_latency;(ⅳ)out_perf_ratio=(Bottleneck_FE+Bottleneck_BE)/total_draw_ttrace_latency;(ⅴ)febe_ratio=(Bottleneck_FE+Bottleneck_BE)/perDraw_logged_cycles;其中,Ttrace代表了在所述前端着色器中用来描述针对每个着色器类型和波阵面的延迟的向量性能计数器,并且Ttrace记录了对每个波的处理,其包括开始时间和结束时间。9.根据权利要求8所述的方法,其中,所述基于每个绘制的不同组的参数对绘制周期进行模型化进一步包括:如果所述前端与所述后端没有重叠,那么在满足下列条件之一的情况下将运用等式Time_perdraw=Bottleneck_FE+Bottleneck_BE:(ⅰ)每个SE中前端着色器的波数小于2;(ⅱ)vs_vs1_ratio<1.1;(ⅲ)febe_ratio<1.1;如果所述前端与所述后端有重叠,那么在满足下列条件之一的情况下将运用等式Time_perdraw=Max(Bottleneck_FE,Bottleneck_BE+FE_Fill_Latency):(ⅰ)vs_vs1_ratio>1.1和fe_draw_ratio>=0.9;(ⅱ)fe_draw_ratio>0.9或者Bottleneck_BE>0.8*total_draw_ttrace_latency;如果未满足上述条件中的任一条件,那么能够从下列等式中导出per-draw时间:Time_perdraw=(Bottleneck_FE+Bottleneck_BE)/out_perf_ratio。10.根据权利要求2所述的方法,其中,所述将所述执行一个指令缓存器中的所有绘制所花费的总的绘制周期关联到针对GPU芯片的每个指令缓存器的per-CMB周期包括:-将执行一个指令缓存器中的所有绘制所花费的总时间导出为:Sum_percmb[cmb_id]=Σ0draw_num-1Time_perdraw[cmb_id][draw_id]]]>,其中,Time_perdraw[cmb_id][draw_id]代表了执行一个指令缓存器中每个绘制所花费的时间或者周期,draw_num代表了一个指令缓存器中绘制的数量,cmb_id代表了一个指令缓存器的标识;-通过使用映射函数,将所述执行一个指令缓存器中的所有绘制所花费的总的绘制周期映射到针对GPU芯片的每个指令缓存器的per-CMB周期。11.根据权利要求10所述的方法,其中,以如下方式通过使用映射函数将所述执行一个指令缓存器中的所有绘制所花费的总的绘制周期映射到针对GPU芯片的每个指令缓存器的per-CMB周期:Sum_percmb_correlated=Sum_percmb[cmb_id]*Function[mapping],其中,Sum_percmb_correlated代表了当一个指令缓存器中的所有绘制都并行运行时针对GPU芯片的每个指令缓存器的经关联的per-CMB周期,Sum_percmb[cmb_id]代表了串行执行一个指令缓存器中的所有绘制所花费的总的绘制周期,Fu...

【专利技术属性】
技术研发人员:杨建罗忠祥王国锦汪磊闫丽霞邵平平
申请(专利权)人:超威半导体上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1