并行计算实验.docx
- 文档编号:23179663
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:13
- 大小:999.93KB
并行计算实验.docx
《并行计算实验.docx》由会员分享,可在线阅读,更多相关《并行计算实验.docx(13页珍藏版)》请在冰豆网上搜索。
并行计算实验
实验
(一)多线程计算π,性能分析
一、实验内容及原理:
通过多线程方法,用C语言实现。
采用积分法,由如下公式求π:
并通过双向比较,分析性能:
1)计算量相同,线程数不同。
例如,N取1000,000,测试使用1、2、3、4……个线程时所需要的时间。
2)线程数相同,计算量不同。
例如,只考察单线程和双线程的性能对比,N分别取不同的数值。
二、程序流程图
三、实验结果:
(1)数据图表:
1)计算量相同,线程数不同。
N=1000,000,thread_num=1,2,3,4,5性能对比。
2)线程数相同,计算量不同。
thread_num=2,N取不同的数值。
(2)效果图:
1)计算量相同,线程数不同。
N=1000,000,thread_num=1,2,3,4,5性能对比。
2)线程数相同,计算量不同。
thread_num=2,N取不同的数值。
四、理论性能分析
首先,考虑单线程多个N的情况,随着N的加大,计算量加大,计算时间必然也会随着增加。
其次,考虑多线程固定N的情况,随着线程数增加,同时计算的数量在增加,计算时间必然会相应减少,但是会有一个极限值,不会随着线程数的增加而无限制的减少。
(值得注意的是,时间采用clock()计算精度不高。
)
五、实验结果分析
如上面截图所示,在单线程计算量不同的情况下,计算时间会随着计算量的增加而增加。
在多线程计算量相同的情况下,计算时间会相应减少。
六、总结展望
对于大量的重复式计算,我们可以利用所学习的并行知识解决问题,尤其像这种可以进行域分解的算法,我们完全可以创建多线程来减少计算时间,提高效率,相信以后的学习和工作中,并行会给我们带来更多的方便。
实验题目二:
3PCF计算多线程实现
一、实验内容
已知:
点集D、R。
定义D中的点为ai∈D,R中的点为bi∈R。
距离:
r1、r2、r3、err
求:
满足以下条件的三元组(空间中三角形)的数目
二、实验原理
对于R中所有点,判断两两之间是否满足距离r3,若满足,保存点对。
在D中每个点都和点对做比较,判断是否满足一边距离为r1,另一边距离为r2,若满足则累加。
三、程序流程图
四、实验结果:
(1)数据图表:
1)线程数相同,计算量不同
2)计算量相同,线程数不同
(2)效果图:
1)线程数相同,计算量不同2)计算量相同,线程数不同
六、理论性能分析
首先,本算法比起以往的算法的优势在于先计算出R中符合r3条件的点对,这样使得计算效率有所提升。
然后是本算法的并行实现也同样在于域分解,及对D中点并行处理,同R中点进行比较判断,所以同样可以提高效率。
在线程数相同的时候,随着计算量的增加,计算时间会相应增加,而这种增加是呈立方增加的。
而计算量不同的时候,计算时间也会随着线程数的增加而相应减少。
七、实验结果分析
实验结果与上述结果基本符合。
在线程数相同的时候,增大计算量会使得计算时间呈立方形式增加。
而在计算量相同的时候,增加线程数会使得效率有所提升,计算时间相应减少。
八、总结展望
对于3-PCF问题,始终没有突破性的算法来解决问题,但是,并行的引入已经使得我们提升了不少效率。
尤其在处理大量数据的时候,并行的优势体现的尤为明显,相信并行会占据越来越大的程序份额。
实验题目三:
MPI实现Jacobi迭代
一、实验内容
通过MPI实现Jacobi迭代,掌握怎样进行MPI的环境配置,熟悉MPI的六个基本接口,掌握怎样进行进程间的消息传递。
二、实验原理
迭代公式:
Jacobi迭代:
数据划分
Jacobi迭代:
通信
三、效果图:
四、程序流程图:
五、理论性能分析
用MPI实现Jacobi迭代,通过进程间通信来传递数据,进而实现每一轮的迭代。
显然,迭代次数越多,所需时间也就越长。
理论上来讲,随着进程数增加,效率会有所提升,,但也会有一个极限值。
六、实验结果分析
通过多次试验分析验证了上述结论,但是当数据量较小的时候,随着进程数增加,效率降低的现象会出现,而这也是可以理解的。
七、总结展望
用MPI实现Jacobi迭代,同样给了我们另一种解决问题的思路,虽然效率方面没有得到具体实例的比较和论证,但是多线程在具有相当数据量之后的优势还是相当明显的,而处理海量数据也是多线程或者多进程明显优于串行的地方。
实验题目:
基于MapReduce模型的Wordcount
作者:
解云涵
时间:
2011年5月10日
实验原理:
map
ƒ将数据源中的记录(文本中的行、数据库中条目等)作为map函数中的key*value对
–例如,(filename,line)
ƒmap()将生成一个或多个中间结果,以及与input相对应的一个outputkey
reduce
ƒmap操作结束后,所有与某指定outkey相对应的中间结果组合为一个列表(list)。
ƒreduce()函数将这些中间结果组合为一个或多个对应于同一outputkey的finalvalue
–(实际上每一个outputkey通常只有一个finalvalue)
实现方法:
按照老师所给的hadoop配置说明在ubuntu上配置好环境,然后使用Lib4中的数据做性能分析。
实验结果:
性能分析:
做了三种mapreduce
第一个是例子,ls.txt,的使用时间为map为3秒,reduce为6秒,共9秒
第二个是lab4其中一个文件,map为3秒,reduce为6秒,共9秒
第三个是整个lab4所有数据文件,共20个,总共时间为120秒,平均每个是6秒。
所以,当文件夹里是单个文件的时候,运行时间与文件大小无关,很明显ls.txt比lab4的文件小。
但是当我们将所有文件放到input文件夹后,20个文件平均的时间会缩小。
总结展望:
在此次hadoop环境配置中,不同的电脑,出现各种不同的问题。
配了一下午的环境才差不多搞定,有时候出现问题,无法得到解决,但是没有任何解决,过一段时间,就能运行下去,始终不知道为啥。
Hadoop还是挺强大的,他能在这么短时间内运行起mapreduce,解决大量数据。
我也较为深刻了解了mapreduce的理论知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行 计算 实验