您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 高性能计算导论课件-第三章课堂练习
用MPI进行分布式内存编程课堂练习11.根据课本程序3-2和3-3,写出并行梯形积分的完整可执行的代码,其中f(x)=x*x。2.改变题1中的梯形积分法,使其在能够在comm_sz无法被n整除的情况下,正确估算积分值(假设n=comm_sz)。课堂练习22.改变题1中的梯形积分法,使其在能够在comm_sz无法被n整除的情况下,正确估算积分值(假设n=comm_sz)。intquotient=n/comm_sz;intremainder=n%comm_sz;if(my_rankremainder){local_n=quotient+1;local_a=a+my_rank*local_n*h;local_b=local_a+local_n*h;}else{local_n=quotient;local_a=a+my_rank*local_n*h+remainder*h;local_b=local_a+local_n*h;}课堂练习3在输出例子的程序3-4中,每个进程只打印一行输出,修改程序,使程序能够按进程号的顺序打印,即,进程0的消息先输出,然后进程1的消息,以此类推。课堂练习4修改梯形积分程序,使程序可以读入积分区间[ab]的端点值a、b和所用梯形的个数n。课堂练习5修改梯形积分法程序,使用集合函数:MPI_Reduce和MPI_Bcast课堂练习6根据课本程序3-8、3-9和3-10,写出完整的并行向量加法程序(z=x+y)要求:1.由0进程读取向量的维度n并广播给其他进程;2.由0进程读取向量x和y,并以块划分的方式分发给其他进程;3.由0进程以块划分的方式将结果z打印出来课堂练习7根据课本程序3-12、3-9和3-10,写出完整的并行矩阵-向量乘法程序(y=Ax)要求:1.由0进程读取矩阵A的维度并广播给其他进程;2.由0进程读取矩阵A和向量,并以块划分的方式分发给其他进程;3.由0进程以块划分的方式将结果y打印出来课堂练习8编写一个程序,来比较发送一条包含n个double型数据的消息,和发送n条消息且每条消息只包含一个double型数据,所用的时间提示:参考课本77页和81页的相关代码课堂练习9参考课本88(131)、90(134)和91(135)页,写出完整的并行奇偶排序算法。提示:0进程读取列表,并散射到其他进程;0进程打印最终排好序的列表intmain(void){int*local_A;intglobal_n;intlocal_n;MPI_Init(NULL,NULL);comm=MPI_COMM_WORLD;MPI_Comm_size(comm,&p);MPI_Comm_rank(comm,&my_rank)intmy_rank,p;Read_list(local_A,local_n,my_rank,p,comm);Sort(local_A,local_n,my_rank,p,comm);Print_global_list(local_A,local_n,my_rank,p,comm);free(local_A);MPI_Finalize();return0;}/*main*/intmain(void){intmy_rank,p;int*local_A;intglobal_n;intlocal_n;MPI_Commcomm;MPI_Init(NULL,NULL);comm=MPI_COMM_WORLD;MPI_Comm_size(comm,&p);MPI_Comm_rank(comm,&my_rank);Read_list(local_A,local_n,my_rank,p,comm);Sort(local_A,local_n,my_rank,p,comm);Print_global_list(local_A,local_n,my_rank,p,comm);free(local_A);MPI_Finalize();return0;}/*main*/
本文标题:高性能计算导论课件-第三章课堂练习
链接地址:https://www.777doc.com/doc-4431689 .html