多核计算机的程序设计

技术分类: 嵌入式系统  | 2008-05-04
来源:电子产品世界 | 作者:胡越明

  并行程序的优化包括分析程序中各个函数之间的调用关系,从而分析程序中的关键调用路径;分析程序中的热点,即执行时间最长地函数;分析线程的负载平衡情况等。多线程的程序中包含多个执行流,这些执行流在同步点上是相互相关的。关键路径是其中执行时间最长的执行路径。例如,对于图2(a)所示的线程执行流,在时间轴上的关键路径的例子如图2(b)所示,其中关键路径用特粗线表示,中粗线表示非关键路径上执行的线程,细线表示空闲的线程。良好的并行程序设计环境应当能够分析出这种关键路径,从而为程序减少程序的总体执行时间提供帮助。在图3示的线程流程图上,线程1是贯穿整个执行流程的线程,成为主线程。其余线程是在需要并行执行的期间建立的线程,成为子线程。

线程流程与关键路径

  分析线程的运行状态对于优化多线程程序设计十分重要,这种分析有助于程序员了解哪些程序段是影响整个程序运行时间的关键。从线程之间关系的角度,可以将线程的运行状态分成以下4种:

  •   巡航状态。这时线程处于独立的执行状态,保持高速运行,线程的运行不受其他线程的影响,也不影响其他线程的运行。
  •   开销状态。这是线程操作的开销,如线程的创建、关闭等。
  •   阻塞状态。这时线程正在等待外部事件,如同步和通信的等待。
  •   影响状态。这时线程处于执行状态,它阻碍了其他线程的执行,其他线程正在等待该线程。

  线程的并行化状况反映系统中创建的线程数量,可以分成空闲(idel)、串行(serial)、偏少(under-subscribed)、并行(parallel)和偏多(oversubscribed)几种情况。程序员在调试程序中去分析这种线程数量状况是一件烦琐的事情,通常借助于并行程序调试工具。

  支持这种线程调试和优化软件工具如Intel的Vtune。Vtune是一个性能测试工具软件,能够从程序的试运行中收集系统性能数据,显示出性能数据的时空图,包括显示函数调用关系图和程序中的热点。通过这个软件工具,可以对各种计算机系统的软件性能进行分析测试,包括各种采用Intel系统结构的嵌入式系统和多核的桌上型计算机系统,从而对并行程序进行调试和优化。该软件具有Windows版本和Red Hat Linux版本。

  Vtune使用高级性能分析技术查找性能瓶颈,能够提供程序流程的图形化视图,以帮开发人员快速确定关键函数和调用顺序并获得程序执行情况的高级别算法视图。Vtune能够对程序的运行中进行实时采样,经过分析后显示出线程的关键路径(critical path view),可以在线程时空图上标出线程的运行状态(timeline view),可以统计出线程在各种状态下所经历的时间比例(profile view),还可以分析出线程并行的状况以及时间比例(thread view)。调用关系图中清晰地显示出程序的流程,包括子程序调用关系以及程序的关键路径。

  Vtune的分析功能包括热点分析。所谓热点是指系统中发生大量活动的位置,如cache失效、分支预测失效、流水线停顿等。在Vtune中使用“计数器监视器”可以在运行时跟踪系统活动与资源消耗情况,帮助快速确定系统层面的性能问题。

1】【2】【3】【4

推荐文章

加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销