资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1. 实验目的1.1 掌握集群的使用措施。1.2 掌握以并行的方式分析问题、设计并行程序的措施。1.3 掌握如何对并行程序进行简朴的性能分析2. 实验规定122.1 使用MPI、Opnp等并行程序设计措施设计矩阵乘法的并行程序。2.2 随机产生所需的矩阵元素,数据项不得少于000*100。2.3 尽量设计较高的加速比3. 实验环境1233.1 硬件环境:两个集群节点blad13、blad1。3.2 软件环境:Linux、gc、in7、C+.0。3.3 连接方式:maager Entrprise4.0远程桌面连接21.69198.203。4. 实验程序12344.1 随机算法产生矩阵:rd((ungnd int)tim(N));o(=0;N;i+)o (j=0; jN; j+)Ai= rad()% 10;Bj= rand() 10;= 0;4.2 串行程序设计time(&stat);for (=0; i; +)fo (k=0; kM;k+)Ci ;or (; M;j+)Cik = Aij*k;te(&end);4.3 并行程序设计PI_nit(&arc,&arv)和MP_Fnalize()MPI_Init用来初始化PI执行环境,建立多种MI进程之间的联系,为后续通信做准备。而M_Fnalie则是结束MPI执行环境。这两个函数就是定义PI程序的并行区的,除了检测与否初始化的函数之外,不应当在这两个函数定义的区域外调用其他MP函数。这两个函数都返回整型值,标记函数与否调用成功。int PI_Cmm_ra(PI_Co cm, int*ran) Pomm_nk函数用来标记各个P进程,获取调用该函数进程的进程号,将自身与其她进程辨别。MPI_Commran返回整型的错误值,需要提供两个参数:MICom类型的通信域,标记参与计算的MPI进程组。上面例子中使用的是_O_WOLD,这个进程组是MPI实现预先定义好的进程组,指的是所有MP进程所在的进程组。如果想要申请自己的特殊的进程组,则需要通过I_Comm定义并通过其他MPI函数生成。rank返回调用进程中的标记号。itMPI_Commsze( MI_omm cmm, n *iz) MPICom_siz函数用来获取指定通信域的进程个数,拟定自身需要完毕的任务数。 MPIom类型的通信域,标记参与计算的MPI进程组。上面的例子中用的是PI_WORLD。&ize返回相应进程组中的进程数。intMPI_end(void *f, int unt, MPI_Datatypeatayp, nts, int tag, MPI_Comm cm)MPI_函数用于发送一种消息到目的进程。通信域中的dest进程发送数据,数据寄存在buf中,类型是atape,个数是cut,这个消息的标志是tag,用以和本进程向同一目的进程发送的其他消息区别开来。in MPI_Recv(void *bf, int cont, PI_Datatype dataype,nt source, int a, MP_Comcom, MPI_Status*saus)MPI_ecv 函数用于从指定进程接受一种消息。它的含义是进程从cm域中soure进程接受标签号为ta的数据,并保存到bu中。接受缓冲区buf的大小不能不不小于发送过来的消息的长度。否则会由于数组越界导致程序出错。主进程if(proessid = 0)rwavr= N/lavum;reaner N slave_nm;offe= ;for(dest; des=save_num; dest+)ros(st emaier) ? row_ae1: ow_ver;pnf(sedng %dros to rcess %dn,ows, de); MPI_Snd(ofs,1,MPI_INT,est,FROMMATE, MPI_COMM_WO);MPI_e(rows,1,MP,ds,FROM_MER, M_COMM_ORLD);PI_Send(Aoffset0,rws*N,MPI_NT,dest,FRM_MSTER,MPI_CMMWOR);MI_Se(&,N*N,MP_T,est,ROMSTER,MPI_COMM_R);ffse + rws;satie = M_tie();f(ouce=1; souce )P_v(&offst,1,MPIINT,0,FOM_MASTR,MPCOMM_WRD,&satus);MP_Re(&rows,1,I_IN,0,FOMSTER,PI_OMM_WORLD,&satus);MPI_ecv(&,rws*N,MP_I,,ROM_MASE,MPICM_WOLD,&sttu);MP_ecv(&B,N*N,MPI_INT,0,ROMASER,PI_CM_WORL,&satus);/矩阵乘法fo(i0; iows; i+)fr (k=; kN; k+)it tmp =Aik;for (=0; j; +)Cij tmp*B; 运用P_Send(&offst,1,MI_INT,0,FROM_LAE,MPICOM_WORD);MP_Snd(&rws,1,MPI_N,0, FROM_SLAVE, ICO_WORLD); PI_Send(&C,rows*N,MP_UNSIGELONG_LON,0,ROM_SLAV,MPICOMM_WRLD);PI_Fiie();tn;5. 性能分析分析公式:加速比=串行执行时间/并行执行时间效率=加速比/节点数123455.1 串行程序的执行时间(秒) 矩阵规模实验成果10003000第1次1.0099.0372000799.00第2次11.000980376.000799.000第次11.09.000373.0082.00平均值11.098673.67800.000图1 不同矩阵规模下串行程序的执行时间5.2 八个节点时,不同矩阵规模并行程序的执行时间(秒) 矩阵规模实验成果10003第1次0.86.8333.3522第2次832683.3555.786第3次.8376.8223.56055.732平均值0.833.83023.4165.64加速比13.25144615.95814.7效率11.8061.99.797图 八个节点时,不同矩阵规模下并行程序的执行时间图3 八个节点时,不同矩阵规模下并行程序的加速比图4. 八个节点时,不同矩阵规模下并行程序的效率分析随着矩阵规模的增长执行时间程序的执行时间急剧增长。加速比程序的加速比基本保持不变。效率程序的效率基本保持不变。5.3 矩阵规模为100*10时,不同节点数下并行程序的执行时间(秒) 节点个数实验成果23468第次.792.917.941.551.10.9730.89第次.7932.8991941.41.1670.0.82第3次.832.91.9351.431.169750837平均值.8829101.9411.4611.90.970.833加速比. 3780.67 7259 .41 130513.205 效率0.992 1.26 1.17 .521.568 1.615 1.5 图5.矩阵规模1000*10时,不同节点下的并行程序的执行时间图6.矩阵规模1000100时,不同节点下的并行程序的加速比图矩阵规模100*100时,不同节点下的并行程序的效率分析随着计算节点数的增长,执行时间程序的执行时间迅速减少,然后趋于平稳。加速比程序的加速比基本呈线性增长,公式趋=18374x+2。效率程序的效率逐渐增长,然后趋于平缓。6. 顾客手册1234566.1 连接:
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号