版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.实验目的1.1掌握集群的使用方法。1.2掌握以并行的方式分析问题、设计并行程序的方法。1.3掌握如何对并行程序进行简单的性能分析2. 实验要求2.1使用MPI、OpenMp等并行程序设计方法设计矩阵乘法的并行程序。2.2随机产生所需的矩阵元素,数据项不得少于1000*1000。2.3尽量设计较高的加速比3. 实验环境3.1硬件环境:两个集群节点blade13、blade15。3.2 软件环境:Linux、gcc、Win7、VC+6.0。3.3 连接方式:Xmanager Enterprise 4.0 远程桌面连接 211.69.198.203。4. 实验程序4.1随机算法产生矩阵:sran
2、 d( un sig ned in t)time(NULL);for (i=0; iN; i+)for (j=0; jN; j+)Aij = ran d() % 10;Bij = ran d() % 10;Cik = 0;4.2串行程序设计time( &start);for (i=0; iM; i+)for (k=0; kM; k+)Cik = 0;for (j=0; jM; j+)Cik += Aij*Bjk; time( &en d);4.3并行程序设计MPI_I nit (&argc,&argv) 和MPI_Fi nalize()MPI I nit用来初始化MPI执行环境,建立多个 MP
3、I 进程之间的联系,为后续通信做准备。而 MPI_Finalize 则是结束MPI执行环境。这两个函数 就是定义MPI程序的并行区的,除了检测是否初始 化的函数之外,不应该在这两个函数定义的区域外 调用其它MPI函数。这两个函数都返回整型值,标 识函数是否调用成功。intMPI_Comm_ra nk(MPI_Comm com m, int *rank)MPI Comm rank函数用来标识各个 MPI进程,获取 调用亥函数进程的进程号,将自身与其他进程区分。MPI Comm rank返回整型的错误值,需要提供两个 参数:MPI_Comn类型的通信域,标识参与计算的 MPI进程 组。)面例子中使
4、用的是 MPI COMM WORL这个进 程组是MPI实现预先定义好的进程组,指的是所有MPI进程所在的进程组。如果想要申请自己的特殊 的进程组,则需要通过MPI Comm定义并通过其它MPI函数生成。&rank返回调用进程中的标识号。intMPI_Comm_size( MPI_Comm com m, int *size)MPI_Comm_size函数用来获取指定通信域的进程个 数,确疋自身需要元成的任务数。MPI_Comn类型的通信域,标识参与计算的MPI进程组。上面的例子中用的是MPI COMM WORLD&size返回相应进程组中的进程数。int MPI_Send(void *buf,
5、int count, MPI_Datatype datatype, int dest, i nt tag, MPI_Comm comm)MPI_Se nd函数用于发送一个消息到目标进程。 通信域中的dest进程发送数据,数据存放在buf中, 类型是datatype,个数是count,这个消息的标志 是tag,用以和本进程向同一目的进程发送的其它 消息区别开来。int MPI_Recv(void *buf, int count, MPI_Datatype datatype,int source,int tag, MPI_Comm comm, MPI Status *status)MPI_Recv
6、函数用于从指定进程接收一个消息。 它的含义是进程从 comm域中source进程接收标签 号为tag的数据,并保存到buf中。接收缓冲区buf 的大小不能小于发送过来的消息的长度。否则会由 于数组越界导致程序出错。主进程if(process_id =0)row_aver =N / slave_ num;rema in der=N % slave_ num;offset = 0;for(dest=1; dest=slave_ num; dest+)rows = (dest = rema in der) ? row_aver+1 : row_aver;prin tf(se nding %d row
7、s to process %dn, rows, dest);MPI_Se nd(&o ffset,1,MPI_INT,dest,FROM_MASTER, MPI_COMM_WORLD);MPI_Se nd(&rows,1,MPI_INT,dest,FROM_MASTER, MPI_COMM_WORLD);MPI_Se nd(&Aoffset0,rows*N,MPI_INT,dest,FROM_MASTER, MPI_COMM_WORLD); MPI_Se nd(&B,N*N,MPI_INT,dest,FROM_MASTER,MPI_COMM_WORLD);offset += rows;star
8、t_time = MPI_Wtime();for(source=1; source 0)MPI_Recv(&o ffset,1,MPI_INT,O,FROM_MASTER,MPI_COMM_WORLD,& status);MPI_Recv(&rows,1,MPI_INT,0,FROM_MASTER,MPI_COMM_WORLD,& status);MPI_Recv(&A,rows*N,MPI_INT,0,FROM_MASTER,MPI_COMM_WORLD,& status);MPI_Recv(&B,N*N,MPI_INT,O,FROM_MASTER,MPI_COMM_WORLD, &stat
9、us);/矩阵乘法for(i=0; irows; i+)for (k=0; kN; k+)int tmp = Aik;for (j=0; jN; j+)Cij += tmp*Bkj;/ 禾U用MPI_Se nd(&ofset,1,MPI_INT,0,FROM_SLAVE,MPI_COMM_WORLD);MPI_Se nd(&rows,1,MPI_INT,0, FROM_SLAVE, MPI_COMM_WORLD);MPI_Se nd(&C,rows*N,MPI_UNSIGNED_LONG_LONG,0,FROM_SLAVE,MPI_COMM_WORLD); MPI_Fi nalize();re
10、turn 0;5. 性能分析分析公式:加速比=串行执行时间/并行执行时间效率=加速比/节点数5.1串行程序的执行时间(秒)、矩阵规 模X1000200030004000实验结果 第1次11.00099.000372.000799.000第2次11.000r 98.000376.000 1799.000第3次11.00099.000373.000802.000平均值11.00098.667373.667800.000不同矩阵规模F串彳f程庁的执行时间oozooooeqoooqodoo9876-54321800,0001000200030004000执行时间执行时间趋势线图1.不同矩阵规模下串行程
11、序的执行时间5.2八个节点时,不同矩阵规模并行程序的执行时间(秒)矩阵规1000200030004000实验结果第i次0.8296.83323.37255.422第2次0.8326.83823.31555.786第3次:0.8376.82023.56055.732平均值0.8336.83023.416 155.647加速比13.20514.44615.95814.376效率1.6511.8061.9951.797不同矩陈规模下幷行程序的执行时间1000?00030004000o o nu u O4 3 z 1抱行时间执行时冋趋势线矩阵规样图2.八个节点时,不同矩阵规模下并行程序的执行时间8节点
12、下,不同矩阵规模的加速比15.95814.44614.3761000200030004000加速比加速比趋势线8 6 4 2 000 6 4 2 0 TT T T T比速加矩阵规模图3.八个节点时,不同矩阵规模下并行程序的加速比8节点下,不同矩阵规模的效率图4.八个节点时,不同矩阵规模下并行程序的效率分析随着矩阵规模的增加执行时间程序的执行时间急剧增加。加速比程序的加速比基本保持不变。效率程序的效率基本保持不变。5.3矩阵规模为1000*1000时,不同节点数下并行程序的执行时间(秒)节点个数、2345678实验结果、x第1次5.7922.9171.9451.4551.1700.9730.82
13、91第2次5.7932.8991.9441.4741.1670.9710.832第3次5.8382.9151.9351.4531.1690.9750.837平均值5.8082.9101.9411.4611.1690.9730.833加速比1.9843.7805.6677.2599.41011.30513.205效率0.9921.2601.4171.4521.5681.6151.651SBffitl000*1000时,不同节原下期5程J*的执行聘间节点个歆井仃执行时间执行时可務势线7 6 5 4 5 2 10 (診)醪 Byfi图5.矩阵规模1000*1000时,不同节点下的并行程序的执行时间1
14、000*1000时,不同节点下的加速比13.205加速比力:!许比為碍民节点个敢图6.矩阵规模1000*1000时,不同节点下的并行程序的加速比分析随着计算节点数的增加,执行时间程序的执行时间迅速减少,然后趋于平稳。加速比程序的加速比基本呈线性增长,公式趋y-1.8374x+0.022 。效率程序的效率逐步增长,然后趋于平缓。6. 用户手册6.1 连接:ssh pppusr211.69.168.203 密码:*6.2 登陆:sudo ssh blade13 或者 blade156.3 切换至工作目录:cd /home/pppusr/*6.4编译:mpicc -o matrix matrix m
15、ulti.c6.5运行:mpirun -np 8 ./matrix#in clude #in clude #in clude #defi ne N 1000#defi ne FROM_MASTER 1#defi ne FROM_SLAVE 2int ANN, BNN;un sig ned long long CNN;MPI_Status status;/消息接收状态变量,存储也是分布的int main (i nt argc, char *argv)int process_num; /进程数,该变量为各处理器中的同名变量,存储是分布的int process id;int slave_ num;i
16、nt dest; /目的进程标识号int source; /发送数据进程的标识号int rows;int row_aver;int rema in der;in t offset;/行偏移量int i, j, k;double start_time, en d_time;sran d( un sig ned in t)time(NULL);for (i=0; iN; i+)for (j=0; jN; j+)Aij = ran d() % 10;Bij = ran d() % 10;Cik = 0;MPI_Init(&argc, &argv);初始化 MPI/*该函数被各进程各调用一次,得到各自
17、的进程id值*/MPI_Comm_ra nk(MPI_COMM_WORLD, &process_id);/*该函数被各进程各调用一次,得到进程数*/MPI_Comm_size(MPI_COMM_WORLD, & process_ num);slave_ num = process_ num - 1;if(process_id = 0)row_aver = N / slave_ num;rema in der = N % slave_ num; offset = 0;/有的程序是将时间函数放在这个for循环的两边for(dest=1; dest=slave_ num; dest+)rows =
18、(dest = rema in der) ? row_aver+1 : row_aver;prin tf(se nding %d rows to process %dn, rows, dest);MPI_Se nd(&offset,1, MPINT, dest, FROM_MASTER, MPI_COMM_WORLD);MPI Send(&rows,1, MPI INT, dest, FROM MASTER, MPI COMM WORLD);MPI_Se nd(&Aoffset0, rows*N, MPINT, dest, FROM_MASTER, MPI_COMM_WORLD);MPI_Se nd(&B,N*N, MPINT, dest, FROM_MASTER, MPI_COMM_WORLD);offset += rows;start_time = MPI_Wtime();for(source=1; source 0)MPI_Recv(&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 独居庭院出售合同范例
- 警服洗涤采购合同范例
- 淋浴器安装合同范例
- 店面转让合同范例
- 商场垃圾回收合同范例
- 销售商务合同范例
- 小区绿化工程建设合同范例
- 运输瓷砖合同范例
- 销售石材销售合同范例
- 等额等息合同范例
- 2022-2023学年江苏省连云港市九年级(上)期末数学试卷(含详细答案解析)
- 二年级上册竖式计算200题附答案
- 2024年同等学力英语考试真题及详解
- CDASHStandards数据采集标准全版
- 初中地理学科学习新课标(2022版)考核试卷有答案
- 玻璃工业的节能减排与绿色制造
- 波士顿咨询-X大型制造业数字化转型战略规划项目(交付版)
- 纪法培训课件
- 南京理工大学物理化学课程考试8套卷(含答案)
- 泌尿外科工作总结及计划
- 2023-2024学年度第一学期墙新学校小学部六年级课外阅读答题活动
评论
0/150
提交评论