资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
并行计算实验报告学院软件学院年级2008级班级一班学号3007218144姓名赵立夫2010年3月31日实验一多线程计算n及性能分析作者:赵立夫完成时间:3月31日、实验内容1. 掌握Thread类用法2. 掌握java多线程同步方法3. 使用多线程计算n ;4. 对结果进行性能评价。、实验原理使用积分方法,即“Ji亠dx工 4 x丄01 +x20迟n 1 +i052 nI N丿计算n值,并使用java多线程进行多线程操作。程序流程图图1-1主线程流程图四、实现方法1. 方法简述:本程序使用java多线程方法:首先启动主进程,输入基数N和线程数threadNum;第二步,通过主进程创建子进程并为每个子进程分配计算任务; 第三步,子进程执行计算认为并将结果返回到数组sums中; 最后,主进程将sums元素进行累加得到最终结果并输出。2. 程序的主要方法PaiThread类,实现计算指定区间内的累加和threadHandle.start()启动子线程,子线程将自动执run ()方法 threadHandle.join()确保主进程在所有子进程计算完毕后执行后续 任务。五、实验结果1. 实验结果数据表编号计算基数子线程数计算结果使用 时间1100000003.141594653588975436ms2100000023.141594653588901726ms3100000033.14159465358889822ms4100000043.14159465358891825ms5100000053.14159465358891426ms610000033.14161265349813414ms71000000033.14159285358969580ms2. 部分结果截图图1-2单线程pai计算结果图图1-3多线程pai计算结果图3. 理论性能及实际结果分析编号子线程数 (不包括主线程)计算结果使用 时间加速 比103.141594653588975436ms1.0223.141594653588901726ms1.38333.14159465358889822ms1.64443.14159465358891825ms1.44553.14159465358891426ms1.38本程序使用多线程方法来提升程序的执行速度,所以当线程数不 断增多时,程序运行时间应逐渐减少;再考虑到创建进程和信息传递 的开销,当线程数大于计算机的内核数量时,程序运行时间应该随着 线程数目的增加而增加。由于运行计算机为四核系统,所以当子线程数(除去主线程)由单 线程增加到3子线程运行时,程序运行时间由36ms降低为22毫秒, 而当子线程增加到4个(即线程数目大于内核数量时),程序运行时 间又上升到25ms (参照结果1至5),这与预期结果相符合;在看当 基数改变时的情况,在结果3, 6,7中,子线程数量均为3个,运算基 数以10倍递增,运行时间也是成倍的减少或增加,(具体结果见上表), 同样和预期结果相符。通过实验数据的分析验证了并行计算在程序运 行性能上的理论。六、总结展望这次实验较为简单,并行化的方法非常直观,程序的逻辑也十分清晰。 在并行化方面的开销较少。通过本次实验主要是对并行化原理的一个验证, 证明了由多处理器分别运行线程带来的性能上的提高。也通过实验证明了当 线程数超过实际处理器数量时,性能的下降。通过本次实验,我掌握了使用 java进行多线程编程的基础知识,以及使用join等方法实现线程间的同步。实验二3PCF计算的多线程实现作者:杨春白完成时间:4月7日一、实验内容1. 理解3PCF的计算原理;2. 掌握OPENMP编译制导语句的使用3. 掌握Linux环境下,openMP的编译执行4. 使用OPENMP实现3PCF计算二、实验原理1. 定义:点集D、R。定义D中的点为a.D, R中的点为b.UR。1 1 距离:rr2、r3、err2. 求:满足以下条件的三元组(空间中三角形)的数目, la.-b l=r 土err 且la.-b l=r 土err 且lb -b l=r 土err1 m n1 m 11 n 2m n 33. 实验解法:对于D中每一点a.,在R中找到与之距离为匚的点集R,找到与之距离为r21 1 2 的点集R。在点集R与R中,查找两点间距离为r3的点组数目。累加。程序流程图图2-1 3pcf程序流程图四、实现方法1.方法简述:本次实验通过使用OPENMP方法实现并行:首先完成程序的单线程执行代码,原理见实验原理,执行过程见流程 图,主要通过for循环来实现,主循环for用来遍历dataD集合,第 二个for循环查找dataR中符合条件一的点,第三个for循环寻找 dataR中符合条件二的点,最后在以上找出的两个点集中找出的两点 是否符合条件三,如果符合,累加至sum,否则,继续循环; 并行化方案为,将第二和第三个for循环进行并行 最后,输出结果。2.程序的主要方法#pragma omp parallel shared(poi ntSetl ,poi ntSet 2,pSe tl Size,pSe t2Size,num)#pragma omp for#pragma omp critical#pragma omp atomic五、实验结果1.实验结果数据表编 号文件1名称文件2名称计算结果并行计算 时间串行计算 时间1D32.txtR32. txt33412D256. txtR256. txt3D512. txtR512. txt4D1024. txtR1024. txt5D2048.txtR2048. txt6R4096. txtR4096. txt7R8192. txtR8192. txt8R10240.txtR10240. txt9R20480. txtR20480. txt2.结果截图3. 理论性能及实际结果分析本次实验使用OPENMP编码,即由编译器自动优化程序并分配子线程进 程计算,因而忽略线程数目和其他偶然因素,随着输入数据的不断增 力口,运行时间应该急剧增大,结果值也应该急剧增大,而且伴随着存 储空间溢出的危险。由上表可见当输入数据不断增多时,运算结果的 确迅速变大,运行时间和存储空间的需求都在不断加大,这和预期是 相符的。4. 总结展望实验题目,作者,时间,实验内容,原理,程序流程图,实现方法,结果(数 据图表、效果图等),理论性能分析以及对实际结果的分析,总结展望(心 得体会等)。实验三实验题目MPI实现Jacobi迭代作者韦阳完成时间2010/5/1、实验内容1. 理解Jacobi迭代的原理;2. 掌握MPI的使用方法;3. 使用MPI实现Jacobi迭代。二、实验原理/ | + / 1 + / . . + / - | h 匚丿 $ + I丿IW + I即矩阵中每一点的值等于上下左右四点的值的平均值。三、程序流程图:,begin J:四、实现方法1. 方法简述:本程序使用MPI方法:首先,采用行划分原则,将矩阵划分为四等份; 第二,编写初始化矩阵方法; 第三,发写消息发送和接受方法; 第四,应用Jacobi函数计算每点的值; 第五,迭代计算,总次数为十次。(需要注意边界模块处理的特殊性。)2. 程序的主要方法MPI_Recv(&matrixAsubSize+lO, matrixSize, MPI_FLOAT,myid+l,10,MPI_COMM_WORLD, & status); MPI_Send(&matrixA01, matrixSize, MPI_FLOAT, myid-1, 10, MPI_COMM_WORLD);五、实验结果5. 实验结果数据表编号文件1名称文件2名称计算结果1D32. txtR32. txt2D256. txtR256. txt3D512. txtR512. txt4D1024.txtR1024. txt5D2048. txtR2048. txt6R4096. txtR4096. txt7R8192. txtR8192. txt8R10240. txtR10240. txt9R20480. txtR20480. txt6. 结果截图7. 理论性能及实际结果分析本次实验使用OPENMP编码,即由编译器自动优化程序并分配子线程进 程计算,因而忽略线程数目和其他偶然因素,随着输入数据的不断增 力口,运行时间应该急剧增大,结果值也应该急剧增大,而且伴随着存 储空间溢出的危险。由上表可见当输入数据不断增多时,运算结果的 确迅速变大,运行时间和存储空间的需求都在不断加大,这和预期是 相符的。8. 总结展望实验题目,作者,时间,实验内容,原理,程序流程图,实现方法,结果(数 据图表、效果图等),理论性能分析以及对实际结果的分析,总结展望(心 得体会等)。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号