【问题标题】:What is the meaning of some parameters in metal by using xcode GPU capture?使用xcode GPU捕获金属中的一些参数是什么意思?
【发布时间】:2018-07-23 07:29:00
【问题描述】:
Xcode 提供每帧 GPU 捕获,我在一个金属演示中使用它。
当我深入研究函数drawIndexdPrimitive的性能时,我对一些参数感到困惑。
我想知道Texture Unit(Shader core) Time和stall time是什么意思。 Xcode 仅暗示它是纹理激活或停止。为什么它们加起来不等于 100%?纹理被激活是什么意思?
另一个问题是GPU环带宽是什么意思?数字 9.31 是否表示可用带宽?
【问题讨论】:
标签:
objective-c
xcode
gpu
metal
【解决方案1】:
着色器核心时间表示着色器执行 ALU 指令(即数学)所花费的时间。
纹理核心时间表示着色器从纹理中获取数据所花费的时间。
停顿时间表示着色器在执行其指令之前在另一个内核上等待的时间。
你得到的结果表明,着色器核心花费了大约 87.3% 的时间来等待纹理核心通过 GPU 总线获取数据并过滤数据,然后它才能真正执行数学指令
这意味着您的着色器没有充分利用着色器核心。
你可以做很多事情:
- 您可以在着色器中添加一些不相关的数学运算,而不会影响此着色器的性能
- 您可以使用不同的算法,这样您的数学运算就不会那么依赖纹理数据,也不需要等待太多时间。
- 您可以对绘制操作或顶点数据重新排序,从而减少纹理缓存未命中的频率,从而加快速度