通过使用xcode GPU捕获,金属中某些参数的含义是什么?

时间:2018-07-23 07:29:01

标签: objective-c xcode gpu metal

Xcode提供每帧GPU捕获,我在金属演示中使用它。 当我深入了解函数drawIndexdPrimitive的性能时,我对某些参数感到困惑。 enter image description here

我想知道纹理单元(着色器核心)时间和停顿时间的含义是什么。 Xcode仅暗示其处于活动状态或停顿。为什么它们加起来不等于100%?活跃的纹理是什么意思? 另一个问题是GPU环形带宽的含义是什么?数字9.31是否表示可用带宽?

1 个答案:

答案 0 :(得分:1)

着色器核心时间表示您的着色器在执行ALU指令(即数学)上花费的时间。

纹理核心时间表示着色器花费多少时间从纹理中获取数据。

停顿时间表示着色器在可以执行指令之前在另一个内核上等待的时间。

您得到的结果表明,着色器核心花费了大约87.3%的时间,等待纹理核心通过GPU总线获取数据并过滤数据,然后才能实际执行数学指令

这意味着您的着色器没有充分利用着色器核心。

您可以做一些事情:

  • 您可以向着色器添加一些不相关的数学,而不会影响该着色器的性能
  • 您可以使用其他算法,这样您的数学就不会像纹理数据那样依赖并且不需要等待那么长时间。
  • 您可以对绘制操作或顶点数据进行重新排序,以使纹理缓存未命中的频率降低,因此更快