Chinaunix首页 | 论坛 | 博客
  • 博客访问: 476166
  • 博文数量: 133
  • 博客积分: 1235
  • 博客等级: 少尉
  • 技术积分: 1201
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-08 19:59
文章分类

全部博文(133)

文章存档

2023年(12)

2022年(3)

2018年(2)

2017年(4)

2016年(4)

2015年(42)

2014年(1)

2013年(12)

2012年(16)

2011年(36)

2010年(1)

分类: LINUX

2012-08-17 14:18:29

本文转自 http://software.intel.com/zh-cn/blogs/author/peter-wang/
作者: Peter Wang (Intel) (44 篇文章) 日期: 八月 12, 2012 在 7:14 下午

使用Intel VTune Amplifier XE可以帮助我们快速找到热点函数,计算CPU的消耗、进行并行性分析,进而优化算法,如调整线程上的任务分配、优化同步锁的使用、减少线程的等待时间等。

 优化后程序再次使用VTune进行分析,在Summary 报告中有Elapsed Time指标可以知道程序的整体性能提高。但是对于某个特定的热点程序如何评估它的性能提高呢?

 对于单线程的应用程序非常简单,只要比较前后的CPU时间就可以了。对于多线程程序就需要一定的估算技巧了。

 下面是使用产品的附例tachyon_vtune_amp_xe.zip,优化前后的报告。

报告中的CPU Time是所有核上统计的累加。至于串行和并行的数据可以按“》”扩展。

解释一下指标的名称

Idle: 程序轮到执行,但处于等待状态,不消耗CPU时间

Poor: 运行在串行状态,或接近于串行状态。如:8核的CPU上仅1-3个核在同时工作

OK: 程序执行时,较多的核在工作。如: 8核的CPU上4-7个核在工作

Ideal: 程序执行时,所有的核都在工作。

Over: 程序执行时, 并行线程大于核数。其实效率等同Ideal

(优化前)

我的平台是4核,上图中Poor的数据比较难以量化 – 是平均按照单核算还是二核算,抑或按1.5核算?其实我们可以观察timeline报告中CPU的利用率在1.1左右,由此估算出 grid_intersect 函数的执行时间为:14.786s/1.1 = 13.44s

 

(优化后)

 

 同理,改进后grid_intersect函数 的执行时间为20.835s / 3 = 6.95s

 我们可以知道grid_intersect函数的性能提升比为 13.44s / 6.95s = 1.93X

此结果虽不绝对准确,但也接近事实。


阅读(1589) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~