• 清除cad加速器 > 流水线优化
  • 流水线优化

    免费下载 下载该文档 文档格式:PDF   更新时间:2004-12-02   下载次数:0   点击次数:1
    文档基本属性
    文档语言:Simplified Chinese
    文档格式:pdf
    文档作者:史殿林
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    Chapter 10. Pipeline Optimization 流水线优化
    金小刚 Email: jin@cad.zju.edu.cn 浙江大学CAD&CG国家重点实验室
    简 介
    "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." - Donald Knuth
    绘制图象时,采用的是一个基 于流水线的结构. 包含三个概念层:application, geometry, rasterizer. 流水线结构决定了其中最慢的一层永远是瓶颈, 也是我们优化中最应重视的.
    优化绘制流水线与优化流水线处理器类似,主要 包含两步: (1). 找出流水线的瓶颈 (2). 优化该层.如果性能仍未达到要求,则重复 第一步. 瓶颈的位置是随不同帧动态变化的.在某一帧, 由于有大量的细小三角形需要绘制,几何层可能 是瓶颈;而在另一帧,由于三角形覆盖了屏幕的 大半部分,光栅化层可能变成瓶颈.
    利用流水线构造的另一个要素
    当最慢的层不能再优化时,则尽量让其它层满负 荷工作,直至速度接近最慢的层. 这不会改变系统的性能,因为最慢层的速度没有 变化.例如,假设应用层为瓶颈,耗时50毫秒, 其它层耗时25毫秒.这意味着在不改变绘制流水 线速度的情况下,几何和光栅化层可以充分利用 这50毫秒时间.我们可以采用更精致的光照明模 型,加入阴影,加入反射等来提高绘制的真实程 度.
    把流水线划分成application, geometry and rasterizing三层只是概念上的划分.根据系统的 结构,真正的流水线层可能与此不同.例如,假 如应用层和几何层都在单个CPU上实现,则优化 时应把他们当成一个层来看待. 在优化流水线过程中,应先尽量提高绘制速度, 然后让不是瓶颈的层耗费与瓶颈层一样的时间. 在流水线优化时,
    永远记住"Know Your Architecture".
    找出瓶颈
    优化过程是一个非常费时的过程,因此对图形流 水线中的每一层都进行优化是不合适的. (1). 如果对每一层都进行优化,整个绘制性能肯 定能得到提高,但需要耗费程序员大量的时间, 并有可能对绘制精度进行不必要的折衷. (2). 优化每一层的另一个缺点是我们不能确定流 水线中的哪些层不是瓶颈层.我们可以在不影响 整体性能的情况下,充分利用这些非瓶颈层来得 到更高的绘制质量.
    优化流水线的第一步为找出瓶颈
    对于任意给定的一帧,总是存在一个瓶颈,而这个瓶颈决定了 绘制的速度.我们的目的是查到这个瓶颈并消除它. 瓶颈不能简单地通过对进程计时来找到.因为这样得到的是从 绘制开始到结束,也即数据经过整个流水线的时间. 比较合理的方法为在源代码的某处开始计时(例如,在一清屏 操作之后),并在该位置下次被执行到时终止计时.这样我们 可以得到瓶颈层的执行时间,但并非瓶颈位置. 由于绘制一幅图象的总时间为瓶颈层的时间,而瓶颈可以是应 用层,几何层,光栅化层或者层之间的通信(例如:CPU和 加速卡之间的总线完全有可能是瓶颈).我们可以对每个层进 行计时,但这通常是很困难的,因为光栅化层和几何层通常在 图形硬件中执行.
    一种寻找瓶颈的方法为设立一系列测试,其中每 次测试在某一时刻只影响一层.如果整个绘制时 间受到影响,则我们已找到瓶颈. 我们可以保持测试层的负荷(Workload)不变,而 减少其它层的负荷.如果系统的性能没有发生变 化,则负荷保持不变的层即为瓶颈层. 下面我们将具体讲述测试方法.
    测试应用层
    如果所用的平台提供度量处理器负荷的工具,则 该工具可以用来检测你的程序是否百分之百地利 用了CPU的处理能力. 对于Unix操作系统,可用top或者osview命令来 显示进程在CPU上的负荷.对于Windows操作系 统,可用任务管理器来显示进程在CPU上的负荷. 如果CPU的使用率接近100%,则程序为CPU受 限的(CPU-Limited).
    但这也不是十分安全的.因为你可能在等待硬件 完成一帧,而等待操作通常执行为一"busy-wait" 操作.采用代码仿真器(code profiler)是一种更好 的选择,它可以用来找出时间花在何处,分析代 码的潜在问题或瓶颈所在 . 如果几何层也在CPU上执行,则在采用该技术时, 我们无法辨别应用层和几何层. AMD提供了CodeAnalyst,可以用来分析和优化 CPU上运行的代码.Intel提供了VTune Analyzer, 可以用来分析时间花在何处.

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • cad加速器  cad启动加速器  中望cad加速器文件  cad加速器下载  cad2011加速器  cad清除命令  清除广厦cad破解  cad清除图层  cad清除垃圾命令