实验一多线程计算π及性能分析.docx

上传人:b****4 文档编号:12050329 上传时间:2023-04-16 格式:DOCX 页数:15 大小:374.97KB
下载 相关 举报
实验一多线程计算π及性能分析.docx_第1页
第1页 / 共15页
实验一多线程计算π及性能分析.docx_第2页
第2页 / 共15页
实验一多线程计算π及性能分析.docx_第3页
第3页 / 共15页
实验一多线程计算π及性能分析.docx_第4页
第4页 / 共15页
实验一多线程计算π及性能分析.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

实验一多线程计算π及性能分析.docx

《实验一多线程计算π及性能分析.docx》由会员分享,可在线阅读,更多相关《实验一多线程计算π及性能分析.docx(15页珍藏版)》请在冰豆网上搜索。

实验一多线程计算π及性能分析.docx

实验一多线程计算π及性能分析

实验一多线程计算π及性能分析

作者:

赵立夫

完成时间:

月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的空间来存放数据,当数据增多时,这种方法占用的空间将是非常恐怖的。

而且并行化方面和方法一比较,相对复杂些。

方法三:

综合方法一,方法二。

第一步,遍历中每个点,在中找到与之相距为的点,保存点对到。

第二步,遍历中每个点,在的点对中找到同时满足与之相距为和的点对,累加。

即得到最终结果。

这种方法结合了前两种方法,既没有的高复杂度,也没有占用大量空间。

当中点对数大于中数据数量时,复杂度为*;

当中点对数小于中数据量时,复杂度为。

并行化程度基于方法一和方法二。

方法三程序流程图如上图所示。

三、论证

首先考虑方法一,由于方法一是大多数人所能想到的一个比较传统的方法,其思想是根据题目要求一步步求解,即先分别求出符合和的点对,然后再从所求出的点对中找出符合的点对,这样所求得的由三个点构成的集合即为一个解。

根据以上分析,其正确性是毋庸置疑的。

本算法由于先要对中每个点进行遍历,还要从中取两个点,所以复杂度为。

÷

其次考虑方法二,本方法为老师所提供的方法。

是在方法一上的一部分改进,是说先从集合中找出符合的点对,记录在一个*矩阵中,这样符合的记为,不符合的记为。

这样,进行下一步运算或的时候,就不必再去整个遍历,根据前一部分维护的矩阵即可立即找到符合条件的点对,继续判断记录为的对应点是否符合令一个或者。

虽然本算法在效率上有所提高,但是对于内存的使用非常大,考虑到处理大量数据时,要维护的一个*矩阵的代价时相当大的,所以本方法并不十分可取,但比起第一个方法来说已经有了相当大的进步。

最后考虑方法三,本方法是在方法一和方法二的基础上得到的一个方法。

首先也是要对集合进行计算,求出其中符合的点对,不同的是这次不是维护一个矩阵,而是维护一个数组,其中的一个元素保存的是符合条件的点对。

然后遍历中的点,与以上数组的元素进行判断分析,即可求出符合条件的解。

本算法的重点改进在于维护了一个一维数组而非矩阵,并且这个数组的大小是随着数据不同而不同的,不会耗费大量空间,远远小于固定矩阵所带来的开销。

而这也是在处理海量数据时所必须要考虑的问题。

另外,应用并行求解本题也是对的一个重大突破,同样处理大量数据时,用多线程的方法会带来大量的效率提升,使得我们的算法可行性有了更大的提高。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1