1、实验一 多线程计算 及性能分析作者: 赵立夫完成时间:3 月 25 日1、 实验内容1. 掌握 Thread 类用法2. 掌握 java 多线程同步方法3. 使用多线程计算 ;4. 对结果进行性能评价。2、 实验原理使用积分方法,即计算 值,并使用 java 多线程进行多线程操作。NidxNi 15.014140202 3、 程序流程图图 1-1 主线程流程图4、 实现方法1. 方法简述:本程序使用 java 多线程方法:首先启动主进程,输入基数 N 和线程数 threadNum;第二步,通过主进程创建子进程并为每个子进程分配计算任务;第三步,子进程执行计算认为并将结果返回到数组 sums中;
2、最后,主进程将 sums元素进行累加得到最终结果并输出。2. 程序的主要方法PaiThread 类,实现计算指定区间内的累加和threadHandle.start()启动子线程,子线程将自动执 run()方法threadHandle.join()确保主进程在所有子进程计算完毕后执行后续任务。5、 实验结果1. 实验结果数据表编号 计算基数 子线程数 计算结果 使用时间1 800000000 2 3.1415946535889754 6.463s2 800000000 4 3.1415946535889017 3.251s3 800000000 6 3.141594653588898 3.470
3、s4 800000000 8 3.141594653588918 3.353s5 400000000 1 3.1415926569231054 12.504s6 600000000 1 3.141612653498134 9.388s7 800000000 1 3.141592853589695 6.234s2. 部分结果截图图 1-2 单线程 pai 计算结果图图 1-3 多线程 pai 计算结果图3. 理论性能及实际结果分析编号 子线程数(不包括主线程)计算结果 使用时间加速比1 0 3.1415946535889754 6.463s 1.02 4 3.141594653588898 3.
4、251s 1.993 6 3.141594653588918 3.470s 1.864 8 3.141594653588914 3.353s 1.93编号 子线程数(不包括主线程)计算结果 使用时间加速比本程序使用多线程方法来提升程序的执行速度,所以当线程数不断增多时,程序运行时间应逐渐减少;再考虑到创建进程和信息传递的开销,当线程数大于计算机的内核数量时,程序运行时间应该随着线程数目的增加而增加。由于运行计算机为四核系统,所以当子线程数(除去主线程)由单线程增加到 3 子线程运行时,程序运行时间降低,而当子线程增加到4 个(即线程数目大于内核数量时) ,程序运行时间又上升,这与预期结果相符合
5、。通过实验数据的分析验证了并行计算在程序运行性能上的理论。6、 总结展望这次实验较为简单,并行化的方法非常直观,程序的逻辑也十分清晰。在并行化方面的开销较少。通过本次实验主要是对并行化原理的一个验证,证明了由多处理器分别运行线程带来的性能上的提高。也通过实验证明了当线程数超过实际处理器数量时,性能的下降。实验二 3PCF 计算的多线程实现作者:赵立夫完成时间:4 月 7 日一、实验内容 已知:点集 D、R。定义 D 中的点为 aiD,R 中的点为 biR。距离:r 1、r 2、r 3、err求:满足以下条件的三元组(空间中三角形)的数目,|a i-bm|=r1err 且|a i-bn|=r2e
6、rr 且|b m-bn|=r3err 二、实验原理对于 R 中所有点,判断两两之间是否满足距离 r3,若满足,保存点对。在D 中每个点都和点对做比较,判断是否满足一边距离为 r1,另一边距离为 r2,若满足则累加。三、程序流程图四、实验结果:(1)数据图表:1)线程数相同,计算量不同05101520253035data_size=32 data_size=256 data_size=512 data_size1024 data_size=2048线 程 数 为 42)计算量相同,线程数不同00.511.522.5线 程 数 1 线 程 数 2 线 程 数 3 线 程 数 4data_size=
7、512(2)效果图:1)线程数相同,计算量不同 2)计算量相同,线程数不同六、理论性能分析首先,本算法比起以往的算法的优势在于先计算出 R 中符合 r3 条件的点对,这样使得计算效率有所提升。然后是本算法的并行实现也同样在于域分解,及对 D 中点并行处理,同 R 中点进行比较判断,所以同样可以提高效率。在线程数相同的时候,随着计算量的增加,计算时间会相应增加,而这种增加是呈立方增加的。而计算量不同的时候,计算时间也会随着线程数的增加而相应减少。七、实验结果分析实验结果与上述结果基本符合。在线程数相同的时候,增大计算量会使得计算时间呈立方形式增加。而在计算量相同的时候,增加线程数会使得效率有所提升,计算时间相应减少。八、总结展望对于 3-PCF 问题,始终没有突破性的算法来解决问题,但是,并行的引入已经使得我们提升了不少效率。尤其在处理大量数据的时候,并行的优势体现的尤为明显,相信并行会占据越来越大的程序份额。实验三 MPI 实现 Jacobi 迭代作者:赵立夫完成时间:4 月 27 日1、 实验内容1. 理解 Jacobi 迭代的原理;2. 掌握 MPI 的使用方法;3. 使用 MPI 实现 Jacobi 迭代。2、 实验原理即矩阵中每一点的值等于上下左右四点的值的平均值。3、 程序流程图