高性能计算自选题目实验报告 - 图文 联系客服

发布时间 : 星期一 文章高性能计算自选题目实验报告 - 图文更新完毕开始阅读cc62ed9e541810a6f524ccbff121dd36a32dc4b0

4.实验效果

转换前图片:

转换后图片:

5.实验结果

使用不同的线程数(图片分块)来测试并行效果,实验的线程数为:1、2、3、4、5、6、7、8。其实,线程数为1时为串行程序。每个规模在同一线程数量上进行十次实验,最后取其平均值作为最后运行时间。主要通过计算每次实验的加速比来分析并行性能。

定义加速比:加速比=串行程序运行时间/并行程序运行时间。运行时间是计算这个问题线程所用的真实时间。

实验结果数据统计:

运行时间、加速比数据统计:

单位/ms

1线程 2线程 3线程 4线程 5线程 6线程 7线程 8线程 1 801 438 328 282 240 215 280 266 2 735 419 328 266 247 221 281 296 3 735 406 312 265 244 216 281 284 4 741 444 313 297 244 215 281 273 5 750 422 328 281 238 221 281 265 6 739 422 312 265 241 212 312 276 7 734 435 326 265 249 213 297 291 8 750 438 328 265 240 213 279 266 9 746 406 312 296 244 226 282 282 10 738 423 315 266 249 217 290 266 均值 746.9 425.3 320.2 274.8 243.6 216.9 286.4 276.5 加速比 1 1.756 2.333 2.717 3.066 3.443 2.607 2.701 6.结果分析

由以上数据统计可以看出,加速比都会随着矩阵规模的增大而提升(耗时会下降),即在问题规模不变时,在线程数越多,加速比会增大(耗时会减少)。从表中可以看到,并行程序加速比都会大于1,并且随着线程数的增多,加速比不断增大。

并行计算确实可以提高程序的运行效率,但是这个运行效率的提高并不是线性的提高的。也就是我们不可能获得线性加速比,因为多个线程/线程总是会引入一些代价。分布式内存程序通常需要跨物理传输数据,这比访问局部内存中的数据慢。相反,串行程序没有这些额外的开销。因此,想要达到一个具有线性加速比的并行程序是很难的。此外,随着线程个数的增多,通信开销也会增大,这就意味着需要更大的通信开销,因此这也是并行计算不能获得线性加速比的原因。如上表所示,线程7和线程8虽然加速比仍然大于1,但是与上一个线程相比加速比还是已经下降。