实验一多线程计算π及性能分析.docx
- 文档编号:12050329
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:15
- 大小:374.97KB
实验一多线程计算π及性能分析.docx
《实验一多线程计算π及性能分析.docx》由会员分享,可在线阅读,更多相关《实验一多线程计算π及性能分析.docx(15页珍藏版)》请在冰豆网上搜索。
实验一多线程计算π及性能分析
实验一多线程计算π及性能分析
作者:
赵立夫
完成时间:
月5日
1、实验内容
1.掌握类用法
2.掌握多线程同步方法
3.使用多线程计算π;
4.对结果进行性能评价。
2、
实验原理
使用积分方法,即
计算π值,并使用多线程进行多线程操作。
3、
程序流程图
图主线程流程图
4、实现方法
1.方法简述:
本程序使用多线程方法:
首先启动主进程,输入基数和线程数;
第二步,通过主进程创建子进程并为每个子进程分配计算任务;
第三步,子进程执行计算认为并将结果返回到数组[]中;
最后,主进程将[]元素进行累加得到最终结果并输出。
2.程序的主要方法
类,实现计算指定区间内的累加和
()启动子线程,子线程将自动执()方法
()确保主进程在所有子进程计算完毕后执行后续任务。
5、实验结果
1.实验结果数据表
编号
计算基数
子线程数
计算结果
使用时间
2.部分结果截图
图单线程计算结果图
图多线程计算结果图
3.理论性能及实际结果分析
编号
子线程数(不包括主线程)
计算结果
使用时间
加速比
编号
子线程数(不包括主线程)
计算结果
使用时间
加速比
本程序使用多线程方法来提升程序的执行速度,所以当线程数不断增多时,程序运行时间应逐渐减少;再考虑到创建进程和信息传递的开销,当线程数大于计算机的内核数量时,程序运行时间应该随着线程数目的增加而增加。
由于运行计算机为四核系统,所以当子线程数(除去主线程)由单线程增加到子线程运行时,程序运行时间降低,而当子线程增加到个(即线程数目大于内核数量时),程序运行时间又上升,这与预期结果相符合。
通过实验数据的分析验证了并行计算在程序运行性能上的理论。
6、总结展望
这次实验较为简单,并行化的方法非常直观,程序的逻辑也十分清晰。
在并行化方面的开销较少。
通过本次实验主要是对并行化原理的一个验证,证明了由多处理器分别运行线程带来的性能上的提高。
也通过实验证明了当线程数超过实际处理器数量时,性能的下降。
实验二计算的多线程实现
作者:
赵立夫
完成时间:
月日
一、实验内容
已知:
点集、。
定义中的点为∈,中的点为∈。
距离:
、、、
求:
满足以下条件的三元组(空间中三角形)的数目
<,,>,±且±且±
二、实验原理
对于中所有点,判断两两之间是否满足距离,若满足,保存点对。
在中每个点都和点对做比较,判断是否满足一边距离为,另一边距离为,若满足则累加。
三、程序流程图
四、实验结果:
()数据图表:
)线程数相同,计算量不同
)计算量相同,线程数不同
()效果图:
)线程数相同,计算量不同)计算量相同,线程数不同
六、理论性能分析
首先,本算法比起以往的算法的优势在于先计算出中符合条件的点对,这样使得计算效率有所提升。
然后是本算法的并行实现也同样在于域分解,及对中点并行处理,同中点进行比较判断,所以同样可以提高效率。
在线程数相同的时候,随着计算量的增加,计算时间会相应增加,而这种增加是呈立方增加的。
而计算量不同的时候,计算时间也会随着线程数的增加而相应减少。
七、实验结果分析
实验结果与上述结果基本符合。
在线程数相同的时候,增大计算量会使得计算时间呈立方形式增加。
而在计算量相同的时候,增加线程数会使得效率有所提升,计算时间相应减少。
八、总结展望
对于问题,始终没有突破性的算法来解决问题,但是,并行的引入已经使得我们提升了不少效率。
尤其在处理大量数据的时候,并行的优势体现的尤为明显,相信并行会占据越来越大的程序份额。
实验三实现迭代
作者:
赵立夫
完成时间:
月日
1、实验内容
.理解迭代的原理;
.掌握的使用方法;
.使用实现迭代。
2、实验原理
即矩阵中每一点的值等于上下左右四点的值的平均值。
3、程序流程图
4、实现方法
1.方法简述:
本程序使用方法:
首先,采用行划分原则,将矩阵划分为四等份;
第二,编写初始化矩阵方法;
第三,发写消息发送和接受方法;
第四,应用函数计算每点的值;
第五,迭代计算,总次数为十次。
(需要注意边界模块处理的特殊性。
)
2.程序的主要方法
([][],,,
);([][],,,
,);
5、实验结果
.实验结果数据表
编号
迭代次数
部分结果
.理论性能及实际结果分析
这次实验室使用方法对进行并行计算。
有公式可以看出,迭代的次数越多,计算结果精度越准确,实验结果也证明,迭代的次数与计算结果精度成正比。
.总结展望
这次实验的目的是对的编程方式的了解,更熟悉了六个基本函数的使用方法。
在迭代中体现为:
把总问题分为四个矩阵,第一个和第四个矩阵与其他两个的处理方式有所不同,那么应该对第一和四矩阵修改,使他们与其他两个一样。
采用同样的方法处理这四个矩阵。
同时我们吸收分治法的思想,将大问题分解为小问题,将容易解决的问题求解后再将结果合成求解。
实验四:
对并行化的深入分析设计
作者:
赵立夫
完成时间:
月日
一、问题的分析
问题——
已知:
点集、。
定义中的点为∈,中的点为∈。
距离:
、、、
求:
满足以下条件的三元组(空间中三角形)的数目
<,,>,±且±且±
分析——
问题相当于有两个闭包的球体球和球,每个球体内部有很多个点,现在要求我们在球内部选定一个点,在球内部选择两点,使得这三个点构成的三角形,满足的条件。
二、实验原理
方法一:
如果只是很少的点,那么我们可以直接用暴力破解的方法。
在中任选一点,在中选两个点,然后判断是否满足条件,直至遍历中所有的点对,然后在中再选另一个点,同样的操作,在中遍历所有的点。
这样的想法很简单,我们也很容易看到这个算法的复杂度。
中遍历一边复杂的为,中遍历一遍复杂度为,一共复杂度为,显然随着数据量的增大,这种复杂度是不能忍受的。
虽然很容易并行化,但方法还是过于暴力。
方法二:
考虑用矩阵相乘的方法。
遍历中每一点,在中找到与之相距为或的点,获得矩阵和;
遍历中每一点,在中找到与之相距为的点,形成矩阵;
×(×)××;
这种方法实现很容易,先构造矩阵,然后直接相乘,从图中就可以看到复杂度应为,但是这种方法有一个致命的缺点就是空间占用太大,若有个点,每个点的类型为型,则需要一个400M的空间来存储矩阵,同理和都需要400M的空间,这样一共需要1.2G的空间来存放数据,当数据增多时,这种方法占用的空间将是非常恐怖的。
而且并行化方面和方法一比较,相对复杂些。
方法三:
综合方法一,方法二。
第一步,遍历中每个点,在中找到与之相距为的点,保存点对到。
第二步,遍历中每个点,在的点对中找到同时满足与之相距为和的点对,累加。
即得到最终结果。
这种方法结合了前两种方法,既没有的高复杂度,也没有占用大量空间。
当中点对数大于中数据数量时,复杂度为*;
当中点对数小于中数据量时,复杂度为。
并行化程度基于方法一和方法二。
方法三程序流程图如上图所示。
三、论证
首先考虑方法一,由于方法一是大多数人所能想到的一个比较传统的方法,其思想是根据题目要求一步步求解,即先分别求出符合和的点对,然后再从所求出的点对中找出符合的点对,这样所求得的由三个点构成的集合即为一个解。
根据以上分析,其正确性是毋庸置疑的。
本算法由于先要对中每个点进行遍历,还要从中取两个点,所以复杂度为。
÷
其次考虑方法二,本方法为老师所提供的方法。
是在方法一上的一部分改进,是说先从集合中找出符合的点对,记录在一个*矩阵中,这样符合的记为,不符合的记为。
这样,进行下一步运算或的时候,就不必再去整个遍历,根据前一部分维护的矩阵即可立即找到符合条件的点对,继续判断记录为的对应点是否符合令一个或者。
虽然本算法在效率上有所提高,但是对于内存的使用非常大,考虑到处理大量数据时,要维护的一个*矩阵的代价时相当大的,所以本方法并不十分可取,但比起第一个方法来说已经有了相当大的进步。
最后考虑方法三,本方法是在方法一和方法二的基础上得到的一个方法。
首先也是要对集合进行计算,求出其中符合的点对,不同的是这次不是维护一个矩阵,而是维护一个数组,其中的一个元素保存的是符合条件的点对。
然后遍历中的点,与以上数组的元素进行判断分析,即可求出符合条件的解。
本算法的重点改进在于维护了一个一维数组而非矩阵,并且这个数组的大小是随着数据不同而不同的,不会耗费大量空间,远远小于固定矩阵所带来的开销。
而这也是在处理海量数据时所必须要考虑的问题。
另外,应用并行求解本题也是对的一个重大突破,同样处理大量数据时,用多线程的方法会带来大量的效率提升,使得我们的算法可行性有了更大的提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 多线程 计算 性能 分析