| 最终修改于 : | 2009年04月03日 04:06 |
评级 |
|
此步骤中,您将运行并发性分析,了解应用程序是否有效利用了所有处理器内核,并识别哪些串行化程度较高的代码需要并行化。
检查并发性
要运行并发性分析,在 Amplifier 工具栏中选择 Concurrency - Where is my concurrency poor? 并单击 Profile。矩阵应用程序计算完毕退出时,Amplifier 会确定结果并打开 Concurrency 窗口:

Concurrency 窗口和 Summary 选项卡均表明,整个矩阵应用程序都是串行化的。CPU Time by Utilization 列中的红条表示处理器多核利用率低下。在Summary 选项卡显示中只有 0 或 1 个运行线程的 CPU 时间。
请注意,耗费串行时间最多的函数是 algorithm_3,如 Hotspots:Bottom-up 窗口所示。该模块很有可能是实现并行的良机。双击 algorithm_3 查看源代码,识别串行时间最多的代码行。
重新生成应用程序
在此步骤中,您将重新生成并行化的矩阵应用程序。
将性能与基准相比较
在命令行窗口内再次运行新生成的应用程序。

此步骤中,您将在修改后的矩阵应用程序上再次运行并发性数据收集。
请注意,algorithm_3 现在已不存在利用率低下的时间。但仍有一些串行时间(CPU 时间利用率以橘黄色条标记,属于OK 类型),您可尝试进行优化。
注意:该应用程序的修改版使用了线程间同步原语。在运行并发性或锁定和等待(Locks and Watis)分析时,Amplifier 会分析这些原语,这导致确定分析结果阶段的时间延长,因此增加了应用程序的总用时。
| 2009年04月21日 08:37
thorlee
| 学习 学习~~~ |
| 2009年04月25日 03:55
rong | 各个颜色代表什么意思 |
| 2009年04月27日 10:53
weiwei22844 | 我的怎么没有黄色的那段啊 |
| 2009年05月11日 01:18
whusunny
|
我的程序运行结果(各两次): 单线程Elapsed Time 17.489S(17.769S),CPU Time 17.462S(17.750S); 多线程(测试了两次)Elapsed Time 9.955S(10.199S),CPU Time 17.744S(18.176S)。 系统配置:PD3.00GHz,0.99GBRAM。 运行时环境:WinXP SP3,TTPlayer,EditPlus,飞鸽,Foxit和TheWorld。 似乎没有很大差距…… 这里的Elapsed Time 做何解释?? |
| 2009年05月11日 01:45
whusunny
|
PS: 使用的是parallel_studio_beta_update2和VS2005编译运行。 CPU Time是两个CPU各自运行时间之和; Elapsed Time是进程运行总时间。 |

nyeboy198826
30
注册用户
哪能看出来他全是串行化了?