实验一:计算π
问题描述
实验提供了两种计算方法,一种使用积分方法,另一种采用随机数方法。本报告中采用积分方法。
计算公式:
程序流程图:
(
图
1)
函数流程图
(
图
2)
一组实验数据,计算规模:
500,000,000
性能分析:
根据Amdahl
定律,
Ws
中可测量的部分在此程序中所占比重很小,而线程建立与回收部分又难以与并行部分分开测量,因此这里只能做一下粗略的估算和感性的分析。按理想状况,如果
Ws
忽略不计的话,
S = p
,即加速比与线程数相等,这里在
p = 2
的时候表现得比较明显,
S = 1.985
,很接近
p = 2
,然而从上面的图表中可以看出,虽然线程数量的增加,建立线程所带来的开销对性能提升效果影响越来越大,虽然总体加速比在随线程数据增加而增大,但增长速度远没有线程数的增长速度快,而且越来越慢,如下图所示。
从图中还可以看到效率E
与代价C
的变化情况,虽然总体而言程序执行的速度提升了,但也可以很明显看到效率的降低与代价的增张。
(
图
3)
另一组实验数据图表,计算规模
1,000,000,000
下面是当线程数量(4
)固定时,计算规模与时间的关系。从图中可以看出,两者成线性关系,绘出的模型几乎是一条直线。
(
图
4)
线程数量固定时,计算规模(纵)与时间(横)的关系
总结展望:
通过此次简单的多线程编程作业,使我在以前学习的多线程基础知识的基础上又对并行计算有了更深一层的了解。通过在多核操作系统中的实际运行与实验,加上与课堂上所学习的关于并行计算的理论知识以及相关的性能评价标准的结合,使心中大致有了一个比较完整的并行计算的概念与轮廓,初步了解了一些并行计算中的影响因素。这只是一个小的演示程序,很多并行计算中很关键的问题这个程序中并没有涉及到,但通过此次简单的了解,为今后更深一层次的学习打下了良好的基础。
转载于:https://blog.51cto.com/neosong/565192