欢迎来到天天文库
浏览记录
ID:19630675
大小:425.50 KB
页数:10页
时间:2018-10-04
《矩阵乘法mpi并行程序报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.实验目的1.1掌握集群的使用方法。1.2掌握以并行的方式分析问题、设计并行程序的方法。1.3掌握如何对并行程序进行简单的性能分析2.实验要求122.1使用MPI、OpenMp等并行程序设计方法设计矩阵乘法的并行程序。2.2随机产生所需的矩阵元素,数据项不得少于1000*1000。2.3尽量设计较高的加速比3.实验环境1233.1硬件环境:两个集群节点blade13、blade15。3.2软件环境:Linux、gcc、Win7、VC++6.0。3.3连接方式:XmanagerEnterprise4.0远程桌面连接211.69.198.203。4.实验程序12344.1随机算法产生矩阵:sr
2、and((unsignedint)time(NULL));for(i=0;i3、andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypart4、yCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand9/101.1并行程序设计MPI_Init(&argc,&argv)和MPI_Finalize()MPI_Init用来初始化MPI执行环境,建立多个MPI进程之间的联系,为后续通信做准备。而MPI_Finalize则是结束MPI执行环境。这两个函数就是定义MPI程序的并行区的,除了检测是否初始化的函数之外,不应该在这两个函数定义的区域外调用其它MPI函数。这两个函数都返回整型值,标识函数是否调用成功。intMPI_Comm_rank(MPI5、_Commcomm,int*rank)MPI_Comm_rank函数用来标识各个MPI进程,获取调用该函数进程的进程号,将自身与其他进程区分。MPI_Comm_rank返回整型的错误值,需要提供两个参数:MPI_Comm类型的通信域,标识参与计算的MPI进程组。上面例子中使用的是MPI_COMM_WORLD,这个进程组是MPI实现预先定义好的进程组,指的是所有MPI进程所在的进程组。如果想要申请自己的特殊的进程组,则需要通过MPI_Comm定义并通过其它MPI函数生成。&rank返回调用进程中的标识号。intMPI_Comm_size(MPI_Commcomm,int*size)MPI_Co6、mm_size函数用来获取指定通信域的进程个数,确定自身需要完成的任务数。MPI_Comm类型的通信域,标识参与计算的MPI进程组。上面的例子中用的是MPI_COMM_WORLD。&size返回相应进程组中的进程数。intMPI_Send(void*buf,intcount,MPI_Datatypedatatype,intdest,inttag,MPI_Commcomm)MPI_Send函数用于发送一个消息到目标进程。通信域中的dest进程发送数据,数据存放在buf中,类型是datatype,个数是count,这个消息的标志是tag,用以和本进程向同一目的进程发送的其它消息区别开来。intM7、PI_Recv(void*buf,intcount,MPI_Datatypedatatype,intsource,inttag,MPI_Commcomm,MPI_Status*status)MPI_Recv函数用于从指定进程接收一个消息。它的含义是进程从comm域中source进程接收标签号为tag的数据,并保存到buf中。接收缓冲区buf的大小不能小于发送过来的消息的长度。否则会由于数组越界导致程序出错。主
3、andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypart
4、yCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand9/101.1并行程序设计MPI_Init(&argc,&argv)和MPI_Finalize()MPI_Init用来初始化MPI执行环境,建立多个MPI进程之间的联系,为后续通信做准备。而MPI_Finalize则是结束MPI执行环境。这两个函数就是定义MPI程序的并行区的,除了检测是否初始化的函数之外,不应该在这两个函数定义的区域外调用其它MPI函数。这两个函数都返回整型值,标识函数是否调用成功。intMPI_Comm_rank(MPI
5、_Commcomm,int*rank)MPI_Comm_rank函数用来标识各个MPI进程,获取调用该函数进程的进程号,将自身与其他进程区分。MPI_Comm_rank返回整型的错误值,需要提供两个参数:MPI_Comm类型的通信域,标识参与计算的MPI进程组。上面例子中使用的是MPI_COMM_WORLD,这个进程组是MPI实现预先定义好的进程组,指的是所有MPI进程所在的进程组。如果想要申请自己的特殊的进程组,则需要通过MPI_Comm定义并通过其它MPI函数生成。&rank返回调用进程中的标识号。intMPI_Comm_size(MPI_Commcomm,int*size)MPI_Co
6、mm_size函数用来获取指定通信域的进程个数,确定自身需要完成的任务数。MPI_Comm类型的通信域,标识参与计算的MPI进程组。上面的例子中用的是MPI_COMM_WORLD。&size返回相应进程组中的进程数。intMPI_Send(void*buf,intcount,MPI_Datatypedatatype,intdest,inttag,MPI_Commcomm)MPI_Send函数用于发送一个消息到目标进程。通信域中的dest进程发送数据,数据存放在buf中,类型是datatype,个数是count,这个消息的标志是tag,用以和本进程向同一目的进程发送的其它消息区别开来。intM
7、PI_Recv(void*buf,intcount,MPI_Datatypedatatype,intsource,inttag,MPI_Commcomm,MPI_Status*status)MPI_Recv函数用于从指定进程接收一个消息。它的含义是进程从comm域中source进程接收标签号为tag的数据,并保存到buf中。接收缓冲区buf的大小不能小于发送过来的消息的长度。否则会由于数组越界导致程序出错。主
此文档下载收益归作者所有