并行计算实验四报告.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 2 广东技术师范学院实验报告 学院: 计算机科学学院 专业: 计算机科学与技术 班级: 成绩: 姓名: 学号: 组别: 组员: 实验地点: 工业中心203 实验日期: 指导教师签名: 预习情况 操作情况 考勤情况 数据处理情况 实验 (四) 项目名称: 并行程序设计(3) 一、实验目的 在一个局域网中建立能够互相通信的两台计算机,实现两台计算机并行运算。 二、实验内容: 要求:修改代码cpi.c,将任务分配改为按块分配:假设共有P个进程,将n个计算间顺序分成P块,每个进程负责一块的计算,注意当n不是P的倍数时应该尽量保持负载平衡。程序代码cpi.c参考如下: ? #include mpi.h #include stdio.h double f( double a ) { return (4.0 / (1.0 + a*a)); } ? int main( int argc, char *argv[]) { int n, myid, numprocs, i, namelen; double PI25DT = 3.141592653589793238462643; double mypi, pi, h, sum, x; double startwtime, endwtime; char processor_name[MPI_MAX_PROCESSOR_NAME]; ? MPI_Init(argc,argv); MPI_Comm_size(MPI_COMM_WORLD,numprocs); MPI_Comm_rank(MPI_COMM_WORLD,myid); MPI_Get_processor_name(processor_name,namelen); fprintf(stderr,Process %d on %s , myid, processor_name); if (myid == 0) { n=10000; startwtime = MPI_Wtime(); } MPI_Bcast(n, 1, MPI_INT, 0, MPI_COMM_WORLD); h = 1.0 / (double) n; sum = 0.0; for (i = myid; i n; i += numprocs) { x = h * ((double)i + 0.5); sum += f(x); } mypi = h * sum; MPI_Reduce(mypi, pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) { endwtime = MPI_Wtime(); printf(pi is approximately %.16f, error is %.16f , pi, pi - PI25DT); printf(wall clock time = %f , endwtime-startwtime); } MPI_Finalize(); return 0; } 实验源程序代码: #include mpi.h #include stdio.h #include iostream.h #include fstream.h void main(int argc, char *argv[]) { int rank, size; const int MAXX = 40; const int MAXY = 40; const int MAXPROCESSOR = 64; float Data[MAXY][MAXY]; int ArraySize[2]; int i, j, k; double startwtime, endwtime; int namelen; char processor_name[MPI_MAX_PROCESSOR_NAME]; MPI_Status Status; MPI_Init(argc, argv); MPI_Comm_rank(MPI_COMM_WORLD, rank); MPI_Comm_size(MPI_COMM_WORLD, size); MPI_Get_processor_name(processor_name, namelen); cout线程在运行主机processor_nameendl; if(rank == 0) {

文档评论(0)

+ 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档