《高性能计算导论ppt课件 第三章课堂练习.ppt》由会员分享,可在线阅读,更多相关《高性能计算导论ppt课件 第三章课堂练习.ppt(49页珍藏版)》请在三一办公上搜索。
1、用MPI进行分布式内存编程,课堂练习1,1.根据课本程序3-2和3-3,写出并行梯形积分的完整可执行的代码,其中f(x)=x*x。2. 改变题1中的梯形积分法,使其在能够在comm_sz无法被n整除的情况下,正确估算积分值(假设n= comm_sz )。,课堂练习2,2. 改变题1中的梯形积分法,使其在能够在comm_sz无法被n整除的情况下,正确估算积分值(假设n= comm_sz )。,int quotient = n / comm_sz;int remainder = n % comm_sz;if (my_rank remainder) local_n = quotient + 1;lo
2、cal_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,修改梯形积分程序,使程序可以读入积分区间a b的端点值a、b和所用梯形的个数n。,课堂练习5,修改梯形积分法
3、程序,使用集合函数: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,编
4、写一个程序,来比较发送一条包含n个double型数据的消息,和发送n条消息且每条消息只包含一个double型数据,所用的时间提示:参考课本77页和81页的相关代码,课堂练习9,参考课本88(131)、90(134)和91(135)页,写出完整的并行奇偶排序算法。提示:0进程读取列表,并散射到其他进程; 0进程打印最终排好序的列表int main(void) int *local_A; int global_n; int local_n; MPI_Init(NULL,NULL); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, /* main */,int
5、main(void) int my_rank, p; int *local_A; int global_n; int local_n; MPI_Comm comm; MPI_Init(NULL,NULL); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, ,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(); return 0; /* main */,