英特尔® 图形性能分析器(英特尔® GPA) 平台分析器能够在一定时间内使用您的代码显示 CPU 和 GPU.上不同任务的执行情况。 这样可帮助您了解游戏中基于任务的问题,进而优化 CPU 和 GPU 中的计算和渲染任务。 英特尔 GPA 平台分析器利用应用运行过程中收集到的轨迹数据,为您提供代码在所有线程上的执行情况,并关联 CPU 与 GPU 上的工作负载。
之前我们介绍了如何使用面向 DirectX 的英特尔 GPA 帧分析器*进行分析。 本文将逐步介绍如何进行 CPU 密集型离线工作流分析。
<strong>使用英特尔® 图形性能分析器平台分析器分析轨迹捕获</strong>
点击 Analyze Application,如下所示。 该特性支持您浏览二进制转换成希望分析并运行的游戏。 英特尔 GPA monitor 将代码注入游戏之中以提取分析数据。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-893-1-1.png…; alt=""></center>
1. 分析应用窗口
如果您的应用属于 CPU 密集型应用,请捕获一个轨迹,以便在英特尔 GPA 平台分析器中打开,并对该应用进行分析。 如果属于 GPU 密集型应用,请捕获一个帧。 如果使用英特尔 GPA 系统分析器,请点击摄像头按钮以捕获帧,或点击红色按钮以捕获轨迹。 如果使用 HUD 快捷键,默认 Ctrl+Shift+C 为捕获帧的热键,而 Ctrl+Shift+T 为捕获轨迹的热键。
我们将捕获轨迹以使用英特尔 GPA 平台分析器进行分析,如下所示。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-894-1-2.png…; alt=""></center>
2. 英特尔® GPA 系统分析器
打开英特尔 GPA 系统分析器。 左侧为轨迹列表。 双击捕获的最新轨迹。 轨迹打开后,您会看到几个不同的窗口(如下所示)。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-895-1-3.png…; alt=""></center>
3. 英特尔 GPA 平台分析器:打开轨迹
轨迹加载后,主窗口显示相关时间数据的时间线。
窗口底部显示捕获轨迹时启用并记录的所有指标。
屏幕中间显示捕获轨迹时正在运行的所有线程。
顶部显示 GPU 帧分隔符和 CPU 帧分隔符,以及所出现的任务。
我们来重点看一下 CPU 离线分析。 请注意,轨迹的持续时间大约为 5 秒。 这一数字可在图形监控器的分析部分更改。
我们将屏幕放大,看看轨迹的细微部分。 点击并拖动(使用鼠标左侧的按钮,然后释放)将这部分放大。 放大后可以获得三个帧,相关数据如下所示。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-896-1-4.png…; alt=""></center>
4. 放大并选择帧
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-897-1-5.png…; alt=""></center>
5. 英特尔 GPA 平台分析器
放大三个帧后,我们来看看具体的栏。
<strong>帧栏</strong>
在帧栏中,您可以查看单独的 GPU 和 CPU 帧计时。 请注意,颜色表示相同的 CPU 和 GPU 帧之间相互关联。 例如,CPU 112 帧的颜色与 GPU 112 帧相同。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-898-1-6.png…; alt=""></center>
6. 英特尔 GPA 平台分析器: GPU 帧
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-899-1-7.png…; alt=""></center>
7. 英特尔 GPA 平台分析器: CPU 帧
我们可以查看单独的持续时间,也可以计算 CPU 帧启动与 GPU 帧启动时的区别。
<strong>渲染和 GPGPU 栏</strong>
虚线以上的都在 GPU 上执行。 红色交叉线框区域(如下所示)表示当前的调用。 您可以追踪当前某个调用何时产生、何时执行。 您将看到当前调用何时执行,以及 GPU 帧何时结束,这样有助于计算单帧的延迟。 您可以查看 CPU 何时提交当前调用,以及 GPU 何时完成该调用。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-900-1-8.png…; alt=""></center>
<strong>线程面板</strong>
您可以查看线程何时运行,何时需要操作系统切换环境,以及同步化何时进行。 此外,您还可以查看线程上叠加的 GPU 工作,当 GPU 或 CPU 繁忙时谁来帮助建立相关性,并识别工作负载是 CPU 密集型还是 GPU 密集型。 你可以查看各个 DirectX API 调用以及用户定义的调用是否可用。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-901-1-9.png…; alt=""></center>
9. 英特尔平台分析器: 线程栏
<strong>平台指标</strong>
此处显示的指标是我们在 HUD 分析文件中设定的指标。 如果轨迹由英特尔 GPA 系统分析器提取,指标则为当时英特尔 GPA 系统分析器中的指标。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-902-1-10.pn…; alt=""></center>
10. 英特尔 GPA 平台分析器: 平台指标栏
<strong>统计面板</strong>
该面板与您的选择同步更新。 根据您的选择,该面板可显示 GPU 利用率、OpenCL™ 内核,或用户定义的函数或 DirectX 调用等任务。 该面板还可识别轨迹中部分区域的热点。 例如,如果突出显示某部分,统计面板将会有所变化,如下所示。 您可以查看指定区域的任务时间、GPU 时间和 GPU 队列时间。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-903-1-11.pn…; alt=""></center>
11. 英特尔 GPA 平台分析器: 统计栏
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-904-1-12.pn…; alt=""></center>
12. 选择区域和统计面板变化
<strong>图例区域</strong>
您可以关掉几部分,以降低 UI 的复杂程度。 该部分可以通过清空复选框删除。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-905-1-13.pn…; alt=""></center>
13. 英特尔 GPA 平台分析器: 图例面板
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001223-906-1-14.pn…; alt=""></center>
14. 图例面板中的 Platform metrics 取消选中后的英特尔 GPA 平台分析器
文章来源:
<a href="https://software.intel.com/zh-cn/articles/cpu-bound-offline-analysis-wi…;英特尔开发人员专区